@upstash/redis 1.40.0 → 1.41.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.
Files changed (475) hide show
  1. package/README.md +5 -0
  2. package/{chunk-RLVWMRRX.mjs → chunk-CGMWROAN.mjs} +557 -4
  3. package/cloudflare.d.mts +2 -2
  4. package/cloudflare.d.ts +2 -2
  5. package/cloudflare.js +557 -4
  6. package/cloudflare.mjs +1 -1
  7. package/docs/advanced.mdx +83 -0
  8. package/docs/commands/array/arcount.mdx +28 -0
  9. package/docs/commands/array/ardel.mdx +30 -0
  10. package/docs/commands/array/ardelrange.mdx +32 -0
  11. package/docs/commands/array/arget.mdx +33 -0
  12. package/docs/commands/array/argetrange.mdx +38 -0
  13. package/docs/commands/array/argrep.mdx +69 -0
  14. package/docs/commands/array/arinfo.mdx +49 -0
  15. package/docs/commands/array/arinsert.mdx +32 -0
  16. package/docs/commands/array/arlastitems.mdx +40 -0
  17. package/docs/commands/array/arlen.mdx +28 -0
  18. package/docs/commands/array/armget.mdx +31 -0
  19. package/docs/commands/array/armset.mdx +31 -0
  20. package/docs/commands/array/arnext.mdx +25 -0
  21. package/docs/commands/array/arop.mdx +44 -0
  22. package/docs/commands/array/arring.mdx +36 -0
  23. package/docs/commands/array/arscan.mdx +42 -0
  24. package/docs/commands/array/arseek.mdx +34 -0
  25. package/docs/commands/array/arset.mdx +35 -0
  26. package/docs/commands/auth/echo.mdx +24 -0
  27. package/docs/commands/auth/ping.mdx +21 -0
  28. package/docs/commands/bitmap/bitcount.mdx +39 -0
  29. package/docs/commands/bitmap/bitop.mdx +142 -0
  30. package/docs/commands/bitmap/bitpos.mdx +39 -0
  31. package/docs/commands/bitmap/getbit.mdx +28 -0
  32. package/docs/commands/bitmap/setbit.mdx +31 -0
  33. package/docs/commands/connection/client_setinfo.mdx +91 -0
  34. package/docs/commands/functions/call.mdx +72 -0
  35. package/docs/commands/functions/call_ro.mdx +57 -0
  36. package/docs/commands/functions/delete.mdx +22 -0
  37. package/docs/commands/functions/flush.mdx +16 -0
  38. package/docs/commands/functions/list.mdx +72 -0
  39. package/docs/commands/functions/load.mdx +64 -0
  40. package/docs/commands/functions/stats.mdx +46 -0
  41. package/docs/commands/generic/del.mdx +29 -0
  42. package/docs/commands/generic/exists.mdx +26 -0
  43. package/docs/commands/generic/expire.mdx +29 -0
  44. package/docs/commands/generic/expireat.mdx +29 -0
  45. package/docs/commands/generic/keys.mdx +32 -0
  46. package/docs/commands/generic/persist.mdx +23 -0
  47. package/docs/commands/generic/pexpire.mdx +28 -0
  48. package/docs/commands/generic/pexpireat.mdx +29 -0
  49. package/docs/commands/generic/pttl.mdx +23 -0
  50. package/docs/commands/generic/randomkey.mdx +21 -0
  51. package/docs/commands/generic/rename.mdx +28 -0
  52. package/docs/commands/generic/renamenx.mdx +28 -0
  53. package/docs/commands/generic/scan.mdx +38 -0
  54. package/docs/commands/generic/touch.mdx +23 -0
  55. package/docs/commands/generic/ttl.mdx +23 -0
  56. package/docs/commands/generic/type.mdx +27 -0
  57. package/docs/commands/generic/unlink.mdx +29 -0
  58. package/docs/commands/hash/hdel.mdx +28 -0
  59. package/docs/commands/hash/hexists.mdx +30 -0
  60. package/docs/commands/hash/hexpire.mdx +49 -0
  61. package/docs/commands/hash/hexpireat.mdx +48 -0
  62. package/docs/commands/hash/hexpiretime.mdx +35 -0
  63. package/docs/commands/hash/hget.mdx +29 -0
  64. package/docs/commands/hash/hgetall.mdx +27 -0
  65. package/docs/commands/hash/hgetdel.mdx +67 -0
  66. package/docs/commands/hash/hgetex.mdx +123 -0
  67. package/docs/commands/hash/hincrby.mdx +34 -0
  68. package/docs/commands/hash/hincrbyfloat.mdx +34 -0
  69. package/docs/commands/hash/hkeys.mdx +28 -0
  70. package/docs/commands/hash/hlen.mdx +28 -0
  71. package/docs/commands/hash/hmget.mdx +33 -0
  72. package/docs/commands/hash/hpersist.mdx +37 -0
  73. package/docs/commands/hash/hpexpire.mdx +50 -0
  74. package/docs/commands/hash/hpexpireat.mdx +48 -0
  75. package/docs/commands/hash/hpexpiretime.mdx +35 -0
  76. package/docs/commands/hash/hpttl.mdx +35 -0
  77. package/docs/commands/hash/hrandfield.mdx +57 -0
  78. package/docs/commands/hash/hscan.mdx +65 -0
  79. package/docs/commands/hash/hset.mdx +32 -0
  80. package/docs/commands/hash/hsetex.mdx +186 -0
  81. package/docs/commands/hash/hsetnx.mdx +30 -0
  82. package/docs/commands/hash/hstrlen.mdx +28 -0
  83. package/docs/commands/hash/httl.mdx +35 -0
  84. package/docs/commands/hash/hvals.mdx +29 -0
  85. package/docs/commands/json/arrappend.mdx +35 -0
  86. package/docs/commands/json/arrindex.mdx +37 -0
  87. package/docs/commands/json/arrinsert.mdx +34 -0
  88. package/docs/commands/json/arrlen.mdx +26 -0
  89. package/docs/commands/json/arrpop.mdx +36 -0
  90. package/docs/commands/json/arrtrim.mdx +34 -0
  91. package/docs/commands/json/clear.mdx +30 -0
  92. package/docs/commands/json/del.mdx +26 -0
  93. package/docs/commands/json/forget.mdx +26 -0
  94. package/docs/commands/json/get.mdx +53 -0
  95. package/docs/commands/json/merge.mdx +32 -0
  96. package/docs/commands/json/mget.mdx +27 -0
  97. package/docs/commands/json/mset.mdx +26 -0
  98. package/docs/commands/json/numincrby.mdx +33 -0
  99. package/docs/commands/json/nummultby.mdx +33 -0
  100. package/docs/commands/json/objkeys.mdx +27 -0
  101. package/docs/commands/json/objlen.mdx +27 -0
  102. package/docs/commands/json/set.mdx +42 -0
  103. package/docs/commands/json/strappend.mdx +32 -0
  104. package/docs/commands/json/strlen.mdx +26 -0
  105. package/docs/commands/json/toggle.mdx +28 -0
  106. package/docs/commands/json/type.mdx +28 -0
  107. package/docs/commands/list/lindex.mdx +32 -0
  108. package/docs/commands/list/linsert.mdx +41 -0
  109. package/docs/commands/list/llen.mdx +26 -0
  110. package/docs/commands/list/lmove.mdx +34 -0
  111. package/docs/commands/list/lpop.mdx +37 -0
  112. package/docs/commands/list/lpos.mdx +56 -0
  113. package/docs/commands/list/lpush.mdx +32 -0
  114. package/docs/commands/list/lpushx.mdx +38 -0
  115. package/docs/commands/list/lrange.mdx +37 -0
  116. package/docs/commands/list/lrem.mdx +33 -0
  117. package/docs/commands/list/lset.mdx +34 -0
  118. package/docs/commands/list/ltrim.mdx +33 -0
  119. package/docs/commands/list/rpop.mdx +37 -0
  120. package/docs/commands/list/rpush.mdx +32 -0
  121. package/docs/commands/list/rpushx.mdx +38 -0
  122. package/docs/commands/overview.mdx +692 -0
  123. package/docs/commands/pubsub/psubscribe.mdx +36 -0
  124. package/docs/commands/pubsub/publish.mdx +27 -0
  125. package/docs/commands/pubsub/subscribe.mdx +28 -0
  126. package/docs/commands/scripts/eval.mdx +36 -0
  127. package/docs/commands/scripts/eval_ro.mdx +36 -0
  128. package/docs/commands/scripts/evalsha.mdx +36 -0
  129. package/docs/commands/scripts/evalsha_ro.mdx +36 -0
  130. package/docs/commands/scripts/script_exists.mdx +26 -0
  131. package/docs/commands/scripts/script_flush.mdx +28 -0
  132. package/docs/commands/scripts/script_load.mdx +28 -0
  133. package/docs/commands/server/dbsize.mdx +22 -0
  134. package/docs/commands/server/flushall.mdx +25 -0
  135. package/docs/commands/server/flushdb.mdx +25 -0
  136. package/docs/commands/set/sadd.mdx +32 -0
  137. package/docs/commands/set/scard.mdx +26 -0
  138. package/docs/commands/set/sdiff.mdx +27 -0
  139. package/docs/commands/set/sdiffstore.mdx +32 -0
  140. package/docs/commands/set/sinter.mdx +27 -0
  141. package/docs/commands/set/sinterstore.mdx +33 -0
  142. package/docs/commands/set/sismember.mdx +30 -0
  143. package/docs/commands/set/smembers.mdx +25 -0
  144. package/docs/commands/set/smismember.mdx +31 -0
  145. package/docs/commands/set/smove.mdx +34 -0
  146. package/docs/commands/set/spop.mdx +36 -0
  147. package/docs/commands/set/srandmember.mdx +36 -0
  148. package/docs/commands/set/srem.mdx +29 -0
  149. package/docs/commands/set/sscan.mdx +39 -0
  150. package/docs/commands/set/sunion.mdx +27 -0
  151. package/docs/commands/set/sunionstore.mdx +33 -0
  152. package/docs/commands/stream/xack.mdx +37 -0
  153. package/docs/commands/stream/xackdel.mdx +211 -0
  154. package/docs/commands/stream/xadd.mdx +137 -0
  155. package/docs/commands/stream/xautoclaim.mdx +80 -0
  156. package/docs/commands/stream/xclaim.mdx +84 -0
  157. package/docs/commands/stream/xdel.mdx +34 -0
  158. package/docs/commands/stream/xdelex.mdx +119 -0
  159. package/docs/commands/stream/xgroup.mdx +141 -0
  160. package/docs/commands/stream/xinfo.mdx +77 -0
  161. package/docs/commands/stream/xlen.mdx +22 -0
  162. package/docs/commands/stream/xpending.mdx +75 -0
  163. package/docs/commands/stream/xrange.mdx +59 -0
  164. package/docs/commands/stream/xread.mdx +65 -0
  165. package/docs/commands/stream/xreadgroup.mdx +87 -0
  166. package/docs/commands/stream/xrevrange.mdx +65 -0
  167. package/docs/commands/stream/xtrim.mdx +75 -0
  168. package/docs/commands/string/append.mdx +28 -0
  169. package/docs/commands/string/decr.mdx +27 -0
  170. package/docs/commands/string/decrby.mdx +30 -0
  171. package/docs/commands/string/get.mdx +34 -0
  172. package/docs/commands/string/getdel.mdx +29 -0
  173. package/docs/commands/string/getrange.mdx +34 -0
  174. package/docs/commands/string/getset.mdx +28 -0
  175. package/docs/commands/string/incr.mdx +27 -0
  176. package/docs/commands/string/incrby.mdx +30 -0
  177. package/docs/commands/string/incrbyfloat.mdx +30 -0
  178. package/docs/commands/string/mget.mdx +31 -0
  179. package/docs/commands/string/mset.mdx +32 -0
  180. package/docs/commands/string/msetnx.mdx +29 -0
  181. package/docs/commands/string/set.mdx +79 -0
  182. package/docs/commands/string/setrange.mdx +38 -0
  183. package/docs/commands/string/strlen.mdx +26 -0
  184. package/docs/commands/transaction.mdx +22 -0
  185. package/docs/commands/zset/zadd.mdx +102 -0
  186. package/docs/commands/zset/zcard.mdx +31 -0
  187. package/docs/commands/zset/zcount.mdx +47 -0
  188. package/docs/commands/zset/zdiffstore.mdx +33 -0
  189. package/docs/commands/zset/zincrby.mdx +37 -0
  190. package/docs/commands/zset/zinterstore.mdx +98 -0
  191. package/docs/commands/zset/zlexcount.mdx +43 -0
  192. package/docs/commands/zset/zmscore.mdx +34 -0
  193. package/docs/commands/zset/zpopmax.mdx +25 -0
  194. package/docs/commands/zset/zpopmin.mdx +25 -0
  195. package/docs/commands/zset/zrange.mdx +85 -0
  196. package/docs/commands/zset/zrank.mdx +29 -0
  197. package/docs/commands/zset/zrem.mdx +33 -0
  198. package/docs/commands/zset/zremrangebylex.mdx +32 -0
  199. package/docs/commands/zset/zremrangebyrank.mdx +32 -0
  200. package/docs/commands/zset/zremrangebyscore.mdx +32 -0
  201. package/docs/commands/zset/zrevrank.mdx +29 -0
  202. package/docs/commands/zset/zscan.mdx +58 -0
  203. package/docs/commands/zset/zscore.mdx +34 -0
  204. package/docs/commands/zset/zunionstore.mdx +98 -0
  205. package/docs/deployment.mdx +117 -0
  206. package/docs/developing.mdx +118 -0
  207. package/docs/getstarted.mdx +68 -0
  208. package/docs/overview.mdx +29 -0
  209. package/docs/pipelining/auto-pipeline.mdx +108 -0
  210. package/docs/pipelining/pipeline-transaction.mdx +65 -0
  211. package/docs/retries.mdx +24 -0
  212. package/docs/troubleshooting.mdx +80 -0
  213. package/{error-BNzLTXJG.d.mts → error-4e36-PC0.d.mts} +838 -8
  214. package/{error-BNzLTXJG.d.ts → error-4e36-PC0.d.ts} +838 -8
  215. package/fastly.d.mts +2 -2
  216. package/fastly.d.ts +2 -2
  217. package/fastly.js +557 -4
  218. package/fastly.mjs +1 -1
  219. package/nodejs.d.mts +34 -2
  220. package/nodejs.d.ts +34 -2
  221. package/nodejs.js +586 -4
  222. package/nodejs.mjs +30 -1
  223. package/package.json +16 -5
  224. package/src/pkg/auto-pipeline.ts +284 -0
  225. package/src/pkg/commands/append.ts +12 -0
  226. package/src/pkg/commands/arcount.ts +14 -0
  227. package/src/pkg/commands/ardel.ts +19 -0
  228. package/src/pkg/commands/ardelrange.ts +19 -0
  229. package/src/pkg/commands/arget.ts +17 -0
  230. package/src/pkg/commands/argetrange.ts +20 -0
  231. package/src/pkg/commands/argrep.ts +109 -0
  232. package/src/pkg/commands/arinfo.ts +88 -0
  233. package/src/pkg/commands/arinsert.ts +24 -0
  234. package/src/pkg/commands/arlastitems.ts +29 -0
  235. package/src/pkg/commands/arlen.ts +23 -0
  236. package/src/pkg/commands/armget.ts +18 -0
  237. package/src/pkg/commands/armset.ts +26 -0
  238. package/src/pkg/commands/arnext.ts +20 -0
  239. package/src/pkg/commands/arop.ts +48 -0
  240. package/src/pkg/commands/arring.ts +23 -0
  241. package/src/pkg/commands/arscan.ts +44 -0
  242. package/src/pkg/commands/arseek.ts +17 -0
  243. package/src/pkg/commands/arset.ts +20 -0
  244. package/src/pkg/commands/bitcount.ts +30 -0
  245. package/src/pkg/commands/bitfield.ts +50 -0
  246. package/src/pkg/commands/bitop.ts +35 -0
  247. package/src/pkg/commands/bitpos.ts +15 -0
  248. package/src/pkg/commands/client_setinfo.ts +17 -0
  249. package/src/pkg/commands/command.ts +142 -0
  250. package/src/pkg/commands/copy.ts +22 -0
  251. package/src/pkg/commands/dbsize.ts +12 -0
  252. package/src/pkg/commands/decr.ts +12 -0
  253. package/src/pkg/commands/decrby.ts +12 -0
  254. package/src/pkg/commands/del.ts +12 -0
  255. package/src/pkg/commands/echo.ts +12 -0
  256. package/src/pkg/commands/eval.ts +18 -0
  257. package/src/pkg/commands/evalRo.ts +18 -0
  258. package/src/pkg/commands/evalsha.ts +18 -0
  259. package/src/pkg/commands/evalshaRo.ts +18 -0
  260. package/src/pkg/commands/exec.ts +23 -0
  261. package/src/pkg/commands/exists.ts +12 -0
  262. package/src/pkg/commands/expire.ts +13 -0
  263. package/src/pkg/commands/expireat.ts +16 -0
  264. package/src/pkg/commands/fcall.ts +15 -0
  265. package/src/pkg/commands/fcall_ro.ts +18 -0
  266. package/src/pkg/commands/flushall.ts +15 -0
  267. package/src/pkg/commands/flushdb.ts +15 -0
  268. package/src/pkg/commands/function_delete.ts +12 -0
  269. package/src/pkg/commands/function_flush.ts +12 -0
  270. package/src/pkg/commands/function_list.ts +77 -0
  271. package/src/pkg/commands/function_load.ts +31 -0
  272. package/src/pkg/commands/function_stats.ts +42 -0
  273. package/src/pkg/commands/geo_add.ts +54 -0
  274. package/src/pkg/commands/geo_dist.ts +19 -0
  275. package/src/pkg/commands/geo_hash.ts +23 -0
  276. package/src/pkg/commands/geo_pos.ts +39 -0
  277. package/src/pkg/commands/geo_search.ts +140 -0
  278. package/src/pkg/commands/geo_search_store.ts +69 -0
  279. package/src/pkg/commands/get.ts +15 -0
  280. package/src/pkg/commands/getbit.ts +12 -0
  281. package/src/pkg/commands/getdel.ts +15 -0
  282. package/src/pkg/commands/getex.ts +36 -0
  283. package/src/pkg/commands/getrange.ts +15 -0
  284. package/src/pkg/commands/getset.ts +15 -0
  285. package/src/pkg/commands/hdel.ts +12 -0
  286. package/src/pkg/commands/hexists.ts +12 -0
  287. package/src/pkg/commands/hexpire.ts +30 -0
  288. package/src/pkg/commands/hexpireat.ts +30 -0
  289. package/src/pkg/commands/hexpiretime.ts +13 -0
  290. package/src/pkg/commands/hget.ts +18 -0
  291. package/src/pkg/commands/hgetall.ts +44 -0
  292. package/src/pkg/commands/hgetdel.ts +30 -0
  293. package/src/pkg/commands/hgetex.ts +56 -0
  294. package/src/pkg/commands/hincrby.ts +15 -0
  295. package/src/pkg/commands/hincrbyfloat.ts +15 -0
  296. package/src/pkg/commands/hkeys.ts +12 -0
  297. package/src/pkg/commands/hlen.ts +12 -0
  298. package/src/pkg/commands/hmget.ts +53 -0
  299. package/src/pkg/commands/hmset.ts +14 -0
  300. package/src/pkg/commands/hpersist.ts +13 -0
  301. package/src/pkg/commands/hpexpire.ts +30 -0
  302. package/src/pkg/commands/hpexpireat.ts +30 -0
  303. package/src/pkg/commands/hpexpiretime.ts +13 -0
  304. package/src/pkg/commands/hpttl.ts +13 -0
  305. package/src/pkg/commands/hrandfield.ts +52 -0
  306. package/src/pkg/commands/hscan.ts +31 -0
  307. package/src/pkg/commands/hset.ts +15 -0
  308. package/src/pkg/commands/hsetex.ts +59 -0
  309. package/src/pkg/commands/hsetnx.ts +15 -0
  310. package/src/pkg/commands/hstrlen.ts +12 -0
  311. package/src/pkg/commands/httl.ts +13 -0
  312. package/src/pkg/commands/hvals.ts +12 -0
  313. package/src/pkg/commands/incr.ts +12 -0
  314. package/src/pkg/commands/incrby.ts +12 -0
  315. package/src/pkg/commands/incrbyfloat.ts +12 -0
  316. package/src/pkg/commands/json_arrappend.ts +18 -0
  317. package/src/pkg/commands/json_arrindex.ts +15 -0
  318. package/src/pkg/commands/json_arrinsert.ts +18 -0
  319. package/src/pkg/commands/json_arrlen.ts +15 -0
  320. package/src/pkg/commands/json_arrpop.ts +15 -0
  321. package/src/pkg/commands/json_arrtrim.ts +19 -0
  322. package/src/pkg/commands/json_clear.ts +12 -0
  323. package/src/pkg/commands/json_del.ts +12 -0
  324. package/src/pkg/commands/json_forget.ts +12 -0
  325. package/src/pkg/commands/json_get.ts +45 -0
  326. package/src/pkg/commands/json_merge.ts +18 -0
  327. package/src/pkg/commands/json_mget.ts +12 -0
  328. package/src/pkg/commands/json_mset.ts +27 -0
  329. package/src/pkg/commands/json_numincrby.ts +15 -0
  330. package/src/pkg/commands/json_nummultby.ts +15 -0
  331. package/src/pkg/commands/json_objkeys.ts +15 -0
  332. package/src/pkg/commands/json_objlen.ts +15 -0
  333. package/src/pkg/commands/json_resp.ts +11 -0
  334. package/src/pkg/commands/json_set.ts +35 -0
  335. package/src/pkg/commands/json_strappend.ts +15 -0
  336. package/src/pkg/commands/json_strlen.ts +15 -0
  337. package/src/pkg/commands/json_toggle.ts +12 -0
  338. package/src/pkg/commands/json_type.ts +12 -0
  339. package/src/pkg/commands/keys.ts +12 -0
  340. package/src/pkg/commands/lindex.ts +11 -0
  341. package/src/pkg/commands/linsert.ts +10 -0
  342. package/src/pkg/commands/llen.ts +12 -0
  343. package/src/pkg/commands/lmove.ts +20 -0
  344. package/src/pkg/commands/lmpop.ts +19 -0
  345. package/src/pkg/commands/lpop.ts +18 -0
  346. package/src/pkg/commands/lpos.ts +26 -0
  347. package/src/pkg/commands/lpush.ts +12 -0
  348. package/src/pkg/commands/lpushx.ts +12 -0
  349. package/src/pkg/commands/lrange.ts +11 -0
  350. package/src/pkg/commands/lrem.ts +10 -0
  351. package/src/pkg/commands/lset.ts +8 -0
  352. package/src/pkg/commands/ltrim.ts +8 -0
  353. package/src/pkg/commands/mget.ts +15 -0
  354. package/src/pkg/commands/mod.ts +222 -0
  355. package/src/pkg/commands/mset.ts +12 -0
  356. package/src/pkg/commands/msetnx.ts +12 -0
  357. package/src/pkg/commands/persist.ts +12 -0
  358. package/src/pkg/commands/pexpire.ts +16 -0
  359. package/src/pkg/commands/pexpireat.ts +16 -0
  360. package/src/pkg/commands/pfadd.ts +11 -0
  361. package/src/pkg/commands/pfcount.ts +11 -0
  362. package/src/pkg/commands/pfmerge.ts +11 -0
  363. package/src/pkg/commands/ping.ts +15 -0
  364. package/src/pkg/commands/psetex.ts +14 -0
  365. package/src/pkg/commands/psubscribe.ts +26 -0
  366. package/src/pkg/commands/pttl.ts +12 -0
  367. package/src/pkg/commands/publish.ts +12 -0
  368. package/src/pkg/commands/randomkey.ts +12 -0
  369. package/src/pkg/commands/rename.ts +12 -0
  370. package/src/pkg/commands/renamenx.ts +12 -0
  371. package/src/pkg/commands/rpop.ts +21 -0
  372. package/src/pkg/commands/rpush.ts +12 -0
  373. package/src/pkg/commands/rpushx.ts +12 -0
  374. package/src/pkg/commands/sadd.ts +15 -0
  375. package/src/pkg/commands/scan.ts +63 -0
  376. package/src/pkg/commands/scard.ts +11 -0
  377. package/src/pkg/commands/script_exists.ts +15 -0
  378. package/src/pkg/commands/script_flush.ts +22 -0
  379. package/src/pkg/commands/script_load.ts +12 -0
  380. package/src/pkg/commands/sdiff.ts +11 -0
  381. package/src/pkg/commands/sdiffstore.ts +14 -0
  382. package/src/pkg/commands/search/command-builder.ts +162 -0
  383. package/src/pkg/commands/search/index.ts +4 -0
  384. package/src/pkg/commands/search/schema-builder.ts +320 -0
  385. package/src/pkg/commands/search/search.ts +218 -0
  386. package/src/pkg/commands/search/types.ts +1029 -0
  387. package/src/pkg/commands/search/utils.ts +275 -0
  388. package/src/pkg/commands/set.ts +52 -0
  389. package/src/pkg/commands/setbit.ts +15 -0
  390. package/src/pkg/commands/setex.ts +11 -0
  391. package/src/pkg/commands/setnx.ts +11 -0
  392. package/src/pkg/commands/setrange.ts +15 -0
  393. package/src/pkg/commands/sinter.ts +11 -0
  394. package/src/pkg/commands/sintercard.ts +19 -0
  395. package/src/pkg/commands/sinterstore.ts +14 -0
  396. package/src/pkg/commands/sismember.ts +11 -0
  397. package/src/pkg/commands/smembers.ts +12 -0
  398. package/src/pkg/commands/smismember.ts +17 -0
  399. package/src/pkg/commands/smove.ts +14 -0
  400. package/src/pkg/commands/spop.ts +18 -0
  401. package/src/pkg/commands/srandmember.ts +18 -0
  402. package/src/pkg/commands/srem.ts +11 -0
  403. package/src/pkg/commands/sscan.ts +31 -0
  404. package/src/pkg/commands/strlen.ts +12 -0
  405. package/src/pkg/commands/subscribe.ts +254 -0
  406. package/src/pkg/commands/sunion.ts +12 -0
  407. package/src/pkg/commands/sunionstore.ts +15 -0
  408. package/src/pkg/commands/time.ts +10 -0
  409. package/src/pkg/commands/touch.ts +12 -0
  410. package/src/pkg/commands/ttl.ts +12 -0
  411. package/src/pkg/commands/type.ts +13 -0
  412. package/src/pkg/commands/types.ts +201 -0
  413. package/src/pkg/commands/unlink.ts +12 -0
  414. package/src/pkg/commands/vector/index.ts +11 -0
  415. package/src/pkg/commands/vector/types.ts +63 -0
  416. package/src/pkg/commands/vector/utils.ts +67 -0
  417. package/src/pkg/commands/vector/vector.ts +131 -0
  418. package/src/pkg/commands/vector_add.ts +18 -0
  419. package/src/pkg/commands/vector_count.ts +11 -0
  420. package/src/pkg/commands/vector_create.ts +28 -0
  421. package/src/pkg/commands/vector_del.ts +13 -0
  422. package/src/pkg/commands/vector_drop.ts +13 -0
  423. package/src/pkg/commands/vector_get.ts +18 -0
  424. package/src/pkg/commands/vector_info.ts +25 -0
  425. package/src/pkg/commands/vector_query.ts +24 -0
  426. package/src/pkg/commands/xack.ts +16 -0
  427. package/src/pkg/commands/xackdel.ts +21 -0
  428. package/src/pkg/commands/xadd.ts +70 -0
  429. package/src/pkg/commands/xautoclaim.ts +31 -0
  430. package/src/pkg/commands/xclaim.ts +56 -0
  431. package/src/pkg/commands/xdel.ts +16 -0
  432. package/src/pkg/commands/xdelex.ts +25 -0
  433. package/src/pkg/commands/xgroup.ts +101 -0
  434. package/src/pkg/commands/xinfo.ts +28 -0
  435. package/src/pkg/commands/xlen.ts +12 -0
  436. package/src/pkg/commands/xpending.ts +44 -0
  437. package/src/pkg/commands/xrange.ts +49 -0
  438. package/src/pkg/commands/xread.ts +78 -0
  439. package/src/pkg/commands/xreadgroup.ts +74 -0
  440. package/src/pkg/commands/xrevrange.ts +48 -0
  441. package/src/pkg/commands/xtrim.ts +25 -0
  442. package/src/pkg/commands/zadd.ts +54 -0
  443. package/src/pkg/commands/zcard.ts +12 -0
  444. package/src/pkg/commands/zcount.ts +14 -0
  445. package/src/pkg/commands/zdiffstore.ts +15 -0
  446. package/src/pkg/commands/zincrby.ts +14 -0
  447. package/src/pkg/commands/zinterstore.ts +51 -0
  448. package/src/pkg/commands/zlexcount.ts +11 -0
  449. package/src/pkg/commands/zmscore.ts +16 -0
  450. package/src/pkg/commands/zpopmax.ts +18 -0
  451. package/src/pkg/commands/zpopmin.ts +18 -0
  452. package/src/pkg/commands/zrange.ts +72 -0
  453. package/src/pkg/commands/zrank.ts +14 -0
  454. package/src/pkg/commands/zrem.ts +11 -0
  455. package/src/pkg/commands/zremrangebylex.ts +11 -0
  456. package/src/pkg/commands/zremrangebyrank.ts +14 -0
  457. package/src/pkg/commands/zremrangebyscore.ts +18 -0
  458. package/src/pkg/commands/zrevrank.ts +14 -0
  459. package/src/pkg/commands/zscan.ts +31 -0
  460. package/src/pkg/commands/zscore.ts +15 -0
  461. package/src/pkg/commands/zunion.ts +54 -0
  462. package/src/pkg/commands/zunionstore.ts +52 -0
  463. package/src/pkg/error.ts +28 -0
  464. package/src/pkg/http.ts +458 -0
  465. package/src/pkg/index.ts +1 -0
  466. package/src/pkg/pipeline.ts +2041 -0
  467. package/src/pkg/redis.ts +2130 -0
  468. package/src/pkg/script.ts +100 -0
  469. package/src/pkg/scriptRo.ts +98 -0
  470. package/src/pkg/types.ts +35 -0
  471. package/src/pkg/util.ts +115 -0
  472. package/src/platforms/cloudflare.ts +162 -0
  473. package/src/platforms/fastly.ts +105 -0
  474. package/src/platforms/nodejs.ts +231 -0
  475. package/src/version.ts +1 -0
