redis实现签到功能

String类型数据bitcount使用方法:bitcount key [start] [end] start和end代表的是字节位,一个字节=八个比特位,start和end上只能体现字节,bitcount只能够算出字节的所有“1”数据的个数,bitcount key 能够统计key中的所有“1”的个数,不能够精准到指定的比特位,这个方法是不能够满足我们的业务需求的(一个星期是7天,一个按30天来算,就需要30个bit来代表三十天,而一个byte是八个bit,代表三十天就需要三个byte加上六个bit来表示一个月),我们可以使用getbit方法获取bit进行查询而后进行判断
这种数据类型占用的空间特别小,一个比特位代表一天,一个字节代表八天,一个项目运行 10年就是 365*10= 3650个比特位 3650 / 8 = 456个字节;
例如用户在项目中使用连续签到的功能,当我们要算出指定用户在项目运行的第一百天到一百五十天的签到情况,这种业务需求我们可以使用getbit方法查询出指定比特位之间的范围,循环出用户在这阶段时间的签到天数,使用bitcount方法可以根据bit算出byte 然后使用byte进行区间范围查询,使用bitcount方法查询,查询bit区间的范围不够准确;
setbit、getbit和bitcount 的区别:setbit是添加数据信息,getbit是获取指定的数据信息,bitcount是获取区间的数据信息,setbit和getbit操作的是bit位的数据,而bitcount操作的是byte数据

猜你喜欢

转载自blog.csdn.net/acca13439767987/article/details/81504238