- Redis官方文档:https://redis.io/commands/ping
- 起始版本:1.0.0
如果没有提供参数返回 PONG。否则返回 msg 本身。
例子:
await client.ping()
// "PONG"
await client.ping('Hello World!')
// "Hello World!"
需要发送的信息,
- Redis官方文档:https://redis.io/commands/quit
- 起始版本:1.0.0
请求 Redis server 关闭连接。
始终返回 OK。
- Redis官方文档:https://redis.io/commands/blmove
- 起始版本:6.2.0
- 时间复杂度:O(1)
BLMOVE 是阻塞版本的 | LMOVE 命令。
返回从 src pop 出来的元素。如果超时则会返回 null。
需要 pop 元素的 list。
需要 push 元素的 list。
取出方向,LEFT 相当于 lpop,RIGHT 相当于 rpop。
推入方向,LEFT 相当于 lpush,RIGHT 相当于 rpush。
以秒为单位的过期时间,双精度浮点数。
- Redis官方文档:https://redis.io/commands/blmove
- 起始版本:6.2.0
- 时间复杂度:O(1)
BLMOVE 是阻塞版本的 | LMOVE 命令。
返回从 src pop 出来的元素。如果超时则会返回 null。
需要 pop 元素的 list。
需要 push 元素的 list。
取出方向,LEFT 相当于 lpop,RIGHT 相当于 rpop。
推入方向,LEFT 相当于 lpush,RIGHT 相当于 rpush。
以秒为单位的过期时间,双精度浮点数。
以 Buffer 形式返回结果。
- Redis官方文档:https://redis.io/commands/blpop
- 起始版本:2.0.0
- 时间复杂度:O(1)
BLPOP 是阻塞版本的 | LPOP 命令。
当 BLPOP 被调用时,如果指定的 key 中至少有一个包含了非空列表,则会从其头部弹出一个元素并返回。
考虑命令:
await client.blpop(['list1', 'list2', 'list3'], 0)
因为 list2 时这一系列 key 中第一个非空 list 是 list2,BLPOP 会保证返回 list2 的第一个元素。
注意:timeout 参数在早期的 redis 版本会被解释为整型,6.0.0 及以上版本会被解释为双精度浮点数。
如果传递了多个 key,但是至少有一个 key 包含了元素。则返回的 key 是从左向右找到的第一个非空列表,此时不会发生阻塞。 所以对于命令:
await client.blpop(['key1', 'key2', 'key3', 'key4'], 0)
假设其中 key2 和 key4 是非空的,那么返回的是 key2 和它的第一个元素。
如果多个客户端阻塞了相同的 key,优先被处理的客户端是等待时间最长的那个,也就是第一个产生阻塞的客户端。
一旦这个客户端结束了阻塞,它将不会保留任何优先级,再次阻塞时从 0 开始记录阻塞时间。
当客户端同时阻塞多个 key,并且元素同时在多个 key 中可用(因事务或Lua脚本同时向多个列表添加元素)时,
将使用第一个接受 push 操作的 key 解除客户端的阻塞(假设它有足够的元素,因为可能还有其他在等待这个 key 的客户端)。
一般每执行一个命令,Redis 都会对所有接收过数据并且至少有一个客户端在阻塞的 key 进行检查。
这些 key 按照新的元素到达时间顺序排列。对于每个 key,在其清空之前 Redis 按照 FIFO 的顺序处理等待中的客户端。
当 key 清空或者不再有客户端等待这个 key,Redis 才会开始下一个命令/脚本/事务的处理。
BLPOP 可以在 pipeline 中运行(发送多个命令,并且批量读取结果),然而这个命令仅在作为 pipeline 的最后一个命令时才有意义。
在(MULTI/EXEC)事务中使用 BLPOP 一般没什么意义,因为他需要阻塞整个服务器来保证事务原子性的执行,此时其他的客户端也无法执行一个 push 操作。
鉴于这个原因,在(MULTI/EXEC)事务中,当 BLPOP 等待的列表为空时,会直接返回 null。这跟等待超时的效果是一样的。
如果你喜欢科幻小说,可以想象一下在(MULTI/EXEC)事务块中,时间以无限的长度流动……
注意:timeout 参数在早期的 redis 版本会被解释为整型,6.0.0 及以上版本会被解释为双精度浮点数。
以秒为单位的过期时间,双精度浮点数。
- Redis官方文档:https://redis.io/commands/blpop
- 起始版本:2.0.0
- 时间复杂度:O(1)
BLPOP 是阻塞版本的 | LPOP 命令。
当 BLPOP 被调用时,如果指定的 key 中至少有一个包含了非空列表,则会从其头部弹出一个元素并返回。
考虑命令:
await client.blpop(['list1', 'list2', 'list3'], 0)
因为 list2 时这一系列 key 中第一个非空 list 是 list2,BLPOP 会保证返回 list2 的第一个元素。
注意:timeout 参数在早期的 redis 版本会被解释为整型,6.0.0 及以上版本会被解释为双精度浮点数。
如果传递了多个 key,但是至少有一个 key 包含了元素。则返回的 key 是从左向右找到的第一个非空列表,此时不会发生阻塞。 所以对于命令:
await client.blpop(['key1', 'key2', 'key3', 'key4'], 0)
假设其中 key2 和 key4 是非空的,那么返回的是 key2 和它的第一个元素。
如果多个客户端阻塞了相同的 key,优先被处理的客户端是等待时间最长的那个,也就是第一个产生阻塞的客户端。
一旦这个客户端结束了阻塞,它将不会保留任何优先级,再次阻塞时从 0 开始记录阻塞时间。
当客户端同时阻塞多个 key,并且元素同时在多个 key 中可用(因事务或Lua脚本同时向多个列表添加元素)时,
将使用第一个接受 push 操作的 key 解除客户端的阻塞(假设它有足够的元素,因为可能还有其他在等待这个 key 的客户端)。
一般每执行一个命令,Redis 都会对所有接收过数据并且至少有一个客户端在阻塞的 key 进行检查。
这些 key 按照新的元素到达时间顺序排列。对于每个 key,在其清空之前 Redis 按照 FIFO 的顺序处理等待中的客户端。
当 key 清空或者不再有客户端等待这个 key,Redis 才会开始下一个命令/脚本/事务的处理。
BLPOP 可以在 pipeline 中运行(发送多个命令,并且批量读取结果),然而这个命令仅在作为 pipeline 的最后一个命令时才有意义。
在(MULTI/EXEC)事务中使用 BLPOP 一般没什么意义,因为他需要阻塞整个服务器来保证事务原子性的执行,此时其他的客户端也无法执行一个 push 操作。
鉴于这个原因,在(MULTI/EXEC)事务中,当 BLPOP 等待的列表为空时,会直接返回 null。这跟等待超时的效果是一样的。
如果你喜欢科幻小说,可以想象一下在(MULTI/EXEC)事务块中,时间以无限的长度流动……
注意:timeout 参数在早期的 redis 版本会被解释为整型,6.0.0 及以上版本会被解释为双精度浮点数。
以秒为单位的过期时间,双精度浮点数。
是否以 Buffer 形式返回结果。
- Redis官方文档:https://redis.io/commands/brpop
- 起始版本:2.0.0
- 时间复杂度:O(1)
BRPOP 是阻塞版本的 | RPOP 命令。
BRPOP 和 BLPOP 的区别只是弹出元素的位置是尾部。其他的语义详情见 BLPOP 命令文档。
注意:timeout 参数在早期的 redis 版本会被解释为整型,6.0.0 及以上版本会被解释为双精度浮点数。
以秒为单位的过期时间,双精度浮点数。
- Redis官方文档:https://redis.io/commands/brpop
- 起始版本:2.0.0
- 时间复杂度:O(1)
BRPOP 是阻塞版本的 | RPOP 命令。
BRPOP 和 BLPOP 的区别只是弹出元素的位置是尾部。其他的语义详情见 BLPOP 命令文档。
注意:timeout 参数在早期的 redis 版本会被解释为整型,6.0.0 及以上版本会被解释为双精度浮点数。
以秒为单位的过期时间,双精度浮点数。
是否以 Buffer 形式返回结果。
- Redis官方文档:https://redis.io/commands/brpoplpush
- 起始版本:2.2.0
- 时间复杂度:O(1)
BRPOPLPUSH 是阻塞版本的 | RPOPLPUSH 命令。
BRPOP 和 BLPOP 的区别只是弹出元素的位置是尾部。其他的语义详情见 BLPOP 命令文档。
注意:timeout 参数在早期的 redis 版本会被解释为整型,6.0.0 及以上版本会被解释为双精度浮点数。
注意:6.2.0 增加了 BLMOVE 命令,BRPOPLPUSH 有可能被弃用。考虑使用 BLMOVE 替代 BRPOPLPUSH。
以秒为单位的过期时间,双精度浮点数。
- Redis官方文档:https://redis.io/commands/brpoplpush
- 起始版本:2.2.0
- 时间复杂度:O(1)
BRPOPLPUSH 是阻塞版本的 | RPOPLPUSH 命令。
BRPOP 和 BLPOP 的区别只是弹出元素的位置是尾部。其他的语义详情见 BLPOP 命令文档。
注意:timeout 参数在早期的 redis 版本会被解释为整型,6.0.0 及以上版本会被解释为双精度浮点数。
注意:6.2.0 增加了 BLMOVE 命令,BRPOPLPUSH 有可能被弃用。考虑使用 BLMOVE 替代 BRPOPLPUSH。
以秒为单位的过期时间,双精度浮点数。
是否以 Buffer 形式返回结果。
- Redis官方文档:https://redis.io/commands/lindex
- 起始版本:1.0.0
- 时间复杂度:O(N) N 为到达 index 指定位置需要遍历的元素个数。所以访问 index 为 1 或 -1 的情况下,复杂度为 O(1)。
返回指定列表的 index 处的元素。
例子:
await client.lpush('mylist', 'World')
// 1
await client.lpush('mylist', 'Hello')
// 2
await client.lindex('mylist', 0)
// "Hello"
await client.lindex('mylist', -1)
// "World"
await client.lindex('mylist', 3)
// null
- Redis官方文档:https://redis.io/commands/lindex
- 起始版本:1.0.0
- 时间复杂度:O(N) N 为到达 index 指定位置需要遍历的元素个数。所以访问 index 为 1 或 -1 的情况下,复杂度为 O(1)。
返回指定列表的 index 处的元素。
例子:
await client.lpush('mylist', 'World')
// 1
await client.lpush('mylist', 'Hello')
// 2
await client.lindex('mylist', 0)
// "Hello"
await client.lindex('mylist', -1)
// "World"
await client.lindex('mylist', 3)
// null
以 Buffer 形式返回结果。
- Redis官方文档:https://redis.io/commands/linsert
- 起始版本:2.2.0
- 时间复杂度:O(N) N 为到达指定位置 pivot 需要遍历的元素个数。这意味着从列表左侧插入元素为 O(1),从右侧插入元素为 O(N)。
在 list 指定位置 pivot 的前面或者后面插入 element。
返回插入后的 list 长度。如果 没找到 pivot 则会返回 -1。
例子:
await client.rpush('mylist', 'Hello')
// 1
await client.rpush('mylist', 'World')
// 2
await client.linsert('mylist', 'BEFORE', 'World', 'There')
// 3
await client.lrange('mylist', 0, -1)
// ["Hello", "There", "World"]
- Redis官方文档:https://redis.io/commands/llen
- 起始版本:1.0.0
- 时间复杂度:O(1)
返回指定 list 的长度。
例子:
await client.lpush('mylist', 'World')
// 1
await client.lpush('mylist', 'Hello')
// 2
await client.llen('mylist')
// 2
- Redis官方文档:https://redis.io/commands/lmove
- 起始版本:6.2.0
- 时间复杂度:O(1)
原子性的从 src 列表弹出一个元素并推入 dest 列表,并返回该元素。
例子:
await client.rpush('mylist', 'one')
// 1
await client.rpush('mylist', 'two')
// 2
await client.rpush('mylist', 'three')
// 3
await client.lmove('mylist', 'myotherlist', 'RIGHT', 'LEFT')
// "one"
await client.lmove('mylist', 'myotherlist', 'LEFT', 'RIGHT', true)
// <Buffer 6f 6e 65>,即 "two"
await client.lrange('mylist', 0, -1)
// ["two"]
await client.lrange('myotherlist', 0, -1)
// ["three", "one"]
源列表
存储列表
源列表弹出方向,LEFT 相当于 lpop,RIGHT 相当于 rpop。
源列表弹出方向,LEFT 相当于 lpush,RIGHT 相当于 rpush。
- Redis官方文档:https://redis.io/commands/lmove
- 起始版本:6.2.0
- 时间复杂度:O(1)
原子性的从 src 列表弹出一个元素并推入 dest 列表,并返回该元素。
例子:
await client.rpush('mylist', 'one')
// 1
await client.rpush('mylist', 'two')
// 2
await client.rpush('mylist', 'three')
// 3
await client.lmove('mylist', 'myotherlist', 'RIGHT', 'LEFT')
// "one"
await client.lmove('mylist', 'myotherlist', 'LEFT', 'RIGHT', true)
// <Buffer 6f 6e 65>,即 "two"
await client.lrange('mylist', 0, -1)
// ["two"]
await client.lrange('myotherlist', 0, -1)
// ["three", "one"]
源列表
存储列表
源列表弹出方向,LEFT 相当于 lpop,RIGHT 相当于 rpop。
源列表弹出方向,LEFT 相当于 lpush,RIGHT 相当于 rpush。
以 Buffer 形式返回结果。
- Redis官方文档:https://redis.io/commands/lpop
- 起始版本:1.0.0
- 时间复杂度:O(N) N 为返回的元素个数。
从 list 左侧移除并返回一个或多个值。
例子:
await client.rpush('mylist', 'one')
// 1
await client.rpush('mylist', 'two')
// 2
await client.rpush('mylist', 'three')
// 3
await client.lpop('mylist')
// "one"
await client.lrange('mylist', 0, -1)
// ["two", "three"]
- Redis官方文档:https://redis.io/commands/lpop
- 起始版本:1.0.0
- 时间复杂度:O(N) N 为返回的元素个数。
从 list 左侧移除并返回一个或多个值。
例子:
await client.rpush('mylist', 'one')
// 1
await client.rpush('mylist', 'two')
// 2
await client.rpush('mylist', 'three')
// 3
await client.lpop('mylist')
// "one"
await client.lrange('mylist', 0, -1)
// ["two", "three"]
是否以 Buffer 形式返回。
- Redis官方文档:https://redis.io/commands/lpop
- 起始版本:1.0.0
- 时间复杂度:O(N) N 为返回的元素个数。
从 list 左侧移除并返回一个或多个值。
例子:
await client.rpush('mylist', 'one')
// 1
await client.rpush('mylist', 'two')
// 2
await client.rpush('mylist', 'three')
// 3
await client.lpop('mylist')
// "one"
await client.lrange('mylist', 0, -1)
// ["two", "three"]
指定弹出元素的数量,6.2.0 及以上版本支持。
- Redis官方文档:https://redis.io/commands/lpop
- 起始版本:1.0.0
- 时间复杂度:O(N) N 为返回的元素个数。
从 list 左侧移除并返回一个或多个值。
例子:
await client.rpush('mylist', 'one')
// 1
await client.rpush('mylist', 'two')
// 2
await client.rpush('mylist', 'three')
// 3
await client.lpop('mylist')
// "one"
await client.lrange('mylist', 0, -1)
// ["two", "three"]
指定弹出元素的数量,6.2.0 及以上版本支持。
是否以 Buffer 形式返回。
- Redis官方文档:https://redis.io/commands/lpos
- 起始版本:6.0.6
- 时间复杂度:平均复杂度为 O(N) N 为列表的元素个数。当搜索结果临近列表头尾两端或者提供了 MAXLEN 参数时,运行时间可能是常量级的。
返回匹配目标 element 的元素索引。默认会从头向尾遍历,当找不到 element 时,返回 null。
关于 RANK 参数和 MAXLEN 参数说明见 LposOptions。
例子:
await client.rpush('mylist', 'a', 'b', 'c', 'd', '1', '2', '3', '4', '3', '3', '3')
// 11
await client.lpos('mylist', '3')
// 6
await client.lpos('mylist', '3', 0, { rank: 2 })
// [8, 9, 10]
- Redis官方文档:https://redis.io/commands/lpos
- 起始版本:6.0.6
- 时间复杂度:平均复杂度为 O(N) N 为列表的元素个数。当搜索结果临近列表头尾两端或者提供了 MAXLEN 参数时,运行时间可能是常量级的。
返回匹配目标 element 的元素索引。默认会从头向尾遍历,当找不到 element 时,返回 null。
关于 RANK 参数和 MAXLEN 参数说明见 LposOptions。
例子:
await client.rpush('mylist', 'a', 'b', 'c', 'd', '1', '2', '3', '4', '3', '3', '3')
// 11
await client.lpos('mylist', '3')
// 6
await client.lpos('mylist', '3', 0, { rank: 2 })
// [8, 9, 10]
需要返回的匹配元素数量。设置 count 参数会使返回值变为数组形式。
- Redis官方文档:https://redis.io/commands/lpush
- 起始版本:1.0.0
- 时间复杂度:单个元素的添加复杂度为 O(1),所以添加 N 个元素的复杂度为 O(N)。
向指定 list 头部添加所有指定的 value。返回添加后的 list 长度。
注意:早期版本只能推入一个值,2.4 及以上版本可以支持多个值的推入。
例子:
await client.lpush('mylist', 'world')
// 1
await client.lpush('mylist', 'hello')
// 2
await client.lrange('mylist', 0, -1)
// ["hello", "world"]
- Redis官方文档:https://redis.io/commands/lpushx
- 起始版本:2.2.0
- 时间复杂度:单个元素的添加复杂度为 O(1),所以添加 N 个元素的复杂度为 O(N)。
仅当指定的 key 存在并且值为 list 时,向 list 头部添加所有指定的 value。返回添加后的 list 长度。
注意:早期版本只能推入一个值,4.0 及以上版本可以支持多个值的推入。
例子:
await client.lpush('mylist', 'World')
// 1
await client.lpushx('mylist', 'Hello')
// 2
await client.lpushx('myotherlist', "Hello")
// 0
await client.lrange('mylist', 0, -1)
// ["Hello", "World"]
await client.lrange('myotherlist', 0, -1)
// []
- Redis官方文档:https://redis.io/commands/lrange
- 起始版本:1.0.0
- 时间复杂度:O(S + N) S 是从列表头到 start 位置的距离,对于大列表是到最近的端的距离。N 是 start 到 end 的区间范围。
返回指定 list 中指定范围的元素。
注意:选取范围是 [start, stop] 的闭区间,即 start 和 stop 都是被包含在内的。
例子:
await client.rpush('mylist', 'one')
// 1
await client.rpush('mylist', 'two')
// 2
await client.rpush('mylist', 'three')
// 3
await client.lrange('mylist', 0, 0)
// ["one"]
await client.lrange('mylist', -3, 2)
// ["one", "two", "three"]
await client.lrange('mylist', -100, 100)
// ["one", "two", "three"]
await client.lrange('mylist', 5, 10)
// []
选取范围左端索引值。
选取范围右端索引值。
- Redis官方文档:https://redis.io/commands/lrange
- 起始版本:1.0.0
- 时间复杂度:O(S + N) S 是从列表头到 start 位置的距离,对于大列表是到最近的端的距离。N 是 start 到 end 的区间范围。
返回指定 list 中指定范围的元素。
注意:选取范围是 [start, stop] 的闭区间,即 start 和 stop 都是被包含在内的。
例子:
await client.rpush('mylist', 'one')
// 1
await client.rpush('mylist', 'two')
// 2
await client.rpush('mylist', 'three')
// 3
await client.lrange('mylist', 0, 0)
// ["one"]
await client.lrange('mylist', -3, 2)
// ["one", "two", "three"]
await client.lrange('mylist', -100, 100)
// ["one", "two", "three"]
await client.lrange('mylist', 5, 10)
// []
选取范围左端索引值。
选取范围右端索引值。
是否以 Buffer 形式返回结果。
- Redis官方文档:https://redis.io/commands/lrem
- 起始版本:1.0.0
- 时间复杂度:O(N+M) N 是列表长度,M 是需要移除的元素个数。
对指定 list 移除前 count 个匹配 element 的元素。返回移除元素的个数。
注意:不存在的 key 会被认为是空的 list,所以移除元素的个数为 0。
例子:
await client.rpush('mylist', 'hello')
// 1
await client.rpush('mylist', 'hello')
// 2
await client.rpush('mylist', 'foo')
// 3
await client.rpush('mylist', 'hello')
// 4
await client.lrem('mylist', -2, 'hello')
// 2
await client.lrange('mylist', 0, -1)
// ["hello", "foo"]
- Redis官方文档:https://redis.io/commands/lset
- 起始版本:1.0.0
- 时间复杂度:O(N) N 是 list 的长度。设置第一个或最后一个元素的时间为 O(1)。
设置 list 指定索引的元素。对于 list 索引的更多信息见 LINDEX。
例子:
await client.rpush('mylist', 'one')
// 1
await client.rpush('mylist', 'two')
// 2
await client.rpush('mylist', 'three')
// 3
await client.lset('mylist', 0,'four')
// "OK"
await client.lset('mylist', -2, 'five')
// "OK"
await client.lrange('mylist', 0, -1)
// ["four", "five", "three"]
- Redis官方文档:https://redis.io/commands/ltrim
- 起始版本:1.0.0
- 时间复杂度:O(N) N 需要移除的元素个数。
裁剪指定 list,返回 OK。裁剪后 list 只包含参数指定范围的元素。
例子:
await client.rpush('mylist', 'one')
// 1
await client.rpush('mylist', 'two')
// 2
await client.rpush('mylist', 'three')
// 3
await client.ltrim('mylist', 1, -1)
// "OK"
await client.lrange('mylist', 0, -1)
// ["two", "three"]
- Redis官方文档:https://redis.io/commands/rpop
- 起始版本:1.0.0
- 时间复杂度:O(N) N 为返回的元素个数。
从 list 右侧移除并返回一个或多个值。
例子:
await client.rpush('mylist', 'one')
// 1
await client.rpush('mylist', 'two')
// 2
await client.rpush('mylist', 'three')
// 3
await client.rpop('mylist')
// "three"
await client.lrange('mylist', 0, -1)
// ["one", "two"]
- Redis官方文档:https://redis.io/commands/rpop
- 起始版本:1.0.0
- 时间复杂度:O(N) N 为返回的元素个数。
从 list 右侧移除并返回一个或多个值。
例子:
await client.rpush('mylist', 'one')
// 1
await client.rpush('mylist', 'two')
// 2
await client.rpush('mylist', 'three')
// 3
await client.rpop('mylist')
// "three"
await client.lrange('mylist', 0, -1)
// ["one", "two"]
是否以 Buffer 形式返回。
- Redis官方文档:https://redis.io/commands/rpop
- 起始版本:1.0.0
- 时间复杂度:O(N) N 为返回的元素个数。
从 list 右侧移除并返回一个或多个值。
例子:
await client.rpush('mylist', 'one')
// 1
await client.rpush('mylist', 'two')
// 2
await client.rpush('mylist', 'three')
// 3
await client.rpop('mylist')
// "three"
await client.lrange('mylist', 0, -1)
// ["one", "two"]
指定弹出元素的数量,6.2.0 及以上版本支持。
- Redis官方文档:https://redis.io/commands/rpop
- 起始版本:1.0.0
- 时间复杂度:O(N) N 为返回的元素个数。
从 list 右侧移除并返回一个或多个值。
例子:
await client.rpush('mylist', 'one')
// 1
await client.rpush('mylist', 'two')
// 2
await client.rpush('mylist', 'three')
// 3
await client.rpop('mylist')
// "three"
await client.lrange('mylist', 0, -1)
// ["one", "two"]
指定弹出元素的数量,6.2.0 及以上版本支持。
是否以 Buffer 形式返回。
- Redis官方文档:https://redis.io/commands/rpoplpush
- 起始版本:1.2.0
- 时间复杂度:O(1)
原子性的从源列表末尾弹出一个值,并推入存储列表头部。返回这个值。
注意:在 6.2 版本此命令可能会被废弃,使用 LMOVE 命令替代。
例子:
await client.rpush('mylist', 'one')
// 1
await client.rpush('mylist', 'two')
// 2
await client.rpush('mylist', 'three')
// 3
await client.rpoplpush('mylist', 'myotherlist')
// "three"
await client.lrange('mylist', 0, -1)
// ["one", "two"]
await client.lrange('myotherlist', 0, -1)
// ["three"]
- Redis官方文档:https://redis.io/commands/rpush
- 起始版本:1.0.0
- 时间复杂度:单个元素的添加复杂度为 O(1),所以添加 N 个元素的复杂度为 O(N)。
向指定 list 末尾添加所有指定的 value。返回添加后的 list 长度。
注意:早期版本只能推入一个值,2.4 及以上版本可以支持多个值的推入。
例子:
await client.rpush('mylist', 'hello')
// 1
await client.rpush('mylist', 'world')
// 2
await client.lrange('mylist', 0, -1)
// ["hello", "world"]
是否以 Buffer 形式返回。
- Redis官方文档:https://redis.io/commands/rpush
- 起始版本:1.0.0
- 时间复杂度:单个元素的添加复杂度为 O(1),所以添加 N 个元素的复杂度为 O(N)。
向指定 list 末尾添加所有指定的 value。返回添加后的 list 长度。
注意:早期版本只能推入一个值,2.4 及以上版本可以支持多个值的推入。
例子:
await client.rpush('mylist', 'hello')
// 1
await client.rpush('mylist', 'world')
// 2
await client.lrange('mylist', 0, -1)
// ["hello", "world"]
- Redis官方文档:https://redis.io/commands/lpushx
- 起始版本:2.2.0
- 时间复杂度:单个元素的添加复杂度为 O(1),所以添加 N 个元素的复杂度为 O(N)。
仅当指定的 key 存在并且值为 list 时,向 list 末尾添加所有指定的 value。返回添加后的 list 长度。
注意:早期版本只能推入一个值,4.0 及以上版本可以支持多个值的推入。
例子:
await client.rpush('mylist', 'Hello')
// 1
await client.rpushx('mylist', 'World')
// 2
await client.rpushx('myotherlist', "World")
// 0
await client.lrange('mylist', 0, -1)
// ["Hello", "World"]
await client.lrange('myotherlist', 0, -1)
// []
- Redis官方文档:https://redis.io/commands/info
- 起始版本:1.0.0
只返回指定 section 的内容。
Generated using TypeDoc
直接返回 msg 本身。
例子: