@keyv/redis 2.6.0 → 2.7.0

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.
package/README.md CHANGED
@@ -67,6 +67,33 @@ const redis = new Redis.Cluster('redis://user:pass@localhost:6379');
67
67
  const keyvRedis = new KeyvRedis(redis);
68
68
  const keyv = new Keyv({ store: keyvRedis });
69
69
  ```
70
+ ## Options
71
+
72
+ ### useRedisSets
73
+
74
+ The `useRedisSets` option lets you decide whether to use Redis sets for key management. By default, this option is set to `true`.
75
+
76
+ When `useRedisSets` is enabled (`true`):
77
+
78
+ - A namespace for the Redis sets is created, and all created keys are added to this. This allows for group management of keys.
79
+ - When a key is deleted, it's removed not only from the main storage but also from the Redis set.
80
+ - When clearing all keys (using the `clear` function), all keys in the Redis set are looked up for deletion. The set itself is also deleted.
81
+
82
+ **Note**: In high-performance scenarios, enabling `useRedisSets` might lead to memory leaks. If you're running a high-performance application or service, it is recommended to set `useRedisSets` to `false`.
83
+
84
+ If you decide to set `useRedisSets` as `false`, keys will be handled individually and Redis sets won't be utilized.
85
+
86
+ However, please note that setting `useRedisSets` to `false` could lead to performance issues in production when using the `clear` function, as it will need to iterate over all keys to delete them.
87
+
88
+ #### Example
89
+
90
+ Here's how you can use the `useRedisSets` option:
91
+
92
+ ```js
93
+ const Keyv = require('keyv');
94
+
95
+ const keyv = new Keyv('redis://user:pass@localhost:6379', { useRedisSets: false });
96
+
70
97
 
71
98
  ## License
72
99
 
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  /// <reference types="node" />
2
2
  import EventEmitter from 'events';
