三种特殊数据类型
GEO地理位置
geo的数据类型为 zset。 GEO 的数据结构总共有六个常用命令:geoadd、geopos、geodist、georadius、georadiusbymember、gethash 官方文档:https://www.redis.net.cn/order/3685.html
geoadd key longitude latitude member
...
命令可以在之后通过位置查询取得这些元素。
当用户尝试输入一个超出范围的经度或者纬度时,geoadd命令将返回一个错误。
127.0.0.1:6379
> geoadd china:city 116.23 40.22 北京
(integer
) 1
127.0.0.1:6379
> geoadd china:city 121.48 31.40 上海 113.88 22.55 深圳 120.21
30.20 杭州
(integer
) 3
127.0.0.1:6379
> geoadd china:city 106.54 29.40 重庆 108.93 34.23 西安 114.02
30.58 武汉
(integer
) 3
geopos key member
[member
...
]
127.0.0.1:6379
> geopos china:city 北京
1
) 1
) "116.23000055551528931"
2
) "40.2200010338739844"
127.0.0.1:6379
> geopos china:city 上海 重庆
1
) 1
) "121.48000091314315796"
2
) "31.40000025319353938"
2
) 1
) "106.54000014066696167"
2
) "29.39999880018641676"
127.0.0.1:6379
> geopos china:city 新疆
1
) (nil
)
geodist
geodist key member1 member2
[unit
]
差。
127.0.0.1:6379
> geodist china:city 北京 上海
"1088785.4302"
127.0.0.1:6379
> geodist china:city 北京 上海 km
"1088.7854"
127.0.0.1:6379
> geodist china:city 重庆 北京 km
"1491.6716"
georadius key longitude latitude radius m
|km
|ft
|mi
[withcoord
][withdist
]
[withhash
][asc
|desc
][count count
]
127.0.0.1:6379
> georadius china:city 100 30 1000 km
重庆
西安
127.0.0.1:6379
> georadius china:city 100 30 1000 km withdist
重庆
635.2850
西安
963.3171
127.0.0.1:6379
> georadius china:city 100 30 1000 km withcoord
重庆
106.54000014066696167
29.39999880018641676
西安
108.92999857664108276
34.23000121926852302
127.0.0.1:6379
> georadius china:city 100 30 1000 km withcoord withdist count
1
重庆
635.2850
106.54000014066696167
29.39999880018641676
georadiusbymember key member radius m
|km
|ft
|mi
[withcoord
][withdist
]
[withhash
][asc
|desc
][count count
]
127.0.0.1:6379
> GEORADIUSBYMEMBER china:city 北京 1000 km
北京
西安
127.0.0.1:6379
> GEORADIUSBYMEMBER china:city 上海 400 km
杭州
上海
geohash key member
[member
...
]
表示距离越近。
127.0.0.1:6379
> geohash china:city 北京 重庆
wx4sucu47r0
wm5z22h53v0
127.0.0.1:6379
> geohash china:city 北京 上海
wx4sucu47r0
wtw6sk5n300
127.0.0.1:6379
> zrem china:city beijin
1
HyperLogLog
HyperLogLog则是一种算法,它提供了不精确的去重计数方案。 [PFADD key element [element …] 添加指定元素到 HyperLogLog 中。 [PFCOUNT key [key …] 返回给定 HyperLogLog 的基数估算值。 [PFMERGE destkey sourcekey] [sourcekey …]将多个 HyperLogLog 合并为一个 HyperLogLog,并 集计算
127.0.0.1:6379
> PFADD mykey a b c d e f g h i j
1
127.0.0.1:6379
> PFCOUNT mykey
10
127.0.0.1:6379
> PFADD mykey2 i j z x c
v b n m
1
127.0.0.1:6379
> PFMERGE mykey3 mykey mykey2
OK
127.0.0.1:6379
> PFCOUNT mykey3
15
BitMap
BitMap 就是通过一个 bit 位来表示某个元素对应的值或者状态, 其中的 key 就是对应元素本身,实际上 底层也是通过对字符串的操作来实现。
127.0.0.1:6379
> setbit sign 0 1
0
127.0.0.1:6379
> setbit sign 1 0
0
127.0.0.1:6379
> setbit sign 2 0
0
127.0.0.1:6379
> setbit sign 3 1
0
127.0.0.1:6379
> setbit sign 4 1
0
127.0.0.1:6379
> setbit sign 5 0
0
127.0.0.1:6379
> setbit sign 6 0
0
127.0.0.1:6379
> getbit sign 3
1
127.0.0.1:6379
> getbit sign 6
0
127.0.0.1:6379
> bitcount sign
3