Redis笔记05-3种特殊数据类型

Geospatial(地理位置)

Geospatial常用语一些地理位置的计算,比如附近的人功能。

# geoadd key 经度 纬度 名称:添加地理位置元素
127.0.0.1:6379> geoadd China 116 40 beijing 121 31 shanghai 113 23 guangzhou 113 22 shenzhen
(integer) 4
# geopos key 名称:获取指定名称的经纬度
127.0.0.1:6379> geopos China beijing shanghai
1) 1) "116.00000113248825073"
   2) "39.99999991084916218"
2) 1) "120.99999815225601196"
   2) "31.00000097648057817"
# geodist key 名称1 名称2 单位:计算名称1和名称2之间的直线距离
127.0.0.1:6379> geodist China shenzhen guangzhou km
"111.2264"
# georadius key 经度 纬度 距离 单位:查找给定经纬度和范围内的地理位置
127.0.0.1:6379> georadius China 120 30 200 km
1) "shanghai"
# georadiusbymember key 名称 距离 单位:查找给定名称和范围内的地理位置
127.0.0.1:6379> georadiusbymember China shenzhen 200 km
1) "shenzhen"
2) "guangzhou"
# geohash key 名称:将经纬度转换成一个11个字符的geohash值
127.0.0.1:6379> geohash China beijing
1) "wx47x9u8gu0"

eospatial底层是通过Zset实现的,它并没有提供移除命令,我们可以使用Zset来实现删除。

127.0.0.1:6379> zrange China 0 -1
1) "shenzhen"
2) "guangzhou"
3) "shanghai"
4) "beijing"
127.0.0.1:6379> zrem China beijing
(integer) 1
127.0.0.1:6379> zrange China 0 -1
1) "shenzhen"
2) "guangzhou"
3) "shanghai"

Hyperloglog(基数统计)

基数:相当于set中元素的数量,也就是去重后,元素的数量。
一般在统计用户量的时候,会用set去重,最后查看set的大小。实际是这种方式是很耗费存储的。
Hyperloglog的优点是:占用的内存非常小,因为它并不把这些数据存储起来,只是用作计算。统计接近 2 64 2^{64} 264个不同元素,只需要12KB的内存。但是会有一定的错误率,官方说标准误差0.81%。

# 向key1中添加元素
127.0.0.1:6379> pfadd key1 1 2 3 4 5 6 7 8 9
(integer) 1
# 对key做基数统计
127.0.0.1:6379> pfcount key1
(integer) 9
# 向key2中添加元素
127.0.0.1:6379> pfadd key2 1 3 5 7 9 11
(integer) 1
# 合并key1和key2的元素到key3
127.0.0.1:6379> pfmerge key3 key1 key2
OK
# 对key3做基数统计
127.0.0.1:6379> pfcount key3
(integer) 10

Bitmaps(位图)

使用0和1表示状态值,占用存储空间非常小。

# set指令
127.0.0.1:6379> setbit key 0 1
(integer) 0
127.0.0.1:6379> setbit key 1 1
(integer) 0
127.0.0.1:6379> setbit key 2 1
(integer) 0
127.0.0.1:6379> setbit key 3 0
(integer) 0
127.0.0.1:6379> setbit key 4 0
(integer) 0
# get指令
127.0.0.1:6379> getbit key 0
(integer) 1
127.0.0.1:6379> getbit key 3
(integer) 0
# 统计值为1的个数
127.0.0.1:6379> bitcount key
(integer) 3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值