Redis 做签到统计

前言

像签到这种只有两种状态(是或否)的,可以使用二值状态统计。bitmap 符合二值状态统计(0,1),且占用空间小

统计某个月份内的签到情况

这里以用户id:1,8月份为例,假设1,3,5,7,9 签到


setbit sign:1:202208 1 1

setbit sign:1:202208 3 1

setbit sign:1:202208 5 1

setbit sign:1:202208 7 1

setbit sign:1:202208 9 1
统计当前月份签到天数
# 得到签到5天
bitcount sign:1:202208 
查看当前月份某天是否签到
# 3号已签到
getbit sign:202208 3
# 4号未签到
getbit sign:202208 4
统计连续签到

统计连续签到就不太适合以用户id + 月份作为key了。
这里以具体签到天数作为key,以bit位置作为用户id。
假设20220801,用户1,3,5,7,9 签到。

setbit sing:20220801 1 1
setbit sing:20220801 3 1
setbit sing:20220801 5 1
setbit sing:20220801 7 1
setbit sing:20220801 9 1

20220802,用户3,7,9 签到

setbit sing:20220802 3 1
setbit sing:20220802 7 1
setbit sing:20220802 9 1

20220803,用户5,9 签到

setbit sing:20220803 5 1
setbit sing:20220803 9 1

统计 8月1,2,3 号都登录了的用户数量

# 将三个日期的bit 按位与结果 放入 result中
bitop and result sing:20220801 sing:20220802 sing:20220803

# 统计连续签到情况
# 得到连续签到的只有一个用户
bitcount result
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值