3
- import { type ClearOutput, type DeleteManyOutput, type DeleteOutput, type DisconnectOutput, type GetManyOutput, type GetOutput, type HasOutput, type IteratorOutput, type KeyvRedisOptions, type KeyvUriOptions, type SetOutput } from './types';
3
+ import { type ClearOutput, type DeleteOutput, type DisconnectOutput, type GetManyOutput, type GetOutput, type HasOutput, type IteratorOutput, type KeyvRedisOptions, type KeyvUriOptions, type SetOutput } from './types';
4
4
  declare class KeyvRedis<Value = any> extends EventEmitter {
5
5
  ttlSupport: boolean;
6
6
  namespace?: string;
@@ -8,11 +8,12 @@ declare class KeyvRedis<Value = any> extends EventEmitter {
8
8
  redis: any;
9
9
  constructor(uri: KeyvRedisOptions | KeyvUriOptions, options?: KeyvRedisOptions);
10
10
  _getNamespace(): string;
11
+ _getKeyName: (key: string) => string;
11
12
  get(key: string): GetOutput<Value>;
12
13
  getMany(keys: string[]): GetManyOutput<Value>;
13
14
  set(key: string, value: Value, ttl?: number): SetOutput;
14
15
  delete(key: string): DeleteOutput;
15
- deleteMany(key: string): DeleteManyOutput;
16
+ deleteMany(keys: string[]): DeleteOutput;
16
17
  clear(): ClearOutput;
17
18
  iterator(namespace?: string): IteratorOutput;
18
19
  has(key: string): HasOutput;
package/dist/index.js CHANGED
@@ -8,15 +8,25 @@ class KeyvRedis extends events_1.default {
8
8
  constructor(uri, options) {
9
9
  super();
10
10
  this.ttlSupport = true;
11
+ this._getKeyName = (key) => {
12
+ if (!this.opts.useRedisSets) {
13
+ return `sets:${key}`;
14
+ }
15
+ return key;
16
+ };
11
17
  this.opts = {};
18
+ this.opts.useRedisSets = true;
12
19
  this.opts.dialect = 'redis';
13
- if (uri instanceof ioredis_1.default) {
20
+ if (typeof uri !== 'string' && uri.options && ('family' in uri.options || uri.isCluster)) {
14
21
  this.redis = uri;
15
22
  }
16
23
  else {
17
24
  options = { ...(typeof uri === 'string' ? { uri } : uri), ...options };
18
25
  // @ts-expect-error - uri is a string or RedisOptions
19
26
  this.redis = new ioredis_1.default(options.uri, options);
27
+ if (options.useRedisSets === false) {
28
+ this.opts.useRedisSets = false;
29
+ }
20
30
  }
21
31
  this.redis.on('error', (error) => this.emit('error', error));
22
32
  }
@@ -24,6 +34,7 @@ class KeyvRedis extends events_1.default {
24
34
  return `namespace:${this.namespace}`;
25
35
  }
26
36
  async get(key) {
37
+ key = this._getKeyName(key);
27
38
  const value = await this.redis.get(key);
28
39
  if (value === null) {
29
40
  return undefined;
@@ -31,32 +42,48 @@ class KeyvRedis extends events_1.default {
31
42
  return value;
32
43
  }
33
44
  async getMany(keys) {
34
- const rows = await this.redis.mget(keys);
35
- return rows;
45
+ keys = keys.map(this._getKeyName);
46
+ return this.redis.mget(keys);
36
47
  }
37
48
  async set(key, value, ttl) {
38
49
  if (value === undefined) {
39
50
  return undefined;
40
51
  }
52
+ key = this._getKeyName(key);
41
53
  if (typeof ttl === 'number') {
42
54
  await this.redis.set(key, value, 'PX', ttl);
43
55
  }
44
56
  else {
45
57
  await this.redis.set(key, value);
46
58
  }
47
- await this.redis.sadd(this._getNamespace(), key);
59
+ if (this.opts.useRedisSets) {
60
+ await this.redis.sadd(this._getNamespace(), key);
61
+ }
48
62
  }
49
63
  async delete(key) {
64
+ key = this._getKeyName(key);
50
65
  const items = await this.redis.del(key);
51
- await this.redis.srem(this._getNamespace(), key);
66
+ if (this.opts.useRedisSets) {
67
+ await this.redis.srem(this._getNamespace(), key);
68
+ }
52
69
  return items > 0;
53
70
  }
54
- async deleteMany(key) {
55
- return this.delete(key);
71
+ async deleteMany(keys) {
72
+ const deletePromises = keys.map(async (key) => this.delete(key));
73
+ const results = await Promise.allSettled(deletePromises);
74
+ // @ts-expect-error - results is an array of objects with status and value
75
+ return results.every(result => result.value);
56
76
  }
57
77
  async clear() {
58
- const keys = await this.redis.smembers(this._getNamespace());
59
- await this.redis.del([...keys, this._getNamespace()]);
78
+ if (this.opts.useRedisSets) {
79
+ const keys = await this.redis.smembers(this._getNamespace());
80
+ await this.redis.del([...keys, this._getNamespace()]);
81
+ }
82
+ else {
83
+ const pattern = 'sets:*';
84
+ const keys = await this.redis.keys(pattern);
85
+ await this.redis.del(keys);
86
+ }
60
87
  }
61
88
  async *iterator(namespace) {
62
89
  const scan = this.redis.scan.bind(this.redis);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -6,6 +6,7 @@ export type KeyvRedisOptions = {
6
6
  } & {
7
7
  uri?: string;
8
8
  dialect?: string;
9
+ useRedisSets?: boolean;
9
10
  };
10
11
  export type KeyvUriOptions = string | KeyvRedisOptions | Redis | Cluster;
11
12
  export type IteratorOutput = AsyncGenerator<any, void, any>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keyv/redis",
3
- "version": "2.6.0",
3
+ "version": "2.7.0",
4
4
  "description": "Redis storage adapter for Keyv",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -21,6 +21,7 @@
21
21
  "@typescript-eslint/no-unsafe-assignment": 0,
22
22
  "@typescript-eslint/no-unsafe-return": 0,
23
23
  "unicorn/prefer-ternary": 0,
24
+ "unicorn/no-array-callback-reference": 0,
24
25
  "ava/no-ignored-test-files": [
25
26
  "error",
26
27
  {
@@ -68,7 +69,6 @@
68
69
  },
69
70
  "devDependencies": {
70
71
  "@keyv/test-suite": "*",
71
- "delay": "^6.0.0",
72
72
  "keyv": "*",
73
73
  "requirable": "^1.0.5",
74
74
  "timekeeper": "^2.2.0",