geospatial (地理位置)
查询经纬度网站
添加位置GEOADD
两极无法直接添加,我们一般会下载城市数据,通过java程序导入
可以看到这个命令也支持一次性添加多个。
获取位置GEOPOS
获取两点之间距离 GEODIST
默认单位是m,可以指定单位
- m 米
- km 千米
- mi 英里
- ft 英尺
获取某点周围的元素 GEORADIUS
GEORADIUS key longitude latitude radius <M | KM | FT | MI>
[WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count [ANY]] [ASC | DESC]
[STORE key] [STOREDIST key]
下图获取以110 30为经纬度为中心点,1000,500km为半径圆里面的元素
GEORADIUSBYMEMBER
和上面的命令类似,不过经纬度由元素提供。
GEOHASH
返回给定元素的哈希值。
删除元素
GEO底层实现其实就是zset,所以我们可以通过zset的命令来操作GEO
Hyperloglog
什么是基数
基数是一个集合中不重复的元素的个数。
Redis Hyperloglog 是基数统计的算法。
比如要统计网站的UV(访问量),可以通过set保存用户id来解决,但是这样很占内存。
Redis Hyperloglog占用的内存是固定的,只需要占12kb内存。但是这个统计有0.81%的错误率。
常用的就三个命令
pfadd,添加一个元素
pfcount,查看集合的大小
pfmerge,合并多个集合
Bitmaps
每个value只存放一个二进制位。
getbit,setbit,bitcount
这个和C++那个bitset一样的。