Redis-高级数据类型
一、Bitmaps
说明:
按位存储数据的操作,存入的value只支持0|1。
应用场景:
适合数据统计
命令:
1、getbit key offset (获取指定key对应偏移量上的bit值;若offset或key不存在,则返回的都是0)
2、setbit key offset value (设置指定key对应偏移量上的bit值,value只能是1或0;偏移量比较大会返回操作的时间)
扩展操作:
1、bitop op destkey key1 key2 (对key指定位进行交、并、非、异或操作,并将结果保存到destkey中)
and:交, or:并, not:非, xor:异或操作,并将结果保存到destkey中)
2、bicount key {start end] (统计指定key中start到end位中1的数量)
二、HyperLogLog
说明:
统计不重复的数据的数量。统计基数(去重后的数据)。
注意事项:
1、只做统计,不会保存数据。
2、数据量大时统计出的结果有0.81%的误差
3、pfadd命令不是一次性分配12K,是随着基数增加而逐渐增大
4、pfmerge合并后的存储空间为12K,无论合并前的数据量是多少
优点:
消耗空间极小,每个hyperloglog key仅占用12K的内存用于标记基数
命令:
1、pfadd key element element (添加数据)
2、pfcount key key (统计数据)
3、pfmerge destkey sourcekey sourcekey (合并数据)
三、GEO
说明:
进行地址计算,计算点与点之间的关系
应用场景:
如社交软件附近的人,外卖软件,地图软件等
注意事项:
只做水平位置计算,不进行垂直海拔计算
命令:
1、geoadd key longitude latitude member [longitude latitude member …] (添加坐标至key容器,member坐标名称,longitude横坐标,latitude纵坐标)
2、geopos key member (获取member的坐标)
3、geodist key member1 member2 unit(获取member1和member2间的距离,unit为返回值单位,支持m米,km千米)
4、georadius key longitude latitude radius m|km|ft|mi [withcoord][withdist] [withhash][count count] (根据坐标求范围内的数据)
5、georadiusbymember key member radius m|km|ft|mi [withcoord][withdist] [withhash][count count] (根据点求范围内数据)
6、geohash key member [member …] (求指定点对应的坐标hash值)