这里我们来学习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的基本使用.
有好的建议,请在下方输入你的评论。