@upstash/redis 1.3.0-alpha.1 → 1.3.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
@@ -235,6 +235,27 @@ const res = new CustomGetCommand("key").exec(client)
235
235
 
236
236
  ```
237
237
 
238
+ ### Additional information
239
+
240
+ #### `keepalive`
241
+
242
+ `@upstash/redis` is trying to reuse connections where possible to minimize latency. Connections can be reused if the client is
243
+ stored in memory and not initialized with every new function invocation. The easiest way to achieve this is by creating the client
244
+ outside of your handler:
245
+
246
+ ```ts
247
+ // Nextjs api route
248
+ import { Redis } from "@upstash/redis"
249
+
250
+ const redis = Redis.fromEnv()
251
+
252
+ export default async function (req, res) {
253
+ // use redis here
254
+ }
255
+ ```
256
+
257
+ Whenever your hot lambda receives a new request the client is already initialized and the previously established connection to upstash is reused.
258
+
238
259
  #### Javascript MAX_SAFE_INTEGER
239
260
 
240
261
  Javascript can not handle numbers larger than `2^53 -1` safely and would return wrong results when trying to deserialize them.
@@ -7,9 +7,7 @@ import {
7
7
  var HttpClient = class {
8
8
  constructor(config) {
9
9
  this.baseUrl = config.baseUrl.replace(/\/$/, "");
10
- this.headers = __spreadValues({
11
- "Content-Type": "application/json"
12
- }, config.headers);
10
+ this.headers = __spreadValues({ "Content-Type": "application/json" }, config.headers);
13
11
  this.options = config.options;
14
12
  }
15
13
  async request(req) {
@@ -1,19 +1,35 @@
1
1
  import {
2
2
  Redis
3
- } from "./chunk-KI7YOGWS.mjs";
3
+ } from "./chunk-CTSQDNTV.mjs";
4
4
  import {
5
5
  HttpClient
6
- } from "./chunk-HIDCSH5S.mjs";
6
+ } from "./chunk-5LZNFEHI.mjs";
7
7
 
8
8
  // pkg/nodejs.ts
9
+ import https from "https";
9
10
  import "isomorphic-fetch";
10
11
  var Redis2 = class extends Redis {
11
- constructor(config) {
12
- const client = new HttpClient({
13
- baseUrl: config.url,
14
- headers: {
15
- authorization: `Bearer ${config.token}`
12
+ constructor(configOrRequester) {
13
+ if ("request" in configOrRequester) {
14
+ super(configOrRequester);
15
+ return;
16
+ }
17
+ let agent = void 0;
18
+ if (typeof window === "undefined") {
19
+ const protocol = new URL(configOrRequester.url).protocol;
20
+ switch (protocol) {
21
+ case "https:":
22
+ agent = new https.Agent({ keepAlive: true });
23
+ break;
24
+ case "http:":
25
+ agent = new https.Agent({ keepAlive: true });
26
+ break;
16
27
  }
28
+ }
29
+ const client = new HttpClient({
30
+ baseUrl: configOrRequester.url,
31
+ headers: { authorization: `Bearer ${configOrRequester.token}` },
32
+ options: { agent }
17
33
  });
18
34
  super(client);
19
35
  }
@@ -3,13 +3,13 @@ import {
3
3
  BitCountCommand,
4
4
  BitOpCommand,
5
5
  BitPosCommand,
6
- Command,
7
6
  DBSizeCommand,
8
7
  DecrByCommand,
9
8
  DecrCommand,
10
9
  DelCommand,
11
10
  EchoCommand,
12
11
  EvalCommand,
12
+ EvalshaCommand,
13
13
  ExistsCommand,
14
14
  ExpireAtCommand,
15
15
  ExpireCommand,
@@ -80,6 +80,9 @@ import {
80
80
  SUnionCommand,
81
81
  SUnionStoreCommand,
82
82
  ScanCommand,
83
+ ScriptExistsCommand,
84
+ ScriptFlushCommand,
85
+ ScriptLoadCommand,
83
86
  SetBitCommand,
84
87
  SetCommand,
85
88
  SetExCommand,
@@ -109,50 +112,11 @@ import {
109
112
  ZScanCommand,
110
113
  ZScoreCommand,
111
114
  ZUnionStoreCommand
112
- } from "./chunk-5567SQFQ.mjs";
115
+ } from "./chunk-K2UC7PHG.mjs";
113
116
  import {
114
117
  UpstashError
115
118
  } from "./chunk-7YUZYRJS.mjs";
116
119
 
117
- // pkg/commands/evalsha.ts
118
- var EvalshaCommand = class extends Command {
119
- constructor(sha, keys, args) {
120
- super(["evalsha", sha, keys.length, ...keys, ...args != null ? args : []]);
121
- }
122
- };
123
-
124
- // pkg/commands/script_exists.ts
125
- var ScriptExistsCommand = class extends Command {
126
- constructor(...hash) {
127
- super(["script", "exists", ...hash], {
128
- deserialize: (result) => {
129
- const parsed = result;
130
- return parsed.length === 1 ? parsed[0] : parsed;
131
- }
132
- });
133
- }
134
- };
135
-
136
- // pkg/commands/script_flush.ts
137
- var ScriptFlushCommand = class extends Command {
138
- constructor(opts) {
139
- const cmd = ["script", "flush"];
140
- if (opts == null ? void 0 : opts.sync) {
141
- cmd.push("sync");
142
- } else if (opts == null ? void 0 : opts.async) {
143
- cmd.push("async");
144
- }
145
- super(cmd);
146
- }
147
- };
148
-
149
- // pkg/commands/script_load.ts
150
- var ScriptLoadCommand = class extends Command {
151
- constructor(script) {
152
- super(["script", "load", script]);
153
- }
154
- };
155
-
156
120
  // pkg/pipeline.ts
157
121
  var Pipeline = class {
158
122
  constructor(client) {
@@ -122,6 +122,13 @@ var EvalCommand = class extends Command {
122
122
  }
123
123
  };
124
124
 
125
+ // pkg/commands/evalsha.ts
126
+ var EvalshaCommand = class extends Command {
127
+ constructor(sha, keys, args) {
128
+ super(["evalsha", sha, keys.length, ...keys, ...args != null ? args : []]);
129
+ }
130
+ };
131
+
125
132
  // pkg/commands/exists.ts
126
133
  var ExistsCommand = class extends Command {
127
134
  constructor(...keys) {
@@ -282,16 +289,18 @@ function deserialize2(fields, result) {
282
289
  }
283
290
  var HMGetCommand = class extends Command {
284
291
  constructor(key, ...fields) {
285
- super(["hmget", key, ...fields], {
286
- deserialize: (result) => deserialize2(fields, result)
287
- });
292
+ super(["hmget", key, ...fields], { deserialize: (result) => deserialize2(fields, result) });
288
293
  }
289
294
  };
290
295
 
291
296
  // pkg/commands/hmset.ts
292
297
  var HMSetCommand = class extends Command {
293
298
  constructor(key, kv) {
294
- super(["hmset", key, ...Object.entries(kv).flatMap(([field, value]) => [field, value])]);
299
+ super([
300
+ "hmset",
301
+ key,
302
+ ...Object.entries(kv).flatMap(([field, value]) => [field, value])
303
+ ]);
295
304
  }
296
305
  };
297
306
 
@@ -312,7 +321,11 @@ var HScanCommand = class extends Command {
312
321
  // pkg/commands/hset.ts
313
322
  var HSetCommand = class extends Command {
314
323
  constructor(key, kv) {
315
- super(["hset", key, ...Object.entries(kv).flatMap(([field, value]) => [field, value])]);
324
+ super([
325
+ "hset",
326
+ key,
327
+ ...Object.entries(kv).flatMap(([field, value]) => [field, value])
328
+ ]);
316
329
  }
317
330
  };
318
331
 
@@ -445,7 +458,10 @@ var MGetCommand = class extends Command {
445
458
  // pkg/commands/mset.ts
446
459
  var MSetCommand = class extends Command {
447
460
  constructor(kv) {
448
- super(["mset", ...Object.entries(kv).flatMap(([key, value]) => [key, value])]);
461
+ super([
462
+ "mset",
463
+ ...Object.entries(kv).flatMap(([key, value]) => [key, value])
464
+ ]);
449
465
  }
450
466
  };
451
467
 
@@ -579,6 +595,38 @@ var SCardCommand = class extends Command {
579
595
  }
580
596
  };
581
597
 
598
+ // pkg/commands/script_exists.ts
599
+ var ScriptExistsCommand = class extends Command {
600
+ constructor(...hash) {
601
+ super(["script", "exists", ...hash], {
602
+ deserialize: (result) => {
603
+ const parsed = result;
604
+ return parsed.length === 1 ? parsed[0] : parsed;
605
+ }
606
+ });
607
+ }
608
+ };
609
+
610
+ // pkg/commands/script_flush.ts
611
+ var ScriptFlushCommand = class extends Command {
612
+ constructor(opts) {
613
+ const cmd = ["script", "flush"];
614
+ if (opts == null ? void 0 : opts.sync) {
615
+ cmd.push("sync");
616
+ } else if (opts == null ? void 0 : opts.async) {
617
+ cmd.push("async");
618
+ }
619
+ super(cmd);
620
+ }
621
+ };
622
+
623
+ // pkg/commands/script_load.ts
624
+ var ScriptLoadCommand = class extends Command {
625
+ constructor(script) {
626
+ super(["script", "load", script]);
627
+ }
628
+ };
629
+
582
630
  // pkg/commands/sdiff.ts
583
631
  var SDiffCommand = class extends Command {
584
632
  constructor(key, ...keys) {
@@ -986,6 +1034,7 @@ export {
986
1034
  DelCommand,
987
1035
  EchoCommand,
988
1036
  EvalCommand,
1037
+ EvalshaCommand,
989
1038
  ExistsCommand,
990
1039
  ExpireCommand,
991
1040
  ExpireAtCommand,
@@ -1043,6 +1092,9 @@ export {
1043
1092
  SAddCommand,
1044
1093
  ScanCommand,
1045
1094
  SCardCommand,
1095
+ ScriptExistsCommand,
1096
+ ScriptFlushCommand,
1097
+ ScriptLoadCommand,
1046
1098
  SDiffCommand,
1047
1099
  SDiffStoreCommand,
1048
1100
  SetCommand,
package/cloudflare.d.ts CHANGED
@@ -1,6 +1,8 @@
1
- import { R as Redis$1 } from './redis-364a4445';
1
+ import { R as Redis$1 } from './redis-338577a3';
2
2
  import './http';
3
- import './zunionstore-342168a6';
3
+ import 'https';
4
+ import 'http';
5
+ import './zunionstore-633a2e7a';
4
6
 
5
7
  /**
6
8
  * Connection credentials for upstash redis.
@@ -8,12 +10,12 @@ import './zunionstore-342168a6';
8
10
  */
9
11
  declare type RedisConfigCloudflare = {
10
12
  /**
11
- * UPSTASH_REDIS_REST_URL
12
- */
13
+ * UPSTASH_REDIS_REST_URL
14
+ */
13
15
  url: string;
14
16
  /**
15
- * UPSTASH_REDIS_REST_TOKEN
16
- */
17
+ * UPSTASH_REDIS_REST_TOKEN
18
+ */
17
19
  token: string;
18
20
  };
19
21
  /**
@@ -21,16 +23,16 @@ declare type RedisConfigCloudflare = {
21
23
  */
22
24
  declare class Redis extends Redis$1 {
23
25
  /**
24
- * Create a new redis client
25
- *
26
- * @example
27
- * ```typescript
28
- * const redis = new Redis({
29
- * url: "<UPSTASH_REDIS_REST_URL>",
30
- * token: "<UPSTASH_REDIS_REST_TOKEN>",
31
- * });
32
- * ```
33
- */
26
+ * Create a new redis client
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * const redis = new Redis({
31
+ * url: "<UPSTASH_REDIS_REST_URL>",
32
+ * token: "<UPSTASH_REDIS_REST_TOKEN>",
33
+ * });
34
+ * ```
35
+ */
34
36
  constructor(config: RedisConfigCloudflare);
