descript-redis-cache 3.0.0 → 3.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +12 -8
  2. package/index.js +13 -2
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -14,15 +14,19 @@ const context = new de.Context(req, res, {
14
14
 
15
15
  ## Config
16
16
 
17
- ```js
18
- {
19
- defaultKeyTTL: 60 * 60 * 24, // key ttl in seconds
20
- generation: 1, // increment generation to invalidate all key across breaking changes releases
21
- readTimeout: 100, // read timeout in milliseconds,
22
- redisOptions: {}, // @see https://github.com/luin/ioredis/blob/master/API.md#new-redisport-host-options
23
- }
24
- ```
17
+ | Param | Type | Default | Description |
18
+ |---------------|-----------------------------------|----------------|--------------------------------------------------------------|
19
+ | clusterNodes | `Array` | `[]` | If you're using a cluster: an array of nodes in the cluster `[{ port: number, host: string }]` |
20
+ | defaultKeyTTL | `number` | `60 * 60 * 24` | key ttl in seconds |
21
+ | generation | `number` | 1 | increment generation to invalidate all key across breaking changes releases |
22
+ | readTimeout | `number` | 100 | read timeout in milliseconds |
23
+ | redisOptions | `IRedisOptions` or `IClusterOptions` | `{}` | Redis constructor [options](https://github.com/luin/ioredis/blob/master/API.md#new-redisport-host-options) or Redis.Cluster constructor [options](https://github.com/luin/ioredis/blob/master/API.md#new-clusterstartupnodes-options) |
24
+ | useCluster | `boolean` | false | to use [Redis.Cluster](#Cluster) |
25
+
25
26
 
26
27
  ## Logger
27
28
 
28
29
  Optionally you can pass logger object in the constructor. It should implement standard `Console` methods.
30
+
31
+ ## Cluster
32
+ It also has a support for Redis Cluster. In this case you should pass `useCluster = true`, an array of `clusterNodes` and also [clusterOptions](https://github.com/luin/ioredis/blob/a46415187d32bfdc974072403edb8aca2df282d6/lib/cluster/ClusterOptions.ts#L30) in `redisOptions`.
package/index.js CHANGED
@@ -9,19 +9,30 @@ class DescriptRedisCache {
9
9
 
10
10
  constructor(options, logger) {
11
11
  this._options = Object.assign({
12
+ clusterNodes: [],
12
13
  defaultKeyTTL: 60 * 60 * 24, // key ttl in seconds
13
14
  generation: 1, // increment generation to invalidate all key across breaking changes releases
14
15
  readTimeout: 100, // read timeout in milliseconds,
15
16
  redisOptions: {},
17
+ useCluster: false,
16
18
  }, options);
17
19
 
18
20
  this._logger = logger;
19
21
 
20
- this._client = new Redis(options.redisOptions);
22
+ if (this._options.useCluster) {
23
+ this._client = new Redis.Cluster(this._options.clusterNodes, this._options.redisOptions);
24
+ } else {
25
+ this._client = new Redis(this._options.redisOptions);
26
+ }
27
+
28
+ const optionsToLog = Object.assign({}, this._options);
29
+ // Don't write connection options to log because it can contain password
30
+ // (not only as a property, but as a part of a connection string, so it's difficult to delete only a password)
31
+ delete optionsToLog.redisOptions;
21
32
 
22
33
  this._log({
23
34
  type: DescriptRedisCache.EVENT.REDIS_CACHE_INITIALIZED,
24
- options: options,
35
+ options: optionsToLog,
25
36
  });
26
37
  }
27
38
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "descript-redis-cache",
3
- "version": "3.0.0",
3
+ "version": "3.1.1",
4
4
  "description": "plugin for descript to use redis as cache",
5
5
  "main": "index.js",
6
6
  "scripts": {