分析
位图 (BITMAP)
位计数 (BITCOUNT)
语法
BITCOUNT key [start end [BYTE | BIT]]
计算字符串中已设置的位数(总体计数)。
Resp 回复
整数回复:设置为 1 的位数。
位字段 (BITFIELD)
语法
BITFIELD key [GET encoding offset | [OVERFLOW <WRAP | SAT | FAIL>]
<SET encoding offset value | INCRBY encoding offset increment>
[GET encoding offset | [OVERFLOW <WRAP | SAT | FAIL>]
<SET encoding offset value | INCRBY encoding offset increment>
...]]
此命令将 Garnet 字符串视为位数组,能够处理不同位宽和任意非(必需)对齐偏移量的特定整数字段。实际上,使用此命令,您可以将例如一个位偏移量为 1234 的有符号 5 位整数设置为特定值,从偏移量 4567 检索一个 31 位无符号整数。
同样,该命令处理指定整数的增量和减量,提供用户可配置的保证且定义明确的溢出和下溢行为。
Resp 回复
整数回复:存储在偏移量处的位值。
只读位字段 (BITFIELD_RO)
语法
BITFIELD_RO key [GET encoding offset [GET encoding offset ...]]
BITFIELD 命令的只读变体。它与原始 BITFIELD 类似,但只接受 GET 子命令,并且可以安全地用于只读副本。
Resp 回复
数组回复:每个条目都是相同位置给出的子命令的相应结果。
位操作与 (BITOP AND)
语法
BITOP AND destkey srckey1 srckey2 srckey3 ... srckeyN
在多个键(包含字符串值)之间执行按位与操作,并将结果存储在目标键中。
Resp 回复
整数回复:存储在目标键中的字符串大小,等于最长输入字符串的大小。
位操作非 (BITOP NOT)
语法
BITOP NOT destkey srckey
在多个键(包含字符串值)之间执行按位非操作,并将结果存储在目标键中。
Resp 回复
整数回复:存储在目标键中的字符串大小,等于最长输入字符串的大小。
位位置 (BITPOS)
语法
BITPOS key bit [start [end [BYTE | BIT]]]
返回字符串中第一个设置为 1 或 0 的位的位置。
Resp 回复
以下之一
- 整数回复:根据请求,第一个设置为 1 或 0 的位的位置。
- 整数回复:-1。如果位参数为 1 且字符串为空或仅由零字节组成。
获取位 (GETBIT)
语法
GETBIT key offset
返回存储在键中的字符串值中偏移量处的位值。
Resp 回复
存储在偏移量处的位值,以下之一:
- 整数回复:0。
- 整数回复:1。
设置位 (SETBIT)
语法
SETBIT key offset value
设置或清除存储在键中的字符串值中偏移量处的位。根据值(可以是 0 或 1),位被设置或清除。当键不存在时,会创建一个新的字符串值。
Resp 回复
整数回复:存储在偏移量处的原始位值。
基数计数 (HYPERLOGLOG)
添加元素到基数计数 (PFADD)
语法
PFADD <key> <element-1> ... <element-n>
将所有元素参数添加到存储在第一个参数指定变量名处的 HyperLogLog 数据结构中。
Resp 回复
整数回复:如果至少有一个 HyperLogLog 内部寄存器被更改,则为 1。否则为 0。
基数计数 (PFCOUNT)
语法
PFCOUNT key [key ...]
当使用单个键调用时,返回由存储在指定变量处的 HyperLogLog 数据结构计算的近似基数,如果变量不存在则为 0。
当使用多个键调用时,通过内部合并存储在提供的键中的 HyperLogLog 到一个临时 HyperLogLog 中,返回传递的 HyperLogLog 集合的近似基数。
Resp 回复
整数回复:通过 PFADD 观察到的近似唯一元素数量。
合并基数计数 (PFMERGE)
语法
PFMERGE <destination-key> <source-key-1> ... <source-key-n>
将多个 HyperLogLog 值合并为一个唯一值,该值将近似于源 HyperLogLog 结构所观察到的集合的联合的基数。
计算出的合并 HyperLogLog 被设置到目标变量中,如果该变量不存在则创建(默认为一个空的 HyperLogLog)。
Resp 回复
简单字符串回复:该命令只返回 OK。
发布/订阅 (PUB/SUB)
按模式订阅 (PSUBSCRIBE)
语法
PSUBSCRIBE <pattern-1> ... <pattern-n>
客户端订阅给定的模式。
支持全局样式模式
h?llo
订阅 hello
、hallo
和 hxllo
h*llo
订阅 hllo
和 heeeello
h[ae]llo
订阅 hello
和 hallo
,但不订阅 hillo
如果要按字面匹配特殊字符,请使用 \
进行转义。
Resp 回复
成功时,此命令不返回任何内容。相反,对于每个模式,都会推送一条消息,其中第一个元素是字符串 psubscribe
,作为命令成功的确认。
发布 (PUBLISH)
语法
PUBLISH <channel> <message>
向给定频道发布消息。
Resp 回复
整数回复:收到消息的客户端数量。
发布/订阅频道 (PUBSUB CHANNELS)
语法
PUBSUB CHANNELS [pattern]
列出当前活跃的频道。活跃频道是指有一个或多个订阅者(不包括订阅模式的客户端)的发布/订阅频道。
Resp 回复
数组回复:活跃频道列表,可选地匹配指定的模式。
发布/订阅模式数量 (PUBSUB NUMPAT)
语法
PUBSUB NUMPAT
返回客户端订阅的唯一模式数量(使用 PSUBSCRIBE 命令执行)。
Resp 回复
整数回复:所有客户端订阅的模式数量。
发布/订阅订阅者数量 (PUBSUB NUMSUB)
语法
PUBSUB NUMSUB [channel [channel ...]]
返回指定频道的订阅者数量(不包括订阅模式的客户端)。
Resp 回复
数组回复:每个频道的订阅者数量,每个偶数元素(包括第 0 个)是频道名称,每个奇数元素是订阅者数量。
取消按模式订阅 (PUNSUBSCRIBE)
语法
PUNSUBSCRIBE <pattern-1> ... <pattern-n>
客户端取消订阅给定的模式,如果未给出任何模式,则取消订阅所有模式。
未指定模式时,客户端将取消订阅所有先前订阅的模式。在这种情况下,将为每个取消订阅的模式向客户端发送一条消息。
Resp 回复
成功时,此命令不返回任何内容。相反,对于每个模式,都会推送一条消息,其中第一个元素是字符串 punsubscribe
,作为命令成功的确认。
订阅 (SUBSCRIBE)
语法
SUBSCRIBE channel [channel ...]
客户端订阅指定的频道。
Resp 回复
成功时,此命令不返回任何内容。相反,对于每个频道,都会推送一条消息,其中第一个元素是字符串 subscribe
,作为命令成功的确认。
取消订阅 (UNSUBSCRIBE)
语法
UNSUBSCRIBE [channel [channel ...]]
客户端取消订阅给定的频道,如果未给出任何频道,则取消订阅所有频道。
Resp 回复
成功时,此命令不返回任何内容。相反,对于每个频道,都会推送一条消息,其中第一个元素是字符串 unsubscribe
,作为命令成功的确认。