当前位置:   article > 正文

12. Redis数据类型--Bitmaps 位图_err bit offset is not an integer or out of range

err bit offset is not an integer or out of range

12. Redis数据类型–Bitmaps 位图


位图不是实际的数据类型,而是在 String 类型上定义的一组面向位的操作。由于字符串是二进制安全 blob,它们的最大长度为 512 MB,因此它们适合设置最​​多 2^32 个不同的位。

位操作分为两组:恒定时间单位操作,如将位设置为1或0,或获取其值,以及对位组的操作,例如对给定位范围内的设定位数进行计数(例如,总体计数)。

位图的最大优点之一是,在存储信息时,它们通常可以极大地节省空间。例如,在一个系统中,不同的用户由增量用户ID表示,仅使用512MB内存就可以记住40亿用户的一位信息(例如,知道用户是否想要接收新闻稿)。

  • SETBIT命令的第一个参数是位号,第二个参数是要设置位的值,即1或0。如果寻址位超出当前字符串长度,该命令将自动放大字符串。
  • GETBIT只返回指定索引处的位值。超出范围的位(寻址存储在目标键中的字符串长度之外的位)始终被视为零。

有三个命令在一组位上运行:

  • BITOP在不同字符串之间执行逐位操作。提供的操作是AND、OR、XOR和NOT。
  • BITCOUNT执行填充计数,报告设置为1的位数。
  • BITPOS查找具有指定值0或1的第一位。

Bitmaps实例:
例如,统计用户信息 活跃、不活跃!登录、未登录
Bitmaps位图,数据结构!都是操做二进制位来进行记录,只有0和1两个状态!

127.0.0.1:6379> SETBIT mykey a 0
(error) ERR bit offset is not an integer or out of range
127.0.0.1:6379> SETBIT mykey 1 0
(integer) 0
127.0.0.1:6379> SETBIT mykey 1 0
(integer) 0
127.0.0.1:6379> SETBIT mykey 2 0
(integer) 0
127.0.0.1:6379> SETBIT mykey 3 0
(integer) 0
127.0.0.1:6379> SETBIT mykey 4 0
(integer) 0
127.0.0.1:6379> SETBIT mykey 5 1
(integer) 0
127.0.0.1:6379> SETBIT mykey 6 1
(integer) 0
127.0.0.1:6379> SETBIT mykey 7 1
(integer) 0
127.0.0.1:6379> GETBIT mykey 1
(integer) 0
127.0.0.1:6379> GETBIT mykey 5
(integer) 1
127.0.0.1:6379> BITCOUNT mykey
(integer) 3
127.0.0.1:6379> BITCOUNT mykey 1 10
(integer) 0
127.0.0.1:6379> BITCOUNT mykey 0 -1
(integer) 3
127.0.0.1:6379> BITCOUNT mykey 0 7
(integer) 3
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号