bitmaps
位存储,使用位图数据结构,操作二进制来进行记录,只有0,1两种状态
业务场景:统计用户信息,活跃/不活跃,登陆/未登录,打卡/未打卡,有两种状态的都可以使用Bitmaps。
//记录
setbit sign 0 0
//查看
getbit sign 1
//统计
bitcount sign
geospatial
地理位置,基于Zset实现
业务场景:附近的人,打车距离计算
//添加地理位置
geoadd china:city [纬度] [经度] beijing
//获取地理位置
geopos china:city beijing
//获取两个位置之间距离
geodist china:city beijing shanghai
//以给定的经纬度为中心,找出某一半径的元素
georadius china:city 110 30 1000 km
//以给定元素位置查询范围内所有元素
georadiusbymember china:city beijing 1000 km
//查看所有元素
zrange chaina:city 0 -1
//删除元素
zrem china:city beijing
hyperloglog
基数统计,占用内存固定(2^64基数,只需要申请12kb内存)
基数:不重复的数,集合非常大的情况下会存在误差,约为0.81%
A = {1,3,5,7,8,7}
B = {1,3,5,7,8}
这两个集合的基数是5
业务场景:比如统计网站UV(Unique Visitor 被服务器认为是同一个人访问量只会记录一次)
传统使用Set集合存储用户id的方式会浪费大量内存空间,而该场景下使用hyperloglog
//添加
pfadd mykey a b c
//查看基数
pfcount mykey
//将mykey1,mykey2两个集合合并到mykey3,合并后可以再对mykey3查看基数
pfmerge mykey3 mykey2 myke1