redis bigcount setbit getbit

bitcount key [start end]

bitcount 统计字符串被设置为1的bit数

127.0.0.1:6379> set peter a
OK
127.0.0.1:6379> bitcount peter
(integer) 3

原理是 a的二进制为 01100001,有三个1,所以bitcount peter 结果得到 3

bitset key offset value

设置或者清空key的value(字符串)在offset处的bit值。

127.0.0.1:6379> set peter a
OK
127.0.0.1:6379> setbit peter 6 1
(integer) 0
127.0.0.1:6379> setbit peter 7 0
(integer) 1
127.0.0.1:6379> get peter
"b"

a 的二进制为 01100001,setbit peter 6 1 命令的意思是把a的二进制中的第6位设置为1,就得到了01100011,setbit peter 7 0命令是把 01100011的中的第7位设置为0,就得到了01100010,这时候 01100010转化成文本也就得到 b

getbit key offset

127.0.0.1:6379> set peter a
OK
127.0.0.1:6379> getbit peter 6
(integer) 0
127.0.0.1:6379> getbit peter 7
(integer) 1

a 的二进制是 01100001,所以offset 6和7分别是 01

官网案例

假设现在我们希望记录自己网站上的用户的上线频率,比如说,计算用户 A 上线了多少天,用户 B 上线了多少天,诸如此类,以此作为数据,从而决定让哪些用户参加 beta 测试等活动 —— 这个模式可以使用 SETBIT 和 BITCOUNT 来实现。
比如说,每当用户在某一天上线的时候,我们就使用 SETBIT ,以用户名作为 key ,将那天所代表的网站的上线日作为 offset 参数,并将这个 offset 上的为设置为 1 。
举个例子,如果今天是网站上线的第 100 天,而用户 peter 在今天阅览过网站,那么执行命令 SETBIT peter 100 1 ;如果明天 peter 也继续阅览网站,那么执行命令 SETBIT peter 101 1 ,以此类推。
当要计算 peter 总共以来的上线次数时,就使用 BITCOUNT 命令:执行 BITCOUNT peter ,得出的结果就是 peter 上线的总天数。

127.0.0.1:6379> setbit peter 100 1
(integer) 0
127.0.0.1:6379> setbit peter 101 1
(integer) 0
127.0.0.1:6379> bitcount peter
(integer) 2

得到 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100
只在第100天和101天登陆过,所以只登陆了两天

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值