上一篇 :6. 五大基本数据类型
下一篇 :8. 事务
添加地理位置 —— GEOADD
GEOADD key 经度 纬度 位置名称 [经度 纬度 位置名称 ……]
提示:
地球两极无法添加一般来说,可以下载城市数据,直接通过 java 程序导入查询录入的地理位置—— GEOPOS
GEOPOS key member [member …]
两地之间的距离 —— GEODIST
GEODIST key member1 member2 [m|km|ft|mi]
距离单位参数说明:
m :米,默认单位。km :千米。mi :英里。ft :英尺。以给定的经纬度为中心, 找出某一半径内的元素 —— GEORADIUS
GEORADIUS key 经度 纬度 半径 m|km|ft|mi [ WITHCOORD ] [ WITHDIST ] [ WITHHASH ] [ COUNT count ] [ASC | DESC] [STORE key] [STOREDIST key]
参数说明:
m|km|ft|mi 表示单位 m 表示单位为米。km 表示单位为千米。mi 表示单位为英里。ft 表示单位为英尺。 WITHDIST: 将位置元素与中心之间的距离也一并返回。WITHCOORD: 将位置元素的经度和维度也一并返回。WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大。ASC | DESC 表示排序规则 ASC: 根据中心的位置, 按照从近到远的方式返回位置元素。DESC: 根据中心的位置, 按照从远到近的方式返回位置元素。 COUNT :获取前 N 个匹配元素以给定元素作为中心点,获取一定半径范围内的其他元素 —— GEORADIUSBYMEMBER
GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count]
参数说明:
m|km|ft|mi 表示单位 m 表示单位为米。km 表示单位为千米。mi 表示单位为英里。ft 表示单位为英尺。 WITHDIST: 将位置元素与中心之间的距离也一并返回。WITHCOORD: 将位置元素的经度和维度也一并返回。WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大。ASC | DESC 表示排序规则 ASC: 根据中心的位置, 按照从近到远的方式返回位置元素。DESC: 根据中心的位置, 按照从远到近的方式返回位置元素。 COUNT :获取前 N 个匹配元素返回一个或多个位置元素的 Geohash 表示 —— GEOHASH
GEOHASH key member [member …]
这里返回的是经纬度的 Hash 值,如果某两地的 Hash 值越接近,表示距离越近
实际应用 :朋友圈的定位、附近的人、打车距离计算
获取所有人的位置信息,存放在一个集合中,然后筛选一定半径内的人
GEO 底层的实现原理就是 Zset ,可以使用 ZSet 命令来操作 GEO
用 ZSet 查询所有城市 移除一个城市官方文档 :https://www.redis.net.cn/order/3629.html
什么是 基数
在一个数组中不重复的元素个数,可以接受误差。
HyperLogLog 这是一种数据结构,是一种用来做基数统计的算法。
比如:统计一个网站的访问人数,同一个人不论访问多少次,也只能是算作一个人。
传统方式:保存用户的 ID ,然后就可以根据保存的 ID 的数量,作为结果。如果人数过多,就会消耗大量资源,影响效率。
目的是为了计数,而不是为了用户 ID ,所以上述传统方法,就是一个吃力不讨好的方法
这种情况就可以使用 HyperLogLog ,它占的内存是固定的,它最多存储 2^64 个不同元素的基数 —— 也即花费 12 KB 的内存。
但是 HyperLogLog 存在 0.81% 的错误率,但是对于统计访问人数等的功能来说,是可以接受的。
如果不能接受误差,就不要使用了
添加指定元素到 HyperLogLog 中 —— Pfadd
PFADD key element [element …]
返回给定 HyperLogLog 的基数估算值 —— Pfcount
PFCOUNT key [key …]
将多个 HyperLogLog 合并为一个 HyperLogLog —— Pfmerge
PFMERGE destkey sourcekey [sourcekey …]
插入值 —— SETBIT
SETBIT key offset value
查看某一位的情况
GETBIT key offset
统计值为 1 的位数
BITCOUNT key [start end]