地理位置(geo)

将指定的地理空间位置(纬度、经度、名称)添加到指定的key中。这些数据将会存储到sorted set这样的目的是为了方便使用GEORADIUS或者GEORADIUSBYMEMBER命令对数据进行半径查询等操作。
该命令以采用标准格式的参数x,y,所以经度必须在纬度之前。这些坐标的限制是可以被编入索引的,区域面积可以很接近极点但是不能索引。
有效的经度从-180度到180度。
有效的纬度从-85.05112878度到85.05112878度。
当坐标位置超出上述指定范围时,该命令将会返回一个错误。

命令

描述

geoadd

添加地理位置的坐标

geopos

获取地理位置的坐标

geodist

计算两个位置之间的距离

georadius

根据用户给定的经纬度坐标来获取指定范围内的地理位置集合

geohash

返回一个或多个位置对象的geohash值

127.0.0.1:6379> geoadd china 116.41667 39.91667 beijing #添加地理位置的坐标
(integer) 1 
127.0.0.1:6379> geoadd china 121.433 34.50000 shanghai
(integer) 1
127.0.0.1:6379> zrange china 0 -1 #查询所有地理位置的坐标
1) "xian"
2) "shanghai"
3) "beijing"
127.0.0.1:6379> georadius china 18 23 100 km #根据用户给定的经纬度坐标来获取指定范围内的地理位置集合
(empty array)
127.0.0.1:6379> georadius china 18 23 1000 km
(empty array)
127.0.0.1:6379> georadius china 18 23 10000 km
1) "xian"
2) "shanghai"
3) "beijing"
127.0.0.1:6379> georadius china 80 25 10000 km
1) "xian"
2) "shanghai"
3) "beijing"
 
127.0.0.1:6379> geodist china beijing xian
"916358.9350"
127.0.0.1:6379> geodist china xian shanghai km
"1147.2025"
127.0.0.1:6379> geopos china xian #获取地理位置的坐标。
1) 1) "108.93425792455673218"
   2) "34.23039917049053571"
127.0.0.1:6379> geopos china beijing
1) 1) "116.41667157411575317"
   2) "39.91667095273589183"
127.0.0.1:6379> geohash china beijing
1) "wx4g14s53n0"
127.0.0.1:6379> geohash china xian#返回一个或多个位置对象的 geohash 值。
1) "wqj6wz7w800"

HyperLogLog

Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。

命令

描述

pfadd

添加指定元素

pfcount

返回HyperLogLog的基数估算值

pfmerge

将多个HyperLogLog合并为一个

127.0.0.1:6379> pfadd mykey d d s w f v g r h #添加指定元素
(integer) 1
127.0.0.1:6379> pfcount mykey #返回HyperLogLog的基数估算值
(integer) 8
127.0.0.1:6379> pfadd mykey2 d f o g p v
(integer) 1 
127.0.0.1:6379> pfmerge mykey3 mykey mykey2 #将多个HyperLogLog合并为一个
OK
127.0.0.1:6379> pfcount mykey3
(integer) 10

BitMaps(位图)

使用位存储,信息状态只有 0 和 1。Bitmap是一串连续的2进制数字(0或1),每一位所在的位置为偏移(offset)

命令

描述

setbit

为指定key的偏移位设置值

getbit

获取偏移位的值

bitcount

统计字符串被设置为1的位数

127.0.0.1:6379> setbit name 0 1 #为指定key的偏移位设置值
(integer) 0
127.0.0.1:6379> setbit name 1 0
(integer) 0
127.0.0.1:6379> setbit name 2 1
(integer) 0 
127.0.0.1:6379> getbit name 0 #获取偏移位的值
(integer) 1
127.0.0.1:6379> getbit name 2
(integer) 1
127.0.0.1:6379> bitcount name 0 2 #统计字符串被设置为1的位数
(integer) 2

查阅资料:
www.redis.net.cn