@devvit/public-api 0.11.0-next-2024-07-30-8f65a4fa6.0 → 0.11.0-next-2024-07-30-0415fdb14.0

Sign up to get free protection for your applications and to get access to all the features.
package/types/redis.d.ts CHANGED
@@ -4,24 +4,96 @@ export type TxClientLike = {
4
4
  * Executes all previously queued commands in a transaction and
5
5
  * restores the connection state to normal. https://redis.io/commands/exec/
6
6
  * @returns array, each element being the reply to each of the commands in the atomic transaction.
7
+ * @example
8
+ * ```ts
9
+ * async function execExample(context: Devvit.Context) {
10
+ * await context.redis.set("karma", "32");
11
+ *
12
+ * const txn = await context.redis.watch("quantity");
13
+ *
14
+ * await txn.multi(); // Begin a transaction
15
+ * await txn.incrBy("karma", 10);
16
+ * await txn.exec(); // Execute the commands in the transaction
17
+ * }
18
+ * ```
7
19
  */
8
20
  exec(): Promise<any[]>;
9
21
  /**
10
22
  * Marks the start of a transaction block. Subsequent commands will be
11
23
  * queued for atomic execution using EXEC. https://redis.io/commands/multi/
24
+ * @example
25
+ * ```ts
26
+ * async function multiExample(context: Devvit.Context) {
27
+ * await context.redis.set("karma", "32");
28
+ *
29
+ * const txn = await context.redis.watch("quantity");
30
+ *
31
+ * await txn.multi(); // Begin a transaction
32
+ * await txn.incrBy("karma", 10);
33
+ * await txn.exec(); // Execute the commands in the transaction
34
+ * }
35
+ * ```
12
36
  */
13
37
  multi(): Promise<void>;
38
+ /**
39
+ * Flushes all previously queued commands in a transaction and restores the connection state to normal.
40
+ * If WATCH was used, DISCARD unwatches all keys watched by the connection. https://redis.io/docs/latest/commands/discard/
41
+ * @example
42
+ * ```ts
43
+ * async function discardExample(context: Devvit.Context) {
44
+ * await context.redis.set("price", "25");
45
+ *
46
+ * const txn = await context.redis.watch("price");
47
+ *
48
+ * await txn.multi(); // Begin a transaction
49
+ * await txn.incrBy("price", 5);
50
+ * await txn.discard(); // Discard the commands in the transaction
51
+ * }
52
+ * ```
53
+ */
14
54
  discard(): Promise<void>;
15
55
  /**
16
56
  * Marks the given keys to be watched for conditional execution of a transaction.
17
57
  * https://redis.io/commands/watch/
18
58
  * @arg {} keys - given keys to be watched
59
+ * @example
60
+ * ```ts
61
+ * async function watchExample(context: Devvit.Context) {
62
+ * await context.redis.set("karma", "32");
63
+ *
64
+ * const txn = await context.redis.watch("quantity");
65
+ *
66
+ * await txn.multi(); // Begin a transaction
67
+ * await txn.incrBy("karma", 10);
68
+ * await txn.exec(); // Execute the commands in the transaction
69
+ * }
70
+ * ```
19
71
  */
20
72
  watch(...keys: string[]): Promise<TxClientLike>;
21
73
  /**
22
74
  * Flushes all the previously watched keys for a transaction.
23
75
  * If you call EXEC or DISCARD, there's no need to manually call UNWATCH.
24
76
  * https://redis.io/commands/unwatch/
77
+ * @example
78
+ * ```ts
79
+ * async function unwatchExample(context: Devvit.Context) {
80
+ * await context.redis.set("gold", "50");
81
+ *
82
+ * const txn = await context.redis.watch("gold");
83
+ *
84
+ * await txn.multi(); // Begin a transaction
85
+ * await txn.incrBy("gold", 30);
86
+ * await txn.unwatch(); // Unwatch "gold"
87
+ *
88
+ * // Now that "gold" has been unwatched, we can increment its value
89
+ * // outside the transaction without canceling the transaction
90
+ * await context.redis.incrBy("gold", -20);
91
+ *
92
+ * await txn.exec(); // Execute the commands in the transaction
93
+ *
94
+ * console.log("Gold value: " + await context.redis.get("gold")); // The value of 'gold' should be 50 + 30 - 20 = 60
95
+ * }
96
+ * ```
25
97
  */
26
98
  unwatch(): Promise<TxClientLike>;
27
99
  /**
@@ -29,6 +101,14 @@ export type TxClientLike = {
29
101
  * https://redis.io/commands/get/
30
102
  * @arg {} key
31
103
  * @returns value of key or null when key does not exist.
104
+ * @example
105
+ * ```ts
106
+ * async function getExample(context: Devvit.Context) {
107
+ * await context.redis.set("quantity", "5");
108
+ * const quantity : string | undefined = await context.redis.get("quantity");
109
+ * console.log("Quantity: " + quantity);
110
+ * }
111
+ * ```
32
112
  */
33
113
  get(key: string): Promise<TxClientLike>;
34
114
  /**
@@ -37,12 +117,25 @@ export type TxClientLike = {
37
117
  * @arg {} key
38
118
  * @arg {} value
39
119
  * @arg {} options
120
+ * @example
121
+ * ```ts
122
+ * async function setExample(context: Devvit.Context) {
123
+ * await context.redis.set("quantity", "5");
124
+ * }
125
+ * ```
40
126
  */
41
127
  set(key: string, value: string, options?: SetOptions): Promise<TxClientLike>;
42
128
  /**
43
129
  * Removes the specified keys. A key is ignored if it does not exist.
44
130
  * https://redis.io/commands/del/
45
131
  * @arg {} keys
132
+ * @example
133
+ * ```ts
134
+ * async function delExample(context: Devvit.Context) {
135
+ * await context.redis.set("quantity", "5");
136
+ * await context.redis.del("quantity");
137
+ * }
138
+ * ```
46
139
  */
47
140
  del(...keys: string[]): Promise<TxClientLike>;
48
141
  /**
@@ -50,6 +143,14 @@ export type TxClientLike = {
50
143
  * https://redis.io/commands/incrby/
51
144
  * @arg {} key
52
145
  * @arg {} value
146
+ * @example
147
+ * ```ts
148
+ * async function incrByExample(context: Devvit.Context) {
149
+ * await context.redis.set("totalPoints", "53")
150
+ * const updatedPoints : number = await context.redis.incrBy("totalPoints", 100);
151
+ * console.log("Updated points: " + updatedPoints);
152
+ * }
153
+ * ```
53
154
  */
54
155
  incrBy(key: string, value: number): Promise<TxClientLike>;
55
156
  /**
@@ -57,6 +158,14 @@ export type TxClientLike = {
57
158
  * https://redis.io/commands/type/
58
159
  * @arg {} key
59
160
  * @returns string representation of the type
161
+ * @example
162
+ * ```ts
163
+ * async function typeExample(context: Devvit.Context) {
164
+ * await context.redis.set("quantity", "5");
165
+ * const type : string = await context.redis.type("quantity");
166
+ * console.log("Key type: " + type);
167
+ * }
168
+ * ```
60
169
  */
61
170
  type(key: string): Promise<TxClientLike>;
62
171
  /**
@@ -67,6 +176,14 @@ export type TxClientLike = {
67
176
  * @arg {} start
68
177
  * @arg {} end
69
178
  * @returns substring determined by offsets [start, end]
179
+ * @example
180
+ * ```ts
181
+ * async function getRangeExample(context: Devvit.Context) {
182
+ * await context.redis.set("word", "tacocat");
183
+ * const range : string = await context.redis.getRange("word", 0, 3)
184
+ * console.log("Range from index 0 to 3: " + range);
185
+ * }
186
+ * ```
70
187
  */
71
188
  getRange(key: string, start: number, end: number): Promise<TxClientLike>;
72
189
  /**
@@ -76,6 +193,13 @@ export type TxClientLike = {
76
193
  * @arg {} key
77
194
  * @arg {} offset
78
195
  * @returns length of the string after it was modified by the command
196
+ * @example
197
+ * ```ts
198
+ * async function setRangeExample(context: Devvit.Context) {
199
+ * await context.redis.set("word", "tacocat");
200
+ * await context.redis.setRange("word", 0, "blue");
201
+ * }
202
+ * ```
79
203
  */
80
204
  setRange(key: string, offset: number, value: string): Promise<TxClientLike>;
81
205
  /**
@@ -93,6 +217,14 @@ export type TxClientLike = {
93
217
  * https://redis.io/commands/strlen/
94
218
  * @arg {} key
95
219
  * @returns length of the string stored at key
220
+ * @example
221
+ * ```ts
222
+ * async function strLenExample(context: Devvit.Context) {
223
+ * await context.redis.set("word", "tacocat");
224
+ * const length : number = await context.redis.strLen("word");
225
+ * console.log("Length of word: " + length);
226
+ * }
227
+ * ```
96
228
  */
97
229
  strLen(key: string): Promise<TxClientLike>;
98
230
  /**
@@ -108,6 +240,16 @@ export type TxClientLike = {
108
240
  * https://redis.io/commands/mget/
109
241
  * @arg {} keys
110
242
  * @returns list of values at the specified keys
243
+ * @example
244
+ * ```ts
245
+ * async function mGetExample(context: Devvit.Context) {
246
+ * await context.redis.mSet({"name": "Zeek", "occupation": "Developer"});
247
+ * const result : (string | null)[] = await context.redis.mGet(["name", "occupation"]);
248
+ * result.forEach(x => {
249
+ * console.log(x);
250
+ * });
251
+ * }
252
+ * ```
111
253
  */
112
254
  mGet(keys: string[]): Promise<TxClientLike>;
113
255
  /**
@@ -123,6 +265,12 @@ export type TxClientLike = {
123
265
  * Sets the given keys to their respective values.
124
266
  * https://redis.io/commands/mset/
125
267
  * @arg {} keyValues
268
+ * @example
269
+ * ```ts
270
+ * async function mSetExample(context: Devvit.Context) {
271
+ * await context.redis.mSet({"name": "Zeek", "occupation": "Developer"});
272
+ * }
273
+ * ```
126
274
  */
127
275
  mSet(keyValues: {
128
276
  [key: string]: string;
@@ -132,6 +280,13 @@ export type TxClientLike = {
132
280
  * https://redis.io/commands/expire/
133
281
  * @arg {} key
134
282
  * @arg {} seconds
283
+ * @example
284
+ * ```ts
285
+ * async function expireExample(context: Devvit.Context) {
286
+ * await context.redis.set("product", "milk");
287
+ * await context.redis.expire("product", 60); // Set the product to expire in 60 seconds
288
+ * }
289
+ * ```
135
290
  */
136
291
  expire(key: string, seconds: number): Promise<TxClientLike>;
137
292
  /**
@@ -139,6 +294,12 @@ export type TxClientLike = {
139
294
  * https://redis.io/commands/expiretime/
140
295
  * @arg {} key
141
296
  * @returns expiration Unix timestamp in seconds, or a negative value in order to signal an error
297
+ * @example
298
+ * async function expireTimeExample(context: Devvit.Context) {
299
+ * await context.redis.set("product", "milk");
300
+ * const expireTime : number = await context.redis.expireTime("product");
301
+ * console.log("Expire time: " + expireTime);
302
+ * }
142
303
  */
143
304
  expireTime(key: string): Promise<TxClientLike>;
144
305
  /**
@@ -146,6 +307,18 @@ export type TxClientLike = {
146
307
  * https://redis.io/commands/zadd/
147
308
  * @arg {} key
148
309
  * @returns number of elements added to the sorted set
310
+ * @example
311
+ * ```ts
312
+ * async function zAddExample(context: Devvit.Context) {
313
+ * const numMembersAdded : number = await context.redis.zAdd("leaderboard",
314
+ * {member: "louis", score: 37},
315
+ * {member: "fernando", score: 10},
316
+ * {member: "caesar", score: 20},
317
+ * {member: "alexander", score: 25},
318
+ * );
319
+ * console.log("Number of members added: " + numMembersAdded);
320
+ * }
321
+ * ```
149
322
  */
150
323
  zAdd(key: string, ...members: ZMember[]): Promise<TxClientLike>;
151
324
  /**
@@ -153,6 +326,19 @@ export type TxClientLike = {
153
326
  * https://redis.io/commands/zcard/
154
327
  * @arg {} key
155
328
  * @returns cardinality of the sorted set
329
+ * @example
330
+ * ```ts
331
+ * async function zCardExample(context: Devvit.Context) {
332
+ * await context.redis.zAdd("leaderboard",
333
+ * {member: "louis", score: 37},
334
+ * {member: "fernando", score: 10},
335
+ * {member: "caesar", score: 20},
336
+ * {member: "alexander", score: 25},
337
+ * );
338
+ * const cardinality : number = await context.redis.zCard("leaderboard");
339
+ * console.log("Cardinality: " + cardinality);
340
+ * }
341
+ * ```
156
342
  */
157
343
  zCard(key: string): Promise<TxClientLike>;
158
344
  /**
@@ -162,6 +348,19 @@ export type TxClientLike = {
162
348
  * @arg {} member
163
349
  * @arg {} value
164
350
  * @returns the new score of member as a double precision floating point number
351
+ * @example
352
+ * ```ts
353
+ * async function zIncrByExample(context: Devvit.Context) {
354
+ * await context.redis.zAdd("animals",
355
+ * {member: "zebra", score: 92},
356
+ * {member: "cat", score: 100},
357
+ * {member: "dog", score: 95},
358
+ * {member: "elephant", score: 97}
359
+ * );
360
+ * const updatedScore : number = await context.redis.zIncrBy("animals", "dog", 10);
361
+ * console.log("Dog's updated score: " + updatedScore);
362
+ * }
363
+ * ```
165
364
  */
166
365
  zIncrBy(key: string, member: string, value: number): Promise<TxClientLike>;
167
366
  /**
@@ -171,6 +370,19 @@ export type TxClientLike = {
171
370
  * @arg {} member
172
371
  * @returns rank of the member. The rank (or index) is 0-based
173
372
  * which means that the member with the lowest score has rank 0
373
+ * @example
374
+ * ```ts
375
+ * async function zRankExample(context: Devvit.Context) {
376
+ * await context.redis.zAdd("animals",
377
+ * {member: "zebra", score: 92},
378
+ * {member: "cat", score: 100},
379
+ * {member: "dog", score: 95},
380
+ * {member: "elephant", score: 97}
381
+ * );
382
+ * const rank : number = await context.redis.zRank("animals", "dog");
383
+ * console.log("Dog's rank: " + rank);
384
+ * }
385
+ * ```
174
386
  */
175
387
  zRank(key: string, member: string): Promise<TxClientLike>;
176
388
  /**
@@ -179,6 +391,19 @@ export type TxClientLike = {
179
391
  * @arg {} key
180
392
  * @arg {} member
181
393
  * @returns the score of the member (a double-precision floating point number).
394
+ * @example
395
+ * ```ts
396
+ * async function zScoreExample(context: Devvit.Context) {
397
+ * await context.redis.zAdd("leaderboard",
398
+ * {member: "louis", score: 37},
399
+ * {member: "fernando", score: 10},
400
+ * {member: "caesar", score: 20},
401
+ * {member: "alexander", score: 25},
402
+ * );
403
+ * const score : number = await context.redis.zScore("leaderboard", "caesar");
404
+ * console.log("Caesar's score: " + score);
405
+ * }
406
+ * ```
182
407
  */
183
408
  zScore(key: string, member: string): Promise<TxClientLike>;
184
409
  /**
@@ -187,6 +412,20 @@ export type TxClientLike = {
187
412
  * @arg {} cursor
188
413
  * @arg {} pattern
189
414
  * @arg {} count
415
+ * @example
416
+ * ```ts
417
+ * async function zScanExample(context: Devvit.Context) {
418
+ * await context.redis.zAdd("fruits",
419
+ * {member: "kiwi", score: 0},
420
+ * {member: "mango", score: 0},
421
+ * {member: "banana", score: 0},
422
+ * {member: "orange", score: 0},
423
+ * {member: "apple", score: 0},
424
+ * );
425
+ * const zScanResponse = await context.redis.zScan("fruits", 0);
426
+ * console.log("zScanResponse: " + JSON.stringify(zScanResponse));
427
+ * }
428
+ * ```
190
429
  */
191
430
  zScan(key: string, cursor: number, pattern?: string | undefined, count?: number | undefined): Promise<TxClientLike>;
192
431
  /**
@@ -197,6 +436,24 @@ export type TxClientLike = {
197
436
  * @arg {} stop
198
437
  * @arg {} options
199
438
  * @returns list of elements in the specified range
439
+ * @example
440
+ * ```ts
441
+ * async function zRangeExample(context: Devvit.Context) {
442
+ * await context.redis.zAdd("leaderboard",
443
+ * {member: "louis", score: 37},
444
+ * {member: "fernando", score: 10},
445
+ * {member: "caesar", score: 20},
446
+ * {member: "alexander", score: 25},
447
+ * );
448
+ *
449
+ * // View elements with scores between 0 and 30 inclusive, sorted by score
450
+ * const scores : {member : string, score : number}[] = await context.redis.zRange("leaderboard", 0, 30, { by: "score" });
451
+ *
452
+ * scores.forEach(x => {
453
+ * console.log("Member: " + x.member, ", Score: " + x.score);
454
+ * });
455
+ * }
456
+ * ```
200
457
  */
201
458
  zRange(key: string, start: number | string, stop: number | string, options?: ZRangeOptions): Promise<TxClientLike>;
202
459
  /**
@@ -205,6 +462,19 @@ export type TxClientLike = {
205
462
  * @arg {} key
206
463
  * @arg {} members
207
464
  * @returns number of members removed from the sorted set
465
+ * @example
466
+ * ```ts
467
+ * async function zRemExample(context: Devvit.Context) {
468
+ * await context.redis.zAdd("leaderboard",
469
+ * {member: "louis", score: 37},
470
+ * {member: "fernando", score: 10},
471
+ * {member: "caesar", score: 20},
472
+ * {member: "alexander", score: 25},
473
+ * );
474
+ * const numberOfMembersRemoved : number = await context.redis.zRem("leaderboard", ["fernando", "alexander"]);
475
+ * console.log("Number of members removed: " + numberOfMembersRemoved);
476
+ * }
477
+ * ```
208
478
  */
209
479
  zRem(key: string, members: string[]): Promise<TxClientLike>;
210
480
  /**
@@ -215,6 +485,23 @@ export type TxClientLike = {
215
485
  * @arg {} min
216
486
  * @arg {} max
217
487
  * @returns number of members removed from the sorted set
488
+ * @example
489
+ * ```ts
490
+ * async function zRemRangeByLexExample(context: Devvit.Context) {
491
+ * await context.redis.zAdd("fruits",
492
+ * {member: "kiwi", score: 0},
493
+ * {member: "mango", score: 0},
494
+ * {member: "banana", score: 0},
495
+ * {member: "orange", score: 0},
496
+ * {member: "apple", score: 0},
497
+ * );
498
+ *
499
+ * // Remove fruits alphabetically ordered between 'kiwi' inclusive and 'orange' exclusive
500
+ * // Note: The symbols '[' and '(' indicate inclusive or exclusive, respectively. These must be included in the call to zRemRangeByLex().
501
+ * const numFieldsRemoved : number = await context.redis.zRemRangeByLex("fruits", "[kiwi", "(orange");
502
+ * console.log("Number of fields removed: " + numFieldsRemoved);
503
+ * }
504
+ * ```
218
505
  */
219
506
  zRemRangeByLex(key: string, min: string, max: string): Promise<TxClientLike>;
220
507
  /**
@@ -224,6 +511,22 @@ export type TxClientLike = {
224
511
  * @arg {} start
225
512
  * @arg {} stop
226
513
  * @returns number of members removed from the sorted set
514
+ * @example
515
+ * ```
516
+ * async function zRemRangeByRankExample(context: Devvit.Context) {
517
+ * await context.redis.zAdd("fruits",
518
+ * {member: "kiwi", score: 10},
519
+ * {member: "mango", score: 20},
520
+ * {member: "banana", score: 30},
521
+ * {member: "orange", score: 40},
522
+ * {member: "apple", score: 50},
523
+ * );
524
+
525
+ * // Remove fruits ranked 1 through 3 inclusive
526
+ * const numFieldsRemoved : number = await context.redis.zRemRangeByRank("fruits", 1, 3);
527
+ * console.log("Number of fields removed: " + numFieldsRemoved);
528
+ * }
529
+ * ```
227
530
  */
228
531
  zRemRangeByRank(key: string, start: number, stop: number): Promise<TxClientLike>;
229
532
  /**
@@ -233,6 +536,21 @@ export type TxClientLike = {
233
536
  * @arg {} min
234
537
  * @arg {} max
235
538
  * @returns number of members removed from the sorted set
539
+ * @example
540
+ * ```ts
541
+ * async function zRemRangeByScoreExample(context: Devvit.Context) {
542
+ * await context.redis.zAdd("fruits",
543
+ * {member: "kiwi", score: 10},
544
+ * {member: "mango", score: 20},
545
+ * {member: "banana", score: 30},
546
+ * {member: "orange", score: 40},
547
+ * {member: "apple", score: 50},
548
+ * );
549
+ * // Remove fruits scored between 30 and 50 inclusive
550
+ * const numFieldsRemoved : number = await context.redis.zRemRangeByScore("fruits", 30, 50);
551
+ * console.log("Number of fields removed: " + numFieldsRemoved);
552
+ * }
553
+ * ```
236
554
  */
237
555
  zRemRangeByScore(key: string, min: number, max: number): Promise<TxClientLike>;
238
556
  /**
@@ -252,6 +570,13 @@ export type TxClientLike = {
252
570
  * @arg {} key
253
571
  * @arg {} fieldValues
254
572
  * @returns number of fields that were added
573
+ * @example
574
+ * ```ts
575
+ * async function hSetExample(context: Devvit.Context) {
576
+ * const numFieldsAdded = await context.redis.hSet("fruits", {"apple": "5", "orange": "7", "kiwi": "9"});
577
+ * console.log("Number of fields added: " + numFieldsAdded);
578
+ * }
579
+ * ```
255
580
  */
256
581
  hSet(key: string, fieldValues: {
257
582
  [field: string]: string;
@@ -271,6 +596,14 @@ export type TxClientLike = {
271
596
  * @arg {} key
272
597
  * @arg {} field
273
598
  * @returns value associated with field
599
+ * @example
600
+ * ```ts
601
+ * async function hGetExample(context: Devvit.Context) {
602
+ * await context.redis.hSet("fruits", {"apple": "5", "orange": "7", "kiwi": "9"});
603
+ * const result : string | undefined = await context.redis.hGet("fruits", "orange");
604
+ * console.log("Value of orange: " + result);
605
+ * }
606
+ * ```
274
607
  */
275
608
  hGet(key: string, field: string): Promise<TxClientLike>;
276
609
  /**
@@ -286,6 +619,22 @@ export type TxClientLike = {
286
619
  * https://redis.io/commands/hgetall
287
620
  * @arg {} key
288
621
  * @returns a map of fields and their values stored in the hash,
622
+ * @example
623
+ * ```
624
+ * async function hGetAllExample(context: Devvit.Context) {
625
+ * await context.redis.hSet("groceryList", {
626
+ * "eggs": "12",
627
+ * "apples": "3",
628
+ * "milk": "1"
629
+ * });
630
+ *
631
+ * const record : Record<string, string> | undefined = await context.redis.hGetAll("groceryList");
632
+ *
633
+ * if (record != undefined) {
634
+ * console.log("Eggs: " + record.eggs + ", Apples: " + record.apples + ", Milk: " + record.milk);
635
+ * }
636
+ * }
637
+ * ```
289
638
  */
290
639
  hGetAll(key: string): Promise<TxClientLike>;
291
640
  /**
@@ -303,6 +652,14 @@ export type TxClientLike = {
303
652
  * @arg {} key
304
653
  * @arg {} fields
305
654
  * @returns number of fields that were removed from the hash
655
+ * @example
656
+ * ```ts
657
+ * async function hDelExample(context: Devvit.Context) {
658
+ * await context.redis.hSet("fruits", {"apple": "5", "orange": "7", "kiwi": "9"});
659
+ * const numFieldsRemoved = await context.redis.hDel("fruits", ["apple", "kiwi"]);
660
+ * console.log("Number of fields removed: " + numFieldsRemoved);
661
+ * }
662
+ * ```
306
663
  */
307
664
  hDel(key: string, fields: string[]): Promise<TxClientLike>;
308
665
  /**
@@ -320,6 +677,22 @@ export type TxClientLike = {
320
677
  * @arg {} cursor
321
678
  * @arg {} pattern
322
679
  * @arg {} count
680
+ * @example
681
+ * ```ts
682
+ * async function hScanExample(context: Devvit.Context) {
683
+ * await context.redis.hSet("userInfo", {
684
+ * "name": "Bob",
685
+ * "startDate": "01-05-20",
686
+ * "totalAwards": "12"
687
+ * });
688
+ *
689
+ * const hScanResponse = await context.redis.hScan("userInfo", 0);
690
+ *
691
+ * hScanResponse.fieldValues.forEach(x => {
692
+ * console.log("Field: '" + x.field + "', Value: '" + x.value + "'");
693
+ * });
694
+ * }
695
+ * ```
323
696
  */
324
697
  hScan(key: string, cursor: number, pattern?: string | undefined, count?: number | undefined): Promise<TxClientLike>;
325
698
  /**
@@ -331,6 +704,18 @@ export type TxClientLike = {
331
704
  /**
332
705
  * Returns all field names in the hash stored at key.
333
706
  * @arg {} key
707
+ * @example
708
+ * ```ts
709
+ * async function hKeysExample(context: Devvit.Context) {
710
+ * await context.redis.hSet("prices", {
711
+ * "chair": "48",
712
+ * "desk": "95",
713
+ * "whiteboard": "23"
714
+ * });
715
+ * const keys : string[] = await context.redis.hKeys("prices");
716
+ * console.log("Keys: " + keys);
717
+ * }
718
+ * ```
334
719
  */
335
720
  hKeys(key: string): Promise<TxClientLike>;
336
721
  /**
@@ -350,6 +735,13 @@ export type TxClientLike = {
350
735
  * @arg {} field
351
736
  * @arg {} value
352
737
  * @returns value of key after the increment
738
+ * @example
739
+ * ```ts
740
+ * async function hIncrByExample(context: Devvit.Context) {
741
+ * await context.redis.hSet("user123", { "karma": "100" });
742
+ * await context.redis.hIncrBy("user123", "karma", 5);
743
+ * }
744
+ * ```
353
745
  */
354
746
  hIncrBy(key: string, field: string, value: number): Promise<TxClientLike>;
355
747
  /**
@@ -363,6 +755,19 @@ export type TxClientLike = {
363
755
  * Returns the number of fields contained in the hash stored at key.
364
756
  * @arg {} key
365
757
  * @returns the number of fields in the hash, or 0 when the key does not exist.
758
+ * @example
759
+ * ```ts
760
+ * async function hLenExample(context: Devvit.Context) {
761
+ * await context.redis.hSet("supplies", {
762
+ * "paperclips": "25",
763
+ * "pencils": "10",
764
+ * "erasers": "5",
765
+ * "pens": "7"
766
+ * });
767
+ * const numberOfFields : number = await context.redis.hLen("supplies");
768
+ * console.log("Number of fields: " + numberOfFields);
769
+ * }
770
+ * ```
366
771
  */
367
772
  hLen(key: string): Promise<TxClientLike>;
368
773
  };
@@ -371,6 +776,18 @@ export type RedisClient = {
371
776
  * Marks the given keys to be watched for conditional execution of a transaction.
372
777
  * https://redis.io/commands/watch/
373
778
  * @arg {} keys - given keys to be watched
779
+ * @example
780
+ * ```ts
781
+ * async function watchExample(context: Devvit.Context) {
782
+ * await context.redis.set("karma", "32");
783
+ *
784
+ * const txn = await context.redis.watch("quantity");
785
+ *
786
+ * await txn.multi(); // Begin a transaction
787
+ * await txn.incrBy("karma", 10);
788
+ * await txn.exec(); // Execute the commands in the transaction
789
+ * }
790
+ * ```
374
791
  */
375
792
  watch(...keys: string[]): Promise<TxClientLike>;
376
793
  /**
@@ -378,6 +795,14 @@ export type RedisClient = {
378
795
  * https://redis.io/commands/get/
379
796
  * @arg {} key
380
797
  * @returns value of key or null when key does not exist.
798
+ * @example
799
+ * ```ts
800
+ * async function getExample(context: Devvit.Context) {
801
+ * await context.redis.set("quantity", "5");
802
+ * const quantity : string | undefined = await context.redis.get("quantity");
803
+ * console.log("Quantity: " + quantity);
804
+ * }
805
+ * ```
381
806
  */
382
807
  get(key: string): Promise<string | undefined>;
383
808
  /**
@@ -386,12 +811,25 @@ export type RedisClient = {
386
811
  * @arg {} key
387
812
  * @arg {} value
388
813
  * @arg {} options
814
+ * @example
815
+ * ```ts
816
+ * async function setExample(context: Devvit.Context) {
817
+ * await context.redis.set("quantity", "5");
818
+ * }
819
+ * ```
389
820
  */
390
821
  set(key: string, value: string, options?: SetOptions): Promise<string>;
391
822
  /**
392
823
  * Removes the specified keys. A key is ignored if it does not exist.
393
824
  * https://redis.io/commands/del/
394
825
  * @arg {} keys
826
+ * @example
827
+ * ```ts
828
+ * async function delExample(context: Devvit.Context) {
829
+ * await context.redis.set("quantity", "5");
830
+ * await context.redis.del("quantity");
831
+ * }
832
+ * ```
395
833
  */
396
834
  del(...keys: string[]): Promise<void>;
397
835
  /**
@@ -399,6 +837,14 @@ export type RedisClient = {
399
837
  * https://redis.io/commands/type/
400
838
  * @arg {} key
401
839
  * @returns string representation of the type
840
+ * @example
841
+ * ```ts
842
+ * async function typeExample(context: Devvit.Context) {
843
+ * await context.redis.set("quantity", "5");
844
+ * const type : string = await context.redis.type("quantity");
845
+ * console.log("Key type: " + type);
846
+ * }
847
+ * ```
402
848
  */
403
849
  type(key: string): Promise<string>;
404
850
  /**
@@ -409,6 +855,14 @@ export type RedisClient = {
409
855
  * @arg {} start
410
856
  * @arg {} end
411
857
  * @returns substring determined by offsets [start, end]
858
+ * @example
859
+ * ```ts
860
+ * async function getRangeExample(context: Devvit.Context) {
861
+ * await context.redis.set("word", "tacocat");
862
+ * const range : string = await context.redis.getRange("word", 0, 3)
863
+ * console.log("Range from index 0 to 3: " + range);
864
+ * }
865
+ * ```
412
866
  */
413
867
  getRange(key: string, start: number, end: number): Promise<string>;
414
868
  /**
@@ -418,6 +872,13 @@ export type RedisClient = {
418
872
  * @arg {} key
419
873
  * @arg {} offset
420
874
  * @returns length of the string after it was modified by the command
875
+ * @example
876
+ * ```ts
877
+ * async function setRangeExample(context: Devvit.Context) {
878
+ * await context.redis.set("word", "tacocat");
879
+ * await context.redis.setRange("word", 0, "blue");
880
+ * }
881
+ * ```
421
882
  */
422
883
  setRange(key: string, offset: number, value: string): Promise<number>;
423
884
  /**
@@ -435,6 +896,14 @@ export type RedisClient = {
435
896
  * https://redis.io/commands/strlen/
436
897
  * @arg {} key
437
898
  * @returns length of the string stored at key
899
+ * @example
900
+ * ```ts
901
+ * async function strLenExample(context: Devvit.Context) {
902
+ * await context.redis.set("word", "tacocat");
903
+ * const length : number = await context.redis.strLen("word");
904
+ * console.log("Length of word: " + length);
905
+ * }
906
+ * ```
438
907
  */
439
908
  strLen(key: string): Promise<number>;
440
909
  /**
@@ -443,6 +912,14 @@ export type RedisClient = {
443
912
  * @arg {} key
444
913
  * @arg {} value
445
914
  * @returns value of key after the increment
915
+ * @example
916
+ * ```ts
917
+ * async function incrByExample(context: Devvit.Context) {
918
+ * await context.redis.set("totalPoints", "53")
919
+ * const updatedPoints : number = await context.redis.incrBy("totalPoints", 100);
920
+ * console.log("Updated points: " + updatedPoints);
921
+ * }
922
+ * ```
446
923
  */
447
924
  incrBy(key: string, value: number): Promise<number>;
448
925
  /**
@@ -458,6 +935,16 @@ export type RedisClient = {
458
935
  * https://redis.io/commands/mget/
459
936
  * @arg {} keys
460
937
  * @returns list of values at the specified keys
938
+ * @example
939
+ * ```ts
940
+ * async function mGetExample(context: Devvit.Context) {
941
+ * await context.redis.mSet({"name": "Zeek", "occupation": "Developer"});
942
+ * const result : (string | null)[] = await context.redis.mGet(["name", "occupation"]);
943
+ * result.forEach(x => {
944
+ * console.log(x);
945
+ * });
946
+ * }
947
+ * ```
461
948
  */
462
949
  mGet(keys: string[]): Promise<(string | null)[]>;
463
950
  /**
@@ -473,6 +960,12 @@ export type RedisClient = {
473
960
  * Sets the given keys to their respective values.
474
961
  * https://redis.io/commands/mset/
475
962
  * @arg {} keyValues
963
+ * @example
964
+ * ```ts
965
+ * async function mSetExample(context: Devvit.Context) {
966
+ * await context.redis.mSet({"name": "Zeek", "occupation": "Developer"});
967
+ * }
968
+ * ```
476
969
  */
477
970
  mSet(keyValues: {
478
971
  [key: string]: string;
@@ -482,6 +975,13 @@ export type RedisClient = {
482
975
  * https://redis.io/commands/expire/
483
976
  * @arg {} key
484
977
  * @arg {} seconds
978
+ * @example
979
+ * ```ts
980
+ * async function expireExample(context: Devvit.Context) {
981
+ * await context.redis.set("product", "milk");
982
+ * await context.redis.expire("product", 60); // Set the product to expire in 60 seconds
983
+ * }
984
+ * ```
485
985
  */
486
986
  expire(key: string, seconds: number): Promise<void>;
487
987
  /**
@@ -489,6 +989,12 @@ export type RedisClient = {
489
989
  * https://redis.io/commands/expiretime/
490
990
  * @arg {} key
491
991
  * @returns expiration Unix timestamp in seconds, or a negative value in order to signal an error
992
+ * @example
993
+ * async function expireTimeExample(context: Devvit.Context) {
994
+ * await context.redis.set("product", "milk");
995
+ * const expireTime : number = await context.redis.expireTime("product");
996
+ * console.log("Expire time: " + expireTime);
997
+ * }
492
998
  */
493
999
  expireTime(key: string): Promise<number>;
494
1000
  /**
@@ -496,6 +1002,18 @@ export type RedisClient = {
496
1002
  * https://redis.io/commands/zadd/
497
1003
  * @arg {} key
498
1004
  * @returns number of elements added to the sorted set
1005
+ * @example
1006
+ * ```ts
1007
+ * async function zAddExample(context: Devvit.Context) {
1008
+ * const numMembersAdded : number = await context.redis.zAdd("leaderboard",
1009
+ * {member: "louis", score: 37},
1010
+ * {member: "fernando", score: 10},
1011
+ * {member: "caesar", score: 20},
1012
+ * {member: "alexander", score: 25},
1013
+ * );
1014
+ * console.log("Number of members added: " + numMembersAdded);
1015
+ * }
1016
+ * ```
499
1017
  */
500
1018
  zAdd(key: string, ...members: ZMember[]): Promise<number>;
501
1019
  /**
@@ -503,6 +1021,19 @@ export type RedisClient = {
503
1021
  * https://redis.io/commands/zcard/
504
1022
  * @arg {} key
505
1023
  * @returns cardinality of the sorted set
1024
+ * @example
1025
+ * ```ts
1026
+ * async function zCardExample(context: Devvit.Context) {
1027
+ * await context.redis.zAdd("leaderboard",
1028
+ * {member: "louis", score: 37},
1029
+ * {member: "fernando", score: 10},
1030
+ * {member: "caesar", score: 20},
1031
+ * {member: "alexander", score: 25},
1032
+ * );
1033
+ * const cardinality : number = await context.redis.zCard("leaderboard");
1034
+ * console.log("Cardinality: " + cardinality);
1035
+ * }
1036
+ * ```
506
1037
  */
507
1038
  zCard(key: string): Promise<number>;
508
1039
  /**
@@ -511,6 +1042,19 @@ export type RedisClient = {
511
1042
  * @arg {} key
512
1043
  * @arg {} member
513
1044
  * @returns the score of the member (a double-precision floating point number).
1045
+ * @example
1046
+ * ```ts
1047
+ * async function zScoreExample(context: Devvit.Context) {
1048
+ * await context.redis.zAdd("leaderboard",
1049
+ * {member: "louis", score: 37},
1050
+ * {member: "fernando", score: 10},
1051
+ * {member: "caesar", score: 20},
1052
+ * {member: "alexander", score: 25},
1053
+ * );
1054
+ * const score : number = await context.redis.zScore("leaderboard", "caesar");
1055
+ * console.log("Caesar's score: " + score);
1056
+ * }
1057
+ * ```
514
1058
  */
515
1059
  zScore(key: string, member: string): Promise<number>;
516
1060
  /**
@@ -520,6 +1064,19 @@ export type RedisClient = {
520
1064
  * @arg {} member
521
1065
  * @returns rank of the member. The rank (or index) is 0-based
522
1066
  * which means that the member with the lowest score has rank 0
1067
+ * @example
1068
+ * ```ts
1069
+ * async function zRankExample(context: Devvit.Context) {
1070
+ * await context.redis.zAdd("animals",
1071
+ * {member: "zebra", score: 92},
1072
+ * {member: "cat", score: 100},
1073
+ * {member: "dog", score: 95},
1074
+ * {member: "elephant", score: 97}
1075
+ * );
1076
+ * const rank : number = await context.redis.zRank("animals", "dog");
1077
+ * console.log("Dog's rank: " + rank);
1078
+ * }
1079
+ * ```
523
1080
  */
524
1081
  zRank(key: string, member: string): Promise<number>;
525
1082
  /**
@@ -529,6 +1086,19 @@ export type RedisClient = {
529
1086
  * @arg {} member
530
1087
  * @arg {} value
531
1088
  * @returns the new score of member as a double precision floating point number
1089
+ * @example
1090
+ * ```ts
1091
+ * async function zIncrByExample(context: Devvit.Context) {
1092
+ * await context.redis.zAdd("animals",
1093
+ * {member: "zebra", score: 92},
1094
+ * {member: "cat", score: 100},
1095
+ * {member: "dog", score: 95},
1096
+ * {member: "elephant", score: 97}
1097
+ * );
1098
+ * const updatedScore : number = await context.redis.zIncrBy("animals", "dog", 10);
1099
+ * console.log("Dog's updated score: " + updatedScore);
1100
+ * }
1101
+ * ```
532
1102
  */
533
1103
  zIncrBy(key: string, member: string, value: number): Promise<number>;
534
1104
  /**
@@ -539,6 +1109,24 @@ export type RedisClient = {
539
1109
  * @arg {} stop
540
1110
  * @arg {} options
541
1111
  * @returns list of elements in the specified range
1112
+ * @example
1113
+ * ```ts
1114
+ * async function zRangeExample(context: Devvit.Context) {
1115
+ * await context.redis.zAdd("leaderboard",
1116
+ * {member: "louis", score: 37},
1117
+ * {member: "fernando", score: 10},
1118
+ * {member: "caesar", score: 20},
1119
+ * {member: "alexander", score: 25},
1120
+ * );
1121
+ *
1122
+ * // View elements with scores between 0 and 30 inclusive, sorted by score
1123
+ * const scores : {member : string, score : number}[] = await context.redis.zRange("leaderboard", 0, 30, { by: "score" });
1124
+ *
1125
+ * scores.forEach(x => {
1126
+ * console.log("Member: " + x.member, ", Score: " + x.score);
1127
+ * });
1128
+ * }
1129
+ * ```
542
1130
  */
543
1131
  zRange(key: string, start: number | string, stop: number | string, options?: ZRangeOptions): Promise<{
544
1132
  member: string;
@@ -550,6 +1138,19 @@ export type RedisClient = {
550
1138
  * @arg {} key
551
1139
  * @arg {} members
552
1140
  * @returns number of members removed from the sorted set
1141
+ * @example
1142
+ * ```ts
1143
+ * async function zRemExample(context: Devvit.Context) {
1144
+ * await context.redis.zAdd("leaderboard",
1145
+ * {member: "louis", score: 37},
1146
+ * {member: "fernando", score: 10},
1147
+ * {member: "caesar", score: 20},
1148
+ * {member: "alexander", score: 25},
1149
+ * );
1150
+ * const numberOfMembersRemoved : number = await context.redis.zRem("leaderboard", ["fernando", "alexander"]);
1151
+ * console.log("Number of members removed: " + numberOfMembersRemoved);
1152
+ * }
1153
+ * ```
553
1154
  */
554
1155
  zRem(key: string, members: string[]): Promise<number>;
555
1156
  /**
@@ -560,6 +1161,23 @@ export type RedisClient = {
560
1161
  * @arg {} min
561
1162
  * @arg {} max
562
1163
  * @returns number of members removed from the sorted set
1164
+ * @example
1165
+ * ```ts
1166
+ * async function zRemRangeByLexExample(context: Devvit.Context) {
1167
+ * await context.redis.zAdd("fruits",
1168
+ * {member: "kiwi", score: 0},
1169
+ * {member: "mango", score: 0},
1170
+ * {member: "banana", score: 0},
1171
+ * {member: "orange", score: 0},
1172
+ * {member: "apple", score: 0},
1173
+ * );
1174
+ *
1175
+ * // Remove fruits alphabetically ordered between 'kiwi' inclusive and 'orange' exclusive
1176
+ * // Note: The symbols '[' and '(' indicate inclusive or exclusive, respectively. These must be included in the call to zRemRangeByLex().
1177
+ * const numFieldsRemoved : number = await context.redis.zRemRangeByLex("fruits", "[kiwi", "(orange");
1178
+ * console.log("Number of fields removed: " + numFieldsRemoved);
1179
+ * }
1180
+ * ```
563
1181
  */
564
1182
  zRemRangeByLex(key: string, min: string, max: string): Promise<number>;
565
1183
  /**
@@ -569,6 +1187,22 @@ export type RedisClient = {
569
1187
  * @arg {} start
570
1188
  * @arg {} stop
571
1189
  * @returns number of members removed from the sorted set
1190
+ * @example
1191
+ * ```
1192
+ * async function zRemRangeByRankExample(context: Devvit.Context) {
1193
+ * await context.redis.zAdd("fruits",
1194
+ * {member: "kiwi", score: 10},
1195
+ * {member: "mango", score: 20},
1196
+ * {member: "banana", score: 30},
1197
+ * {member: "orange", score: 40},
1198
+ * {member: "apple", score: 50},
1199
+ * );
1200
+
1201
+ * // Remove fruits ranked 1 through 3 inclusive
1202
+ * const numFieldsRemoved : number = await context.redis.zRemRangeByRank("fruits", 1, 3);
1203
+ * console.log("Number of fields removed: " + numFieldsRemoved);
1204
+ * }
1205
+ * ```
572
1206
  */
573
1207
  zRemRangeByRank(key: string, start: number, stop: number): Promise<number>;
574
1208
  /**
@@ -578,6 +1212,21 @@ export type RedisClient = {
578
1212
  * @arg {} min
579
1213
  * @arg {} max
580
1214
  * @returns number of members removed from the sorted set
1215
+ * @example
1216
+ * ```ts
1217
+ * async function zRemRangeByScoreExample(context: Devvit.Context) {
1218
+ * await context.redis.zAdd("fruits",
1219
+ * {member: "kiwi", score: 10},
1220
+ * {member: "mango", score: 20},
1221
+ * {member: "banana", score: 30},
1222
+ * {member: "orange", score: 40},
1223
+ * {member: "apple", score: 50},
1224
+ * );
1225
+ * // Remove fruits scored between 30 and 50 inclusive
1226
+ * const numFieldsRemoved : number = await context.redis.zRemRangeByScore("fruits", 30, 50);
1227
+ * console.log("Number of fields removed: " + numFieldsRemoved);
1228
+ * }
1229
+ * ```
581
1230
  */
582
1231
  zRemRangeByScore(key: string, min: number, max: number): Promise<number>;
583
1232
  /**
@@ -586,6 +1235,20 @@ export type RedisClient = {
586
1235
  * @arg {} cursor
587
1236
  * @arg {} pattern
588
1237
  * @arg {} count
1238
+ * @example
1239
+ * ```ts
1240
+ * async function zScanExample(context: Devvit.Context) {
1241
+ * await context.redis.zAdd("fruits",
1242
+ * {member: "kiwi", score: 0},
1243
+ * {member: "mango", score: 0},
1244
+ * {member: "banana", score: 0},
1245
+ * {member: "orange", score: 0},
1246
+ * {member: "apple", score: 0},
1247
+ * );
1248
+ * const zScanResponse = await context.redis.zScan("fruits", 0);
1249
+ * console.log("zScanResponse: " + JSON.stringify(zScanResponse));
1250
+ * }
1251
+ * ```
589
1252
  */
590
1253
  zScan(key: string, cursor: number, pattern?: string | undefined, count?: number | undefined): Promise<ZScanResponse>;
591
1254
  /**
@@ -605,6 +1268,13 @@ export type RedisClient = {
605
1268
  * @arg {} key
606
1269
  * @arg {} fieldValues
607
1270
  * @returns number of fields that were added
1271
+ * @example
1272
+ * ```ts
1273
+ * async function hSetExample(context: Devvit.Context) {
1274
+ * const numFieldsAdded = await context.redis.hSet("fruits", {"apple": "5", "orange": "7", "kiwi": "9"});
1275
+ * console.log("Number of fields added: " + numFieldsAdded);
1276
+ * }
1277
+ * ```
608
1278
  */
609
1279
  hSet(key: string, fieldValues: {
610
1280
  [field: string]: string;
@@ -624,6 +1294,14 @@ export type RedisClient = {
624
1294
  * @arg {} key
625
1295
  * @arg {} field
626
1296
  * @returns value associated with field
1297
+ * @example
1298
+ * ```ts
1299
+ * async function hGetExample(context: Devvit.Context) {
1300
+ * await context.redis.hSet("fruits", {"apple": "5", "orange": "7", "kiwi": "9"});
1301
+ * const result : string | undefined = await context.redis.hGet("fruits", "orange");
1302
+ * console.log("Value of orange: " + result);
1303
+ * }
1304
+ * ```
627
1305
  */
628
1306
  hGet(key: string, field: string): Promise<string | undefined>;
629
1307
  /**
@@ -639,6 +1317,22 @@ export type RedisClient = {
639
1317
  * https://redis.io/commands/hgetall
640
1318
  * @arg {} key
641
1319
  * @returns a map of fields and their values stored in the hash,
1320
+ * @example
1321
+ * ```
1322
+ * async function hGetAllExample(context: Devvit.Context) {
1323
+ * await context.redis.hSet("groceryList", {
1324
+ * "eggs": "12",
1325
+ * "apples": "3",
1326
+ * "milk": "1"
1327
+ * });
1328
+ *
1329
+ * const record : Record<string, string> | undefined = await context.redis.hGetAll("groceryList");
1330
+ *
1331
+ * if (record != undefined) {
1332
+ * console.log("Eggs: " + record.eggs + ", Apples: " + record.apples + ", Milk: " + record.milk);
1333
+ * }
1334
+ * }
1335
+ * ```
642
1336
  */
643
1337
  hGetAll(key: string): Promise<Record<string, string> | undefined>;
644
1338
  /**
@@ -656,6 +1350,14 @@ export type RedisClient = {
656
1350
  * @arg {} key
657
1351
  * @arg {} fields
658
1352
  * @returns number of fields that were removed from the hash
1353
+ * @example
1354
+ * ```ts
1355
+ * async function hDelExample(context: Devvit.Context) {
1356
+ * await context.redis.hSet("fruits", {"apple": "5", "orange": "7", "kiwi": "9"});
1357
+ * const numFieldsRemoved = await context.redis.hDel("fruits", ["apple", "kiwi"]);
1358
+ * console.log("Number of fields removed: " + numFieldsRemoved);
1359
+ * }
1360
+ * ```
659
1361
  */
660
1362
  hDel(key: string, fields: string[]): Promise<number>;
661
1363
  /**
@@ -673,6 +1375,22 @@ export type RedisClient = {
673
1375
  * @arg {} cursor
674
1376
  * @arg {} pattern
675
1377
  * @arg {} count
1378
+ * @example
1379
+ * ```ts
1380
+ * async function hScanExample(context: Devvit.Context) {
1381
+ * await context.redis.hSet("userInfo", {
1382
+ * "name": "Bob",
1383
+ * "startDate": "01-05-20",
1384
+ * "totalAwards": "12"
1385
+ * });
1386
+ *
1387
+ * const hScanResponse = await context.redis.hScan("userInfo", 0);
1388
+ *
1389
+ * hScanResponse.fieldValues.forEach(x => {
1390
+ * console.log("Field: '" + x.field + "', Value: '" + x.value + "'");
1391
+ * });
1392
+ * }
1393
+ * ```
676
1394
  */
677
1395
  hScan(key: string, cursor: number, pattern?: string | undefined, count?: number | undefined): Promise<HScanResponse>;
678
1396
  /**
@@ -684,6 +1402,18 @@ export type RedisClient = {
684
1402
  /**
685
1403
  * Returns all field names in the hash stored at key.
686
1404
  * @arg {} key
1405
+ * @example
1406
+ * ```ts
1407
+ * async function hKeysExample(context: Devvit.Context) {
1408
+ * await context.redis.hSet("prices", {
1409
+ * "chair": "48",
1410
+ * "desk": "95",
1411
+ * "whiteboard": "23"
1412
+ * });
1413
+ * const keys : string[] = await context.redis.hKeys("prices");
1414
+ * console.log("Keys: " + keys);
1415
+ * }
1416
+ * ```
687
1417
  */
688
1418
  hKeys(key: string): Promise<string[]>;
689
1419
  /**
@@ -703,6 +1433,13 @@ export type RedisClient = {
703
1433
  * @arg {} field
704
1434
  * @arg {} value
705
1435
  * @returns value of key after the increment
1436
+ * @example
1437
+ * ```ts
1438
+ * async function hIncrByExample(context: Devvit.Context) {
1439
+ * await context.redis.hSet("user123", { "karma": "100" });
1440
+ * await context.redis.hIncrBy("user123", "karma", 5);
1441
+ * }
1442
+ * ```
706
1443
  */
707
1444
  hIncrBy(key: string, field: string, value: number): Promise<number>;
708
1445
  /**
@@ -716,6 +1453,19 @@ export type RedisClient = {
716
1453
  * Returns the number of fields contained in the hash stored at key.
717
1454
  * @arg {} key
718
1455
  * @returns the number of fields in the hash, or 0 when the key does not exist.
1456
+ * @example
1457
+ * ```ts
1458
+ * async function hLenExample(context: Devvit.Context) {
1459
+ * await context.redis.hSet("supplies", {
1460
+ * "paperclips": "25",
1461
+ * "pencils": "10",
1462
+ * "erasers": "5",
1463
+ * "pens": "7"
1464
+ * });
1465
+ * const numberOfFields : number = await context.redis.hLen("supplies");
1466
+ * console.log("Number of fields: " + numberOfFields);
1467
+ * }
1468
+ * ```
719
1469
  */
720
1470
  hLen(key: string): Promise<number>;
721
1471
  /**