关于redis:Redis的底层类型之bitmapbitfields

7次阅读

共计 1549 个字符,预计需要花费 4 分钟才能阅读完成。

bitmap

Bitmap 能够状态记录或统计,如每日登录

  • SETBIT
SETBIT key offset value
  • GETBIT
GETBIT key offset
  • 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>
  ...]]
  
key:指定要操作的 Redis 键。GET:用于获取指定类型的位字段值。SET:用于设置指定类型的位字段值。INCRBY:用于递增或递加指定类型的位字段值。encoding:指定位字段的数据类型,能够是 u8、i8、u16、i16、u32、i32,具体取决于您心愿的位字段类型。offset:指定位字段的偏移量。value:用于设置或递增 / 递加的值。OVERFLOW:指定溢出解决形式,能够是 WRAP(循环)、SAT(饱和)或 FAIL(失败)。设置一个 8 位的无符号整数:BITFIELD mykey SET u8 0 42
这将在名为 mykey 的位字段中的偏移量 0 处设置一个无符号 8 位整数为 42。获取一个 16 位的有符号整数:BITFIELD mykey GET i16 8
这将从 mykey 中的偏移量 8 处获取一个有符号 16 位整数的值。减少一个 32 位的无符号整数:BITFIELD mykey INCRBY u32 16 5
这将在 mykey 的偏移量 16 处的无符号 32 位整数上减少 5。一次执行多个操作:BITFIELD mykey
   GET u8 0
   GET i16 8
   INCRBY u32 16 5
  • BITFIELD_RO

BITFIELD_RO 命令是 BITFIELD 命令的只读变体,它仅承受 GET 子命令,并且能够平安地在只读正本中应用。这个命令的目标是在不毁坏命令标记的状况下,在只读正本中容许 BITFIELD 的行为。

  • BITCOUNT
BITCOUNT key [start end]

key:要操作的字符串键。
start 和 end(可选):用于指定范畴的起始和完结地位。如果不提供这两个参数,命令将统计整个字符串中值为 1 的位数。如果提供了这两个参数,命令将只统计指定范畴内值为 1 的位数。

  • BITOP
BITOP <AND | OR | XOR | NOT> destkey key [key ...]

对多个字符串进行位操作,并将后果存储在新的字符串中。次要用于位图操作,例如在解决用户在线状态、权限管制等场景中十分有用。operation:指定要执行的位操作类型,能够是以下之一:AND:对所有输出字符串执行位与操作。OR:对所有输出字符串执行位或操作。XOR:对所有输出字符串执行位异或操作。NOT:对单个输出字符串执行位非操作(前面只需提供一个 key)。destkey:指定存储后果的指标字符串键。key:要执行位操作的输出字符串键,能够是一个或多个。
  • BITPOS
BITPOS key bit [start] [end]

查找位字符串(bit string)中指定比特值(bit value)的地位的命令。它次要用于寻找位字符串中从左到右第一个或最初一个设置为指定比特值的地位。key:指定要搜寻的位字符串键。bit:指定要查找的比特值,能够是 0 或 1。start(可选):指定搜寻的起始地位,以比特位偏移量示意。默认从字符串的第一个比特位开始搜寻。end(可选):指定搜寻的完结地位,以比特位偏移量示意。默认搜寻到字符串的最初一个比特位。BITPOS 返回查找到的比特值地位的偏移量。如果未找到指定的比特值,则返回 -1。
正文完
 0