Geospatial 地理位置
底层是Zset,所以可以用Zset的一些命令操作geospatial
应用:附近的人,朋友的定位,打车距离计算。
有效的经度从-180度到180度。
有效的纬度从-85.05112878度到85.05112878度。
单位:
- m表示米。
- km表示千米。
- mi表示英里。
- ft表示英尺。
geoadd china:city 116.40 39.90 beijing # 添加城市经纬度及名称 geopos china:city beijing # 返回城市的经度和纬度 geodist china:city beijing shanghai km # 返回两个元素间的直线距离(单位为km) georadius china:city 110 30 1000 km # 以给定的经纬度(110,30)为中心,找到某一半经(1000km)的元素 2)georadius china:city 110 30 1000 km withdist # 显示到中间距离的位置 3)georadius china:city 110 30 1000 km withcoord # 显示他人的定位信息 4)georadius china:city 110 30 1000 km withcoord count 1 # 筛选出指定个数 georadiusbymember china:city beijing 1000km # 找出位于指定元素的周围的其他元素
Hyperloglog 基数统计
应用:网页的UV(一个人访问网站多次,还是算作一次访问量),0.81%的错误率。
如果允许容错,首选它,否则使用set或自己的数据类型。
PFADD mykey a b c d e f g h i j # 创建第一组元素mykey
PFCOUNT mykey # 统计mykey元素的基数数量
PFADD mykey2 i j z x c v b n m # 创建第二组元素mykey2
pfmerge mykey3 mykey mykey2 #合并两组元素(mykey+mykey2 => mykey3),自动去掉两组间重复数据
Bitmaps 位图
应用:统计用户信息,活跃,不活跃!登录、未登录!打卡,两种状态的,都可以使用它。
Bitmaps位图,数据结构,都是操作二进制来进行记录,只有0和1两个状态。
例如使用bitmaps来记录周一到周日的打卡:
周一: 1 (打卡) 、周二: 0 (未打卡)...
127.0.0.1:6379> setbit sign 0 1 (integer) 0 127.0.0.1:6379> setbit sign 1 0 (integer) 0 127.0.0.1:6379> setbit sign 2 0 (integer) 0 127.0.0.1:6379> setbit sign 3 1 (integer) 0 127.0.0.1:6379> setbit sign 4 1 (integer) 0 127.0.0.1:6379> setbit sign 5 0 (integer) 0 127.0.0.1:6379> setbit sign 6 0
127.0.0.1:6379> getbit sign 3 # 获取周四有没有打卡 (integer) 1
127.0.0.1:6379> bitcount sign # 统计打卡的天数 (integer) 3