Redis--Lesson04--Redis三种特殊的数据类型
一.geospatial
地理位置:可以用于计算两个城市的位置,距离(经度,维度,位置)
有效经度:-180~180 ;有效纬度:-85.05112878 ~85.05112878 超出则返回错误
Redis GEO 操作方法有:
- geoadd:添加地理位置的坐标。
- geopos:获取地理位置的坐标。
- geodist:计算两个位置之间的距离。
- georadius:根据用户给定的经纬度坐标来获取指定范围内的地理位置集合。
- georadiusbymember:根据储存在位置集合里面的某个地点获取指定范围内的地理位置集合。
- geohash:返回一个或多个位置对象的 geohash 值。
1.geoadd 添加一个或多个地理位置
geoadd key 经度 纬度 位置
2.geopos 获取指定元素位置的经度纬度
geopos key [value]
3.geodist 获取两点之间的距离(米m,千米km,英里mi,英尺ft)
geodist key city1 city2 单位
4.georadius 给定一个经纬度查看周围的位置
georadius key 经度 纬度 距离 单位 显示经度纬度 显示距离 展示数量
5.georadiusbymember 指定元素距离查看周围的元素
georadiusbymember key value 距离 单位
6.geohash 返回一个或多个位置元素,使用geohash表示(11个字符的geohash字符串,使用的少)
geohash key [value]
二.Hyperloglog
基数:不重复的元素
例如:A集合{1,2,3,4,5,6} ; B集合{5,6,7,8,9}
A集合和B集合的基数就是 9
Hyperloglog就是基数统计的算法,它在统计不重复的元素个数有奇效,故而使用Hyperloglog一般用于统计
传统的方式统计一般使用的是set,但是比较占内存,使用Hyperloglog更节约内存:但是要明确目的在使用,需求是统计个数,而不是每个数据的详细信息(0.81%的错误率)
1.pfadd向hyperloglog中添加元素
pfadd key [value]
2.pfcount 统计基数
pfcount key
3.pfmerge 取并集
pfmerge tempKey key1 key2
//新的存放并集的key 两个相交的key
使用Hyperloglog进行统计需要注意,有容错的能力并且只关心统计结果,如果不满足就需要更换set集合
三.Bitmaps
位图:使用位存储,只标记两个状态即0或1
常用场景,标记用户是否在线 0--不在线,1--在线
优势:存储两个状态时内存小,如果存储365天状态 = 365bit = 46字节非常小
案例:存储一个星期的在线状态:[星期一.....星期天],[在线,在线,不在线,在线,不在线,不在线,不在线]
1.setbit 向位图中添加元素
setbit key offset value
2.getbit 获取某个时间的状态
getbit key offset
3.bitcount 统计位为1的个数
bitcount key