见名知义,位映射,其实就是string类型的bit数组,并不是redis的基本数据类型,而是在string的基础上做的扩展,支持对位进行操作。
精准的基数计数,既可以不保存统计对象,也可以只保存统计对象的integer类型的id。一个bit就可以做一次计数或表示一个对象,比set更节省空间。
如:统计一段时间内的用户行为,如签到、访问、点赞等;或者对大量数据作去重处理,如40亿个QQ号去重。使用bitmap时不再把redis用作缓存,而是用作db。效率高尤其是数据量大时节省空间。
大内存分配会造成redis的卡顿!!
使用strlen查看bitmap的内存空间长度,返回的单位是字节。
使用string来初始化bitmap,关键环节就是把需要的字节序列通过ascii转换成对应的字符串,然后使用set指令把key的值设置为该字符串即可。
步骤如下:
对于ascii码小于32或大于126的分组,可以尝试合并3个分组为一组,使用utf8码表。查utf8码表时,需要把二进制转换为十六进制。
set bt1 '18'
# 得到的bitmap就是:00110001 00111000
set bt2 "你"
# 得到的bitmap就是:11100100 10111101 10100000
# 十六进制是:e4bda0
http://redisdoc.com/bitmap/index.html
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。