diff --git a/README.md b/README.md index 7a905ae8..302d713e 100644 --- a/README.md +++ b/README.md @@ -262,6 +262,33 @@ For example, if you wanted to pass a custom configuration to Redis: } ``` + +#### Redis Cluster +To use cluster you must prepare config for redis to looks like above: + +``` json + +{ + "databaseConfig" : { + "redis" : { + "nodes" : [ + { + "port": "3001", + "host": "redis.app.dev" + }, + { + "port": "3001", + "host": "redis.app.dev" + } + ], + "options" : [] + } + } +} + +``` +Options are way to pass any custom configuration that ioRedis can handle. For more look at link below. + *Note: No scheme (http/https etc) should be used for the host address* *A full list of Redis options can be found [here](https://github.com/luin/ioredis/blob/master/API.md#new-redisport-host-options).* diff --git a/src/database/redis.ts b/src/database/redis.ts index 6fd98c76..f806c29a 100644 --- a/src/database/redis.ts +++ b/src/database/redis.ts @@ -11,7 +11,11 @@ export class RedisDatabase implements DatabaseDriver { * Create a new cache instance. */ constructor(private options) { - this._redis = new Redis(options.databaseConfig.redis); + if(options.databaseConfig.redis.nodes && options.databaseConfig.redis.nodes.length != 0) { + this._redis = new Redis.Cluster(options.databaseConfig.redis.nodes, options.databaseConfig.redis.options); + } else { + this._redis = new Redis(options.databaseConfig.redis); + } } /** diff --git a/src/subscribers/redis-subscriber.ts b/src/subscribers/redis-subscriber.ts index 79a213a0..1e57bc57 100644 --- a/src/subscribers/redis-subscriber.ts +++ b/src/subscribers/redis-subscriber.ts @@ -25,7 +25,11 @@ export class RedisSubscriber implements Subscriber { */ constructor(private options) { this._keyPrefix = options.databaseConfig.redis.keyPrefix || ''; - this._redis = new Redis(options.databaseConfig.redis); + if(options.databaseConfig.redis.nodes && options.databaseConfig.redis.nodes.length != 0) { + this._redis = new Redis.Cluster(options.databaseConfig.redis.nodes, options.databaseConfig.redis.options); + } else { + this._redis = new Redis(options.databaseConfig.redis); + } } /**