ads:
关注以下公众号查看更多文章
业务中有大量的二元数据需要存储,比如是否签到、是否被封号等,也有对二元数据的查询统计需求,比如累计签到多少天、连续签到多少天等
需求1 统计单个用户累计签到次数
用户id 3000 在 2020年8月3号签到
SETBIT uid:sign:3000:202008 2 1
用户id 3000 在 2020年8月2号签到
SETBIT uid:sign:3000:202008 1 1
用户id 3001 在 2020年8月2号签到
SETBIT uid:sign:3001:202008 1 1
确认用户 3000 是否在 2020年8月3号签到
GETBIT uid:sign:3000:202008 2
统计用户 3000 在 2020年8月签到天数
BITCOUNT uid:sign:3000:202008
需求2 统计单个用户一段周期内是否连续签到
用户id 3000 在 2020年8月3号签到
SETBIT uid:sign:20200803 3000 1
用户id 3000 在 2020年8月2号签到
SETBIT uid:sign:20200802 3000 1
用户id 3001 在 2020年8月2号签到
SETBIT uid:sign:20200802 3001 1
确认用户 3000 是否在 2020年8月3号签到
GETBIT uid:sign:20200803 3000
确认用户 3000 在 2020年8月2号到3号是否连续签到
先对两天求与,保存到dest这个bit中
BITOP AND dest uid:sign:20200803 uid:sign:20200802
从dest这个bit查询用户是否为连续签到
GETBIT dest 3000