SETBIT key offset value大数据
对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit),位的设置或清除取决于 value 参数,能够是 0 也能够是 1,当 key 不存在时,自动生成一个新的字符串值;offset 参数必须大于或等于 0 ,小于 2^32 (bit 映射被限制在 512 MB 以内),时间复杂度O(1),返回原偏移量的位code
BITCOUNT key [start] [end]内存
计算给定字符串中,被设置为 1 的比特位的数量,指定额外的 start 或 end 参数,能够让计数只在特定的位上进行,能够使用负数值:好比 -1 表示最后一个位,而 -2 表示倒数第二个位,以此类推,时间复杂度O(N),返回被设置为 1 的位的数量字符串
可用于大数据签到、重复点赞、订单重复评论等
实现一:get
# 假设某用户id=1,文章id=1,相互拼接为11,则偏移量11设置成1(前提用户id和文章id是惟一的) 127.0.0.1:6379> setbit artcle 11 1 (integer) 0 # 统计所有点赞人数 127.0.0.1:6379> bitcount artcle (integer) 1 # 模拟重复点赞同一篇文章,返回了1,就能够根据返回值避免重复点赞 127.0.0.1:6379> setbit artcle 11 1 (integer) 1
实现二:it
# 假设某用户id=10,有篇文章叫artcleA,则设置artcleA上的位10成1 127.0.0.1:6379> setbit artcleA 10 1 (integer) 0 # 统计文章artcleA的点赞人数 127.0.0.1:6379> bitcount artcle (integer) 1 # 模拟重复点赞同一篇文章,返回了1,就能够根据返回值避免重复点赞 127.0.0.1:6379> setbit artcleA 10 1 (integer) 1
总结:
俩种方法,角度不一样实现不一样,均可以实现目标,第一种方法,优势存储内存低,缺点扩展性低,不能查看某篇文章点赞数,第二种方法,扩展性高,能够经过BITOP方法操做多个key,实现一些统计功能,缺点比第一种花费更多存储空间效率