Redis重制(十一)Bitmap

10 阅读1分钟

这里我们来学习redis的第八个数据类型:Bitmap(位存储)

 

统计用户信息,活跃,不活跃!登录、未登录!打卡,365打卡!两个状态的,都可以使用Bitmaps

 

Bitmaps位图,数据结构!都是操作二进制位来进行记录,就只有0和1两个状态!

 

打卡365天=365bit   1字节=8bit    一年大概需要46个字节左右!很省内存。

 

1:setbit 设置key

127.0.0.1:6379> setbit sign 1 1                        # 设置sign   1   的值
(integer) 0
127.0.0.1:6379> setbit sign 1 2                        bitmap是二进制,只能存储0/1
(error) ERR bit is not an integer or out of range
127.0.0.1:6379> setbit sign 2 1                        # 设置sign   2   的值
(integer) 0
127.0.0.1:6379> setbit sign 3 0                        # 设置sign   3   的值
(integer) 0
127.0.0.1:6379> setbit sign 4 1                        # 设置sign   4   的值
(integer) 0
127.0.0.1:6379> setbit sign 5 0                        # 设置sign   5   的值
(integer) 0
127.0.0.1:6379> setbit sign 6 0                        # 设置sign   6   的值
(integer) 0
127.0.0.1:6379> setbit sign 6 0 7 1                   # 一次只能设置一个key的值
(error) ERR wrong number of arguments for 'setbit' command
127.0.0.1:6379> setbit sign 7 1                        # 设置sign   7   的值
(integer) 0

 

2:getbit获取key值

127.0.0.1:6379> getbit sign 5
(integer) 0
127.0.0.1:6379> getbit sign 7
(integer) 1

 

获取bitmap中没有的值,返回值都是0

127.0.0.1:6379> getbit sign 8
(integer) 0
127.0.0.1:6379> getbit sign 9
(integer) 0

 

3:bitcount 统计某个key中value等于1的数量

127.0.0.1:6379> bitcount sign
(integer) 4

这个是没有问题的,上边我们一共设置了7个key,1247对应的值是1

 

拢共三个方法  也很简单~

 

使用bitmap实现的功能,也可以使用list/hash等数据结构实现,但是使用bitmap实现更加的快。

 

以上就是bitmap的基本使用.

有好的建议,请在下方输入你的评论。