35
37
  static fromEnv(env?: {
36
38
  UPSTASH_REDIS_REST_URL: string;
package/cloudflare.js CHANGED
@@ -53,9 +53,7 @@ var UpstashError = class extends Error {
53
53
  var HttpClient = class {
54
54
  constructor(config) {
55
55
  this.baseUrl = config.baseUrl.replace(/\/$/, "");
56
- this.headers = __spreadValues({
57
- "Content-Type": "application/json"
58
- }, config.headers);
56
+ this.headers = __spreadValues({ "Content-Type": "application/json" }, config.headers);
59
57
  this.options = config.options;
60
58
  }
61
59
  async request(req) {
@@ -197,6 +195,13 @@ var EvalCommand = class extends Command {
197
195
  }
198
196
  };
199
197
 
198
+ // pkg/commands/evalsha.ts
199
+ var EvalshaCommand = class extends Command {
200
+ constructor(sha, keys, args) {
201
+ super(["evalsha", sha, keys.length, ...keys, ...args != null ? args : []]);
202
+ }
203
+ };
204
+
200
205
  // pkg/commands/exists.ts
201
206
  var ExistsCommand = class extends Command {
202
207
  constructor(...keys) {
@@ -357,16 +362,18 @@ function deserialize2(fields, result) {
357
362
  }
358
363
  var HMGetCommand = class extends Command {
359
364
  constructor(key, ...fields) {
360
- super(["hmget", key, ...fields], {
361
- deserialize: (result) => deserialize2(fields, result)
362
- });
365
+ super(["hmget", key, ...fields], { deserialize: (result) => deserialize2(fields, result) });
363
366
  }
364
367
  };
365
368
 
366
369
  // pkg/commands/hmset.ts
367
370
  var HMSetCommand = class extends Command {
368
371
  constructor(key, kv) {
369
- super(["hmset", key, ...Object.entries(kv).flatMap(([field, value]) => [field, value])]);
372
+ super([
373
+ "hmset",
374
+ key,
375
+ ...Object.entries(kv).flatMap(([field, value]) => [field, value])
376
+ ]);
370
377
  }
371
378
  };
372
379
 
@@ -387,7 +394,11 @@ var HScanCommand = class extends Command {
387
394
  // pkg/commands/hset.ts
388
395
  var HSetCommand = class extends Command {
389
396
  constructor(key, kv) {
390
- super(["hset", key, ...Object.entries(kv).flatMap(([field, value]) => [field, value])]);
397
+ super([
398
+ "hset",
399
+ key,
400
+ ...Object.entries(kv).flatMap(([field, value]) => [field, value])
401
+ ]);
391
402
  }
392
403
  };
393
404
 
@@ -520,7 +531,10 @@ var MGetCommand = class extends Command {
520
531
  // pkg/commands/mset.ts
521
532
  var MSetCommand = class extends Command {
522
533
  constructor(kv) {
523
- super(["mset", ...Object.entries(kv).flatMap(([key, value]) => [key, value])]);
534
+ super([
535
+ "mset",
536
+ ...Object.entries(kv).flatMap(([key, value]) => [key, value])
537
+ ]);
524
538
  }
525
539
  };
526
540
 
@@ -654,6 +668,38 @@ var SCardCommand = class extends Command {
654
668
  }
655
669
  };
656
670
 
671
+ // pkg/commands/script_exists.ts
672
+ var ScriptExistsCommand = class extends Command {
673
+ constructor(...hash) {
674
+ super(["script", "exists", ...hash], {
675
+ deserialize: (result) => {
676
+ const parsed = result;
677
+ return parsed.length === 1 ? parsed[0] : parsed;
678
+ }
679
+ });
680
+ }
681
+ };
682
+
683
+ // pkg/commands/script_flush.ts
684
+ var ScriptFlushCommand = class extends Command {
685
+ constructor(opts) {
686
+ const cmd = ["script", "flush"];
687
+ if (opts == null ? void 0 : opts.sync) {
688
+ cmd.push("sync");
689
+ } else if (opts == null ? void 0 : opts.async) {
690
+ cmd.push("async");
691
+ }
692
+ super(cmd);
693
+ }
694
+ };
695
+
696
+ // pkg/commands/script_load.ts
697
+ var ScriptLoadCommand = class extends Command {
698
+ constructor(script) {
699
+ super(["script", "load", script]);
700
+ }
701
+ };
702
+
657
703
  // pkg/commands/sdiff.ts
658
704
  var SDiffCommand = class extends Command {
659
705
  constructor(key, ...keys) {
@@ -1049,45 +1095,6 @@ var ZUnionStoreCommand = class extends Command {
1049
1095
  }
1050
1096
  };
1051
1097
 
1052
- // pkg/commands/evalsha.ts
1053
- var EvalshaCommand = class extends Command {
1054
- constructor(sha, keys, args) {
1055
- super(["evalsha", sha, keys.length, ...keys, ...args != null ? args : []]);
1056
- }
1057
- };
1058
-
1059
- // pkg/commands/script_exists.ts
1060
- var ScriptExistsCommand = class extends Command {
1061
- constructor(...hash) {
1062
- super(["script", "exists", ...hash], {
1063
- deserialize: (result) => {
1064
- const parsed = result;
1065
- return parsed.length === 1 ? parsed[0] : parsed;
1066
- }
1067
- });
1068
- }
1069
- };
1070
-
1071
- // pkg/commands/script_flush.ts
1072
- var ScriptFlushCommand = class extends Command {
1073
- constructor(opts) {
1074
- const cmd = ["script", "flush"];
1075
- if (opts == null ? void 0 : opts.sync) {
1076
- cmd.push("sync");
1077
- } else if (opts == null ? void 0 : opts.async) {
1078
- cmd.push("async");
1079
- }
1080
- super(cmd);
1081
- }
1082
- };
1083
-
1084
- // pkg/commands/script_load.ts
1085
- var ScriptLoadCommand = class extends Command {
1086
- constructor(script) {
1087
- super(["script", "load", script]);
1088
- }
1089
- };
1090
-
1091
1098
  // pkg/pipeline.ts
1092
1099
  var Pipeline = class {
1093
1100
  constructor(client) {
@@ -1364,9 +1371,7 @@ var Redis2 = class extends Redis {
1364
1371
  constructor(config) {
1365
1372
  const client = new HttpClient({
1366
1373
  baseUrl: config.url,
1367
- headers: {
1368
- authorization: `Bearer ${config.token}`
1369
- }
1374
+ headers: { authorization: `Bearer ${config.token}` }
1370
1375
  });
1371
1376
  super(client);
1372
1377
  }
package/cloudflare.mjs CHANGED
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  Redis
3
- } from "./chunk-KI7YOGWS.mjs";
4
- import "./chunk-5567SQFQ.mjs";
3
+ } from "./chunk-CTSQDNTV.mjs";
4
+ import "./chunk-K2UC7PHG.mjs";
5
5
  import {
6
6
  HttpClient
7
- } from "./chunk-HIDCSH5S.mjs";
7
+ } from "./chunk-5LZNFEHI.mjs";
8
8
  import "./chunk-7YUZYRJS.mjs";
9
9
 
10
10
  // pkg/cloudflare.ts
@@ -12,9 +12,7 @@ var Redis2 = class extends Redis {
12
12
  constructor(config) {
13
13
  const client = new HttpClient({
14
14
  baseUrl: config.url,
15
- headers: {
16
- authorization: `Bearer ${config.token}`
17
- }
15
+ headers: { authorization: `Bearer ${config.token}` }
18
16
  });
19
17
  super(client);
20
18
  }
package/commands.d.ts CHANGED
@@ -1,6 +1,8 @@
1
- import { g as Command, N as NonEmptyArray, S as ScanCommandOptions } from './zunionstore-342168a6';
2
- export { g as Command, h as ScanCommand, S as ScanCommandOptions, b as ScoreMember, i as SetCommand, a as SetCommandOptions, T as Type, j as TypeCommand, U as UnlinkCommand, k as ZAddCommand, Z as ZAddCommandOptions, c as ZAddCommandOptionsWithIncr, l as ZInterStoreCommand, d as ZInterStoreCommandOptions, m as ZRangeCommand, e as ZRangeCommandOptions, n as ZUnionStoreCommand, f as ZUnionStoreCommandOptions } from './zunionstore-342168a6';
1
+ import { h as Command, N as NonEmptyArray, S as ScanCommandOptions } from './zunionstore-633a2e7a';
2
+ export { h as Command, i as ScanCommand, S as ScanCommandOptions, c as ScoreMember, j as ScriptFlushCommand, a as ScriptFlushCommandOptions, k as SetCommand, b as SetCommandOptions, T as Type, l as TypeCommand, U as UnlinkCommand, m as ZAddCommand, Z as ZAddCommandOptions, d as ZAddCommandOptionsWithIncr, n as ZInterStoreCommand, e as ZInterStoreCommandOptions, o as ZRangeCommand, f as ZRangeCommandOptions, p as ZUnionStoreCommand, g as ZUnionStoreCommandOptions } from './zunionstore-633a2e7a';
3
3
  import './http';
4
+ import 'https';
5
+ import 'http';
4
6
 
5
7
  /**
6
8
  * @see https://redis.io/commands/append
@@ -74,6 +76,13 @@ declare class EvalCommand<TArgs extends unknown[], TData> extends Command<unknow
74
76
  constructor(script: string, keys: string[], args: TArgs);
75
77
  }
76
78
 
79
+ /**
80
+ * @see https://redis.io/commands/evalsha
81
+ */
82
+ declare class EvalshaCommand<TArgs extends unknown[], TData> extends Command<unknown, TData> {
83
+ constructor(sha: string, keys: string[], args?: TArgs);
84
+ }
85
+
77
86
  /**
78
87
  * @see https://redis.io/commands/exists
79
88
  */
@@ -474,6 +483,24 @@ declare class SCardCommand extends Command<number, number> {
474
483
  constructor(key: string);
475
484
  }
476
485
 
486
+ declare type TupleOfLength<T, L extends number, R extends T[] = []> = R["length"] extends L ? R : TupleOfLength<T, L, [
487
+ ...R,
488
+ T
489
+ ]>;
490
+ /**
491
+ * @see https://redis.io/commands/script-exists
492
+ */
493
+ declare class ScriptExistsCommand<T extends [string, ...string[]]> extends Command<T extends [string] ? string : TupleOfLength<string, T["length"]>, TupleOfLength<string, T["length"]>> {
494
+ constructor(...hash: T);
495
+ }
496
+
497
+ /**
498
+ * @see https://redis.io/commands/script-load
499
+ */
500
+ declare class ScriptLoadCommand extends Command<string, string> {
501
+ constructor(script: string);
502
+ }
503
+
477
504
  /**
478
505
  * @see https://redis.io/commands/sdiff
479
506
  */
@@ -731,4 +758,4 @@ declare class ZScoreCommand<TData> extends Command<number | null, string | null>
731
758
  constructor(key: string, member: TData);
732
759
  }
733
760
 
734
- export { AppendCommand, BitCountCommand, BitOpCommand, BitPosCommand, DBSizeCommand, DecrByCommand, DecrCommand, DelCommand, EchoCommand, EvalCommand, ExistsCommand, ExpireAtCommand, ExpireCommand, FlushAllCommand, FlushDBCommand, GetBitCommand, GetCommand, GetRangeCommand, GetSetCommand, HDelCommand, HExistsCommand, HGetAllCommand, HGetCommand, HIncrByCommand, HIncrByFloatCommand, HKeysCommand, HLenCommand, HMGetCommand, HMSetCommand, HScanCommand, HSetCommand, HSetNXCommand, HStrLenCommand, HValsCommand, IncrByCommand, IncrByFloatCommand, IncrCommand, KeysCommand, LIndexCommand, LInsertCommand, LLenCommand, LPopCommand, LPushCommand, LPushXCommand, LRangeCommand, LRemCommand, LSetCommand, LTrimCommand, MGetCommand, MSetCommand, MSetNXCommand, PExpireAtCommand, PExpireCommand, PSetEXCommand, PTtlCommand, PersistCommand, PingCommand, PublishCommand, RPopCommand, RPushCommand, RPushXCommand, RandomKeyCommand, RenameCommand, RenameNXCommand, SAddCommand, SCardCommand, SDiffCommand, SDiffStoreCommand, SInterCommand, SInterStoreCommand, SIsMemberCommand, SMembersCommand, SMoveCommand, SPopCommand, SRandMemberCommand, SRemCommand, SScanCommand, SUnionCommand, SUnionStoreCommand, SetBitCommand, SetExCommand, SetNxCommand, SetRangeCommand, StrLenCommand, TimeCommand, TouchCommand, TtlCommand, ZCardCommand, ZCountCommand, ZIncrByComand, ZLexCountCommand, ZPopMaxCommand, ZPopMinCommand, ZRankCommand, ZRemCommand, ZRemRangeByLexCommand, ZRemRangeByRankCommand, ZRemRangeByScoreCommand, ZRevRankCommand, ZScanCommand, ZScoreCommand };
761
+ export { AppendCommand, BitCountCommand, BitOpCommand, BitPosCommand, DBSizeCommand, DecrByCommand, DecrCommand, DelCommand, EchoCommand, EvalCommand, EvalshaCommand, ExistsCommand, ExpireAtCommand, ExpireCommand, FlushAllCommand, FlushDBCommand, GetBitCommand, GetCommand, GetRangeCommand, GetSetCommand, HDelCommand, HExistsCommand, HGetAllCommand, HGetCommand, HIncrByCommand, HIncrByFloatCommand, HKeysCommand, HLenCommand, HMGetCommand, HMSetCommand, HScanCommand, HSetCommand, HSetNXCommand, HStrLenCommand, HValsCommand, IncrByCommand, IncrByFloatCommand, IncrCommand, KeysCommand, LIndexCommand, LInsertCommand, LLenCommand, LPopCommand, LPushCommand, LPushXCommand, LRangeCommand, LRemCommand, LSetCommand, LTrimCommand, MGetCommand, MSetCommand, MSetNXCommand, PExpireAtCommand, PExpireCommand, PSetEXCommand, PTtlCommand, PersistCommand, PingCommand, PublishCommand, RPopCommand, RPushCommand, RPushXCommand, RandomKeyCommand, RenameCommand, RenameNXCommand, SAddCommand, SCardCommand, SDiffCommand, SDiffStoreCommand, SInterCommand, SInterStoreCommand, SIsMemberCommand, SMembersCommand, SMoveCommand, SPopCommand, SRandMemberCommand, SRemCommand, SScanCommand, SUnionCommand, SUnionStoreCommand, ScriptExistsCommand, ScriptLoadCommand, SetBitCommand, SetExCommand, SetNxCommand, SetRangeCommand, StrLenCommand, TimeCommand, TouchCommand, TtlCommand, ZCardCommand, ZCountCommand, ZIncrByComand, ZLexCountCommand, ZPopMaxCommand, ZPopMinCommand, ZRankCommand, ZRemCommand, ZRemRangeByLexCommand, ZRemRangeByRankCommand, ZRemRangeByScoreCommand, ZRevRankCommand, ZScanCommand, ZScoreCommand };