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