@@ -0,0 +1,28 @@
1
+ ---
2
+ title: HDEL
3
+ description: Deletes one or more hash fields.
4
+ ---
5
+
6
+
7
+ ## Arguments
8
+
9
+ <ParamField body="key"type="string" required>
10
+ The key to get.
11
+ </ParamField>
12
+
13
+ <ParamField body="fields" required>
14
+ One or more fields to delete.
15
+ </ParamField>
16
+
17
+ ## Response
18
+
19
+ <ResponseField type="integer" required>
20
+ The number of fields that were removed from the hash.
21
+ </ResponseField>
22
+
23
+ <RequestExample>
24
+ ```ts Example
25
+ await redis.hdel(key, 'field1', 'field2');
26
+ // returns 5
27
+ ```
28
+ </RequestExample>
@@ -0,0 +1,30 @@
1
+ ---
2
+ title: HEXISTS
3
+ description: Checks if a field exists in a hash.
4
+ ---
5
+
6
+
7
+ ## Arguments
8
+
9
+ <ParamField body="key"type="string" required>
10
+ The key to get.
11
+ </ParamField>
12
+
13
+ <ParamField body="field"type="string" required>
14
+ The field to check.
15
+ </ParamField>
16
+
17
+ ## Response
18
+
19
+ <ResponseField type="integer" required>
20
+ `1` if the hash contains `field`. `0` if the hash does not contain `field`, or `key` does not exist.
21
+ </ResponseField>
22
+
23
+ <RequestExample>
24
+ ```ts Example
25
+ await redis.hset("key", "field", "value");
26
+ const exists = await redis.hexists("key", "field");
27
+
28
+ console.log(exists); // 1
29
+ ```
30
+ </RequestExample>
@@ -0,0 +1,49 @@
1
+ ---
2
+ title: HEXPIRE
3
+ description: Sets an expiration time for one or more fields in a hash.
4
+ ---
5
+
6
+ ## Arguments
7
+
8
+ <ParamField body="key" type="string" required>
9
+ The key of the hash.
10
+ </ParamField>
11
+
12
+ <ParamField body="field" type="string | number | (string | number)[]" required>
13
+ The field or fields to set an expiration time for.
14
+ </ParamField>
15
+
16
+ <ParamField body="seconds" type="number" required>
17
+ The time-to-live (TTL) in seconds.
18
+ </ParamField>
19
+
20
+ <ParamField body="option" type="string" optional>
21
+ Optional condition for setting the expiration:
22
+ - `NX`: Set the expiration only if the field does not already have an expiration.
23
+ - `XX`: Set the expiration only if the field already has an expiration.
24
+ - `GT`: Set the expiration only if the new TTL is greater than the current TTL.
25
+ - `LT`: Set the expiration only if the new TTL is less than the current TTL.
26
+ </ParamField>
27
+
28
+ ## Response
29
+
30
+ <ResponseField type="number[]" required>
31
+ A list of integers indicating whether the expiry was successfully set.
32
+
33
+ - `-2` if the field does not exist in the hash or if key doesn't exist.
34
+ - `0` if the expiration was not set due to the condition.
35
+ - `1` if the expiration was successfully set.
36
+ - `2` if called with 0 seconds/milliseconds or a past Unix time.
37
+
38
+ For more details, see [HEXPIRE documentation](/redis/commands/hash/hexpire).
39
+ </ResponseField>
40
+
41
+
42
+ <RequestExample>
43
+ ```ts Example
44
+ await redis.hset("my-key", "my-field", "my-value");
45
+ const expirationSet = await redis.hexpire("my-key", "my-field", 1);
46
+
47
+ console.log(expirationSet); // 1
48
+ ```
49
+ </RequestExample>
@@ -0,0 +1,48 @@
1
+ ---
2
+ title: HEXPIREAT
3
+ description: Sets an expiration time for field(s) in a hash in seconds since the Unix epoch.
4
+ ---
5
+
6
+ ## Arguments
7
+
8
+ <ParamField body="key" type="string" required>
9
+ The key of the hash.
10
+ </ParamField>
11
+
12
+ <ParamField body="fields" type="string | number | (string | number)[]" required>
13
+ The field(s) to set an expiration time for.
14
+ </ParamField>
15
+
16
+ <ParamField body="timestamp" type="number" required>
17
+ The expiration time as a Unix timestamp in seconds.
18
+ </ParamField>
19
+
20
+ <ParamField body="option" type="string" optional>
21
+ Optional condition for setting the expiration:
22
+ - `NX`: Set the expiration only if the field does not already have an expiration.
23
+ - `XX`: Set the expiration only if the field already has an expiration.
24
+ - `GT`: Set the expiration only if the new TTL is greater than the current TTL.
25
+ - `LT`: Set the expiration only if the new TTL is less than the current TTL.
26
+ </ParamField>
27
+
28
+ ## Response
29
+
30
+ <ResponseField type="number[]" required>
31
+ A list of integers indicating whether the expiry was successfully set.
32
+
33
+ - `-2` if the field does not exist in the hash or if key doesn't exist.
34
+ - `0` if the expiration was not set due to the condition.
35
+ - `1` if the expiration was successfully set.
36
+ - `2` if called with 0 seconds/milliseconds or a past Unix time.
37
+
38
+ For more details, see [HEXPIREAT documentation](/redis/commands/hash/hexpireat).
39
+ </ResponseField>
40
+
41
+ <RequestExample>
42
+ ```ts Example
43
+ await redis.hset("my-key", "my-field", "my-value");
44
+ const expirationSet = await redis.hexpireat("my-key", "my-field", Math.floor(Date.now() / 1000) + 10);
45
+
46
+ console.log(expirationSet); // [1]
47
+ ```
48
+ </RequestExample>
@@ -0,0 +1,35 @@
1
+ ---
2
+ title: HEXPIRETIME
3
+ description: Retrieves the expiration time of field(s) in a hash in seconds.
4
+ ---
5
+
6
+ ## Arguments
7
+
8
+ <ParamField body="key" type="string" required>
9
+ The key of the hash.
10
+ </ParamField>
11
+
12
+ <ParamField body="fields" type="string | number | (string | number)[]" required>
13
+ The field(s) to retrieve the expiration time for.
14
+ </ParamField>
15
+
16
+ ## Response
17
+
18
+ <ResponseField type="number[]" required>
19
+ The expiration time in seconds since the Unix epoch for each field.
20
+
21
+ - `-2` if the field does not exist in the hash or if the key doesn't exist.
22
+ - `-1` if the field exists but has no associated expiration.
23
+
24
+ For more details, see [HEXPIRETIME documentation](/redis/commands/hash/hexpiretime).
25
+ </ResponseField>
26
+
27
+ <RequestExample>
28
+ ```ts Example
29
+ await redis.hset("my-key", "my-field", "my-value");
30
+ await redis.hexpireat("my-key", "my-field", Math.floor(Date.now() / 1000) + 10);
31
+ const expireTime = await redis.hexpiretime("my-key", "my-field");
32
+
33
+ console.log(expireTime); // e.g., [1697059200]
34
+ ```
35
+ </RequestExample>
@@ -0,0 +1,29 @@
1
+ ---
2
+ title: HGET
3
+ description: Retrieves the value of a hash field.
4
+ ---
5
+
6
+
7
+ ## Arguments
8
+
9
+ <ParamField body="key"type="string" required>
10
+ The key to get.
11
+ </ParamField>
12
+
13
+ <ParamField body="field"type="string" required>
14
+ The field to get.
15
+ </ParamField>
16
+
17
+ ## Response
18
+
19
+ <ResponseField type="TValue | null" required>
20
+ The value of the field, or `null`, when field is not present in the hash or key does not exist.
21
+ </ResponseField>
22
+
23
+ <RequestExample>
24
+ ```ts Example
25
+ await redis.hset("key", {field: "value"});
26
+ const field = await redis.hget("key", "field");
27
+ console.log(field); // "value"
28
+ ```
29
+ </RequestExample>
@@ -0,0 +1,27 @@
1
+ ---
2
+ title: HGETALL
3
+ description: Retrieves all fields from a hash.
4
+ ---
5
+
6
+ ## Arguments
7
+
8
+ <ParamField body="key" type="string" required>
9
+ The key to get.
10
+ </ParamField>
11
+
12
+ ## Response
13
+
14
+ <ResponseField type="TValue | null" required>
15
+ An object with all fields in the hash.
16
+ </ResponseField>
17
+
18
+ <RequestExample>
19
+ ```ts Example
20
+ await redis.hset("key", {
21
+ field1: "value1",
22
+ field2: "value2",
23
+ });
24
+ const hash = await redis.hgetall("key");
25
+ console.log(hash); // { field1: "value1", field2: "value2" }
26
+ ```
27
+ </RequestExample>
@@ -0,0 +1,67 @@
1
+ ---
2
+ title: HGETDEL
3
+ description: Get and delete hash fields atomically.
4
+ ---
5
+
6
+ The `HGETDEL` command returns the values of the specified fields and then atomically deletes them from the hash. This is useful when you need to retrieve and remove data in a single atomic operation.
7
+
8
+ ## Arguments
9
+
10
+ <ParamField body="key" type="string" required>
11
+ The key of the hash.
12
+ </ParamField>
13
+
14
+ <ParamField body="fields" type="...string[]" required>
15
+ One or more field names to get and delete.
16
+ </ParamField>
17
+
18
+ ## Response
19
+
20
+ <ResponseField type="Record<string, TValue | null> | null" required>
21
+ An object containing the field names and their values in the format `{[fieldName: string]: TValue | null}`. Returns `null` for fields that do not exist. If the hash doesn't exist or all fields are non-existent, `null` is returned.
22
+ </ResponseField>
23
+
24
+ <RequestExample>
25
+ ```ts Basic Example
26
+ // Set some hash fields
27
+ await redis.hset("user:123", { name: "John", age: "30", email: "john@example.com" });
28
+
29
+ // Get and delete specific fields
30
+ const result = await redis.hgetdel("user:123", "name", "email");
31
+ console.log(result); // { name: "John", email: "john@example.com" }
32
+
33
+ // Verify fields were deleted
34
+ const name = await redis.hget("user:123", "name");
35
+ console.log(name); // null
36
+ ```
37
+
38
+ ```ts Multiple Fields
39
+ await redis.hset("session:abc", {
40
+ token: "xyz123",
41
+ user: "john",
42
+ expires: "2024-12-31"
43
+ });
44
+
45
+ // Get and delete all fields
46
+ const session = await redis.hgetdel("session:abc", "token", "user", "expires");
47
+ console.log(session);
48
+ // { token: "xyz123", user: "john", expires: "2024-12-31" }
49
+ ```
50
+
51
+ ```ts Non-existent Fields
52
+ await redis.hset("user:456", { name: "Jane" });
53
+
54
+ // Get and delete with non-existent field
55
+ const result = await redis.hgetdel("user:456", "name", "email");
56
+ console.log(result); // { name: "Jane", email: null }
57
+ ```
58
+ </RequestExample>
59
+
60
+ ## Use Cases
61
+
62
+ - **Session Management**: Retrieve and invalidate session data atomically
63
+ - **Cache Cleanup**: Get cached data while removing it from storage
64
+ - **Queue Processing**: Fetch and remove job data in a single operation
65
+ - **Temporary Data**: Retrieve one-time use tokens or codes while deleting them
66
+
67
+
@@ -0,0 +1,123 @@
1
+ ---
2
+ title: HGETEX
3
+ description: Get hash fields with expiration support.
4
+ ---
5
+
6
+ The `HGETEX` command returns the values of the specified fields and optionally sets their expiration time or TTL. This allows you to retrieve hash data while managing its lifetime in a single operation.
7
+
8
+ ## Arguments
9
+
10
+ <ParamField body="key" type="string" required>
11
+ The key of the hash.
12
+ </ParamField>
13
+
14
+ <ParamField body="options" type="object" required>
15
+ Expiration options for the hash fields. The options are mutually exclusive - you can only use one at a time.
16
+
17
+ <Expandable title="properties">
18
+ <ParamField body="ex" type="number">
19
+ Set expiration time in seconds. Cannot be used with other expiration options.
20
+ </ParamField>
21
+
22
+ <ParamField body="px" type="number">
23
+ Set expiration time in milliseconds. Cannot be used with other expiration options.
24
+ </ParamField>
25
+
26
+ <ParamField body="exat" type="number">
27
+ Set expiration as Unix timestamp in seconds. Cannot be used with other expiration options.
28
+ </ParamField>
29
+
30
+ <ParamField body="pxat" type="number">
31
+ Set expiration as Unix timestamp in milliseconds. Cannot be used with other expiration options.
32
+ </ParamField>
33
+
34
+ <ParamField body="persist" type="true">
35
+ Remove expiration from the hash. Must be set to `true`. Cannot be used with other expiration options.
36
+ </ParamField>
37
+ </Expandable>
38
+ </ParamField>
39
+
40
+ <ParamField body="fields" type="...string[]" required>
41
+ One or more field names to get.
42
+ </ParamField>
43
+
44
+ ## Response
45
+
46
+ <ResponseField type="Record<string, TValue | null> | null" required>
47
+ An object containing the field names and their values in the format `{[fieldName: string]: TValue | null}`. Returns `null` for fields that do not exist. If the hash doesn't exist or all fields are non-existent, `null` is returned.
48
+ </ResponseField>
49
+
50
+ <RequestExample>
51
+ ```ts With EX (seconds)
52
+ await redis.hset("user:123", { name: "John", email: "john@example.com" });
53
+
54
+ // Get fields and set expiration to 60 seconds
55
+ const result = await redis.hgetex("user:123", { ex: 60 }, "name", "email");
56
+ console.log(result); // { name: "John", email: "john@example.com" }
57
+ ```
58
+
59
+ ```ts With PX (milliseconds)
60
+ await redis.hset("session:abc", { token: "xyz123", user: "john" });
61
+
62
+ // Get fields and set expiration to 30000 milliseconds (30 seconds)
63
+ const result = await redis.hgetex("session:abc", { px: 30000 }, "token", "user");
64
+ console.log(result); // { token: "xyz123", user: "john" }
65
+ ```
66
+
67
+ ```ts With EXAT (Unix timestamp in seconds)
68
+ await redis.hset("cache:data", { value: "cached" });
69
+
70
+ // Set expiration to specific timestamp (1 hour from now)
71
+ const futureTime = Math.floor(Date.now() / 1000) + 3600;
72
+ const result = await redis.hgetex("cache:data", { exat: futureTime }, "value");
73
+ console.log(result); // { value: "cached" }
74
+ ```
75
+
76
+ ```ts With PXAT (Unix timestamp in milliseconds)
77
+ await redis.hset("temp:data", { info: "temporary" });
78
+
79
+ // Set expiration to specific timestamp in milliseconds
80
+ const futureTime = Date.now() + 60000; // 1 minute from now
81
+ const result = await redis.hgetex("temp:data", { pxat: futureTime }, "info");
82
+ console.log(result); // { info: "temporary" }
83
+ ```
84
+
85
+ ```ts With PERSIST
86
+ await redis.hset("user:456", { name: "Jane" });
87
+ await redis.expire("user:456", 300); // Set 5 minute expiration
88
+
89
+ // Get fields and remove expiration
90
+ const result = await redis.hgetex("user:456", { persist: true }, "name");
91
+ console.log(result); // { name: "Jane" }
92
+
93
+ // Verify expiration was removed
94
+ const ttl = await redis.ttl("user:456");
95
+ console.log(ttl); // -1 (no expiration)
96
+ ```
97
+
98
+ ```ts Without Expiration Options
99
+ await redis.hset("data:xyz", { field1: "value1", field2: "value2" });
100
+
101
+ // Just get fields without changing expiration
102
+ // Pass an empty object or an object with no expiration properties
103
+ const result = await redis.hgetex("data:xyz", {}, "field1", "field2");
104
+ console.log(result); // { field1: "value1", field2: "value2" }
105
+ ```
106
+
107
+ ```ts Non-existent Fields
108
+ await redis.hset("user:789", { name: "Bob" });
109
+
110
+ // Get fields including one that doesn't exist
111
+ const result = await redis.hgetex("user:789", {}, "name", "email");
112
+ console.log(result); // { name: "Bob", email: null }
113
+ ```
114
+ </RequestExample>
115
+
116
+ ## Use Cases
117
+
118
+ - **Session Management**: Retrieve session data and extend its lifetime
119
+ - **Cache Refresh**: Get cached data and update its TTL
120
+ - **Temporary Data**: Access temporary data while managing its expiration
121
+ - **Rate Limiting**: Fetch rate limit data and reset expiration
122
+
123
+
@@ -0,0 +1,34 @@
1
+ ---
2
+ title: HINCRBY
3
+ description: Increments the value of a hash field by a given amount
4
+ ---
5
+
6
+ ## Arguments
7
+
8
+ <ParamField body="key" type="string" required>
9
+ The key of the hash.
10
+ </ParamField>
11
+
12
+ <ParamField body="field" type="string" required>
13
+ The field to increment
14
+ </ParamField>
15
+
16
+ <ParamField body="increment" type="integer" required>
17
+ How much to increment the field by. Can be negative to subtract.
18
+ </ParamField>
19
+
20
+ ## Response
21
+
22
+ <ResponseField type="integer" required>
23
+ The new value of the field after the increment.
24
+ </ResponseField>
25
+
26
+ <RequestExample>
27
+ ```ts Example
28
+ await redis.hset("key", {
29
+ field: 20,
30
+ });
31
+ const after = await redis.hincrby("key", "field", 2);
32
+ console.log(after); // 22
33
+ ```
34
+ </RequestExample>
@@ -0,0 +1,34 @@
1
+ ---
2
+ title: HINCRBYFLOAT
3
+ description: Increments the value of a hash field by a given float value.
4
+ ---
5
+
6
+ ## Arguments
7
+
8
+ <ParamField body="key" type="string" required>
9
+ The key of the hash.
10
+ </ParamField>
11
+
12
+ <ParamField body="field" type="string" required>
13
+ The field to increment
14
+ </ParamField>
15
+
16
+ <ParamField body="increment" type="float" required>
17
+ How much to increment the field by. Can be negative to subtract.
18
+ </ParamField>
19
+
20
+ ## Response
21
+
22
+ <ResponseField type="float" required>
23
+ The new value of the field after the increment.
24
+ </ResponseField>
25
+
26
+ <RequestExample>
27
+ ```ts Example
28
+ await redis.hset("key", {
29
+ field: 20,
30
+ });
31
+ const after = await redis.hincrby("key", "field", 2.5);
32
+ console.log(after); // 22.5
33
+ ```
34
+ </RequestExample>
@@ -0,0 +1,28 @@
1
+ ---
2
+ title: HKEYS
3
+ description: Return all field names in the hash stored at key.
4
+ ---
5
+
6
+ ## Arguments
7
+
8
+ <ParamField body="key" type="string" required>
9
+ The key of the hash.
10
+ </ParamField>
11
+
12
+
13
+ ## Response
14
+
15
+ <ResponseField type="string[]" required>
16
+ The field names of the hash
17
+ </ResponseField>
18
+
19
+ <RequestExample>
20
+ ```ts Example
21
+ await redis.hset("key", {
22
+ id: 1,
23
+ username: "chronark",
24
+ });
25
+ const fields = await redis.hkeys("key");
26
+ console.log(fields); // ["id", "username"]
27
+ ```
28
+ </RequestExample>
@@ -0,0 +1,28 @@
1
+ ---
2
+ title: HLEN
3
+ description: Returns the number of fields contained in the hash stored at key.
4
+ ---
5
+
6
+ ## Arguments
7
+
8
+ <ParamField body="key" type="string" required>
9
+ The key of the hash.
10
+ </ParamField>
11
+
12
+
13
+ ## Response
14
+
15
+ <ResponseField type="integer" required>
16
+ How many fields are in the hash.
17
+ </ResponseField>
18
+
19
+ <RequestExample>
20
+ ```ts Example
21
+ await redis.hset("key", {
22
+ id: 1,
23
+ username: "chronark",
24
+ });
25
+ const fields = await redis.hlen("key");
26
+ console.log(fields); // 2
27
+ ```
28
+ </RequestExample>
@@ -0,0 +1,33 @@
1
+ ---
2
+ title: HMGET
3
+ description: Return the requested fields and their values.
4
+ ---
5
+
6
+ ## Arguments
7
+
8
+ <ParamField body="key" type="string" required>
9
+ The key of the hash.
10
+ </ParamField>
11
+
12
+ <ParamField body="fields" type="...string[]" required>
13
+ One or more fields to get.
14
+ </ParamField>
15
+
16
+
17
+ ## Response
18
+
19
+ <ResponseField type="Record<string, unknown>" required>
20
+ An object containing the fields and their values.
21
+ </ResponseField>
22
+
23
+ <RequestExample>
24
+ ```ts Example
25
+ await redis.hset("key", {
26
+ id: 1,
27
+ username: "chronark",
28
+ name: "andreas"
29
+ });
30
+ const fields = await redis.hmget("key", "username", "name");
31
+ console.log(fields); // { username: "chronark", name: "andreas" }
32
+ ```
33
+ </RequestExample>
@@ -0,0 +1,37 @@
1
+ ---
2
+ title: HPERSIST
3
+ description: Remove the expiration from one or more fields in a hash.
4
+ ---
5
+
6
+ ## Arguments
7
+
8
+ <ParamField body="key" type="string" required>
9
+ The key of the hash.
10
+ </ParamField>
11
+
12
+ <ParamField body="field" type="string | number | (string | number)[]" required>
13
+ The field or fields to remove the expiration from.
14
+ </ParamField>
15
+
16
+ ## Response
17
+
18
+ <ResponseField type="number[]" required>
19
+ A list of integers indicating the result for each field:
20
+
21
+ - `-2` if the field does not exist in the hash or if the key doesn't exist.
22
+ - `-1` if the field exists but has no associated expiration set.
23
+ - `1` if the expiration was successfully removed.
24
+
25
+ For more details, see [HPERSIST documentation](/redis/commands/hash/hpersist).
26
+ </ResponseField>
27
+
28
+ <RequestExample>
29
+ ```ts Example
30
+ await redis.hset("my-key", "my-field", "my-value");
31
+ await redis.hpexpire("my-key", "my-field", 1000);
32
+
33
+ const expirationRemoved = await redis.hpersist("my-key", "my-field");
34
+
35
+ console.log(expirationRemoved); // [1]
36
+ ```
37
+ </RequestExample>