# API `@deepkit/broker-redis`

```sh
npm install @deepkit/broker-redis
```

Deepkit Broker の Redis ベースの実装を提供します。内部では ioredis を使用しています。

この adapter は Deepkit Broker の queue adapter を実装していません。

```typescript
import { BrokerKeyValue, BrokerBus } from '@deepkit/broker';
import { BrokerRedisAdapter } from '@deepkit/broker-redis';
import { ConsoleLogger } from '@deepkit/logger';

const adapter = new RedisBrokerAdapter({
    preifx: 'myapp:',
    host: 'localhost',
    port: 6379,
    // 任意。Redis サーバーが認証を必要とする場合
    // password: 'your-password', // Optional, if your Redis server requires authentication
    // 任意。別の Redis データベースを指定する場合
    // db: 0, // Optional, to specify a different Redis database
}, new ConsoleLogger());

const keyValye = new BrokerKeyValue(adapter);
const bus = new BrokerBus(adapter);
// ...
```

## API reference of @deepkit/broker-redis

### RedisBrokerAdapterOptions (type)

```typescript
type RedisBrokerAdapterOptions = RedisOptions & {
    prefix?: string; // optional prefix for all keys
}
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/broker-redis/src/broker-redis.ts#L8

### RedisBrokerAdapter (class)

```typescript
export class RedisBrokerAdapter implements BrokerAdapterBus, BrokerAdapterKeyValue, BrokerAdapterCache, BrokerAdapterLock {
    constructor(private config: RedisBrokerAdapterOptions, public logger: Logger);
    async isLocked(id: string): Promise<boolean>;
    async lock(id: string, options: BrokerTimeOptionsResolved): Promise<Release | undefined>;
    async tryLock(id: string, options: BrokerTimeOptionsResolved): Promise<Release | undefined>;
    async disconnect(): Promise<void>;
    async publish(name: string, message: any, type: Type): Promise<void>;
    async subscribe(name: string, callback: (message: any) => void, type: Type): Promise<Release>;
    async get(key: string, type: Type): Promise<any>;
    async increment(key: string, value: number): Promise<number>;
    async remove(key: string): Promise<any>;
    async set(key: string, value: any, options: BrokerKeyValueOptionsResolved, type: Type): Promise<any>;
    async getCache(key: string, type: Type): Promise<{
        value: any;
        ttl: number;
    } | undefined>;
    async setCache(key: string, value: any, options: BrokerCacheItemOptionsResolved, type: Type): Promise<void>;
    async getCacheMeta(key: string): Promise<{
        ttl: number;
    } | undefined>;
    async invalidateCache(key: string): Promise<void>;
    onInvalidateCache(callback: (key: string) => void): void;
}
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/broker-redis/src/broker-redis.ts#L12
