redis三种特殊数据类型-04

geospatial地理位置

朋友的定位,附近的人,打车距离计算
Redis的Geo在Redis3.2版本推出,这个功能可以推算出地理位置信息,,两地之间的距离,方圆几里的人
可以查询一些测试数据
相关命令

  • GEOADD
  • GEODIST
  • GEOHASH
  • GEOPOS
  • GEORADIUS
  • GEORADIUSBYMEMBER
//geoadd添加地理位置
//规则:两极无法直接添加,我们一般会下载城市数据,直接通过java程序一次性导入
//参数 key 值(经度、纬度、名称)
127.0.0.1:6379> geoadd china:city 116.512885 39.847469 beijin
(integer) 1
127.0.0.1:6379> geoadd china:city 104.325723 30.862592 chengdu 116.332334 39.882806 shanghai
(integer) 2
127.0.0.1:6379> geoadd china:city 108.96 34.26 xian
(integer) 1
127.0.0.1:6379>


//GEOPOS
//获取指定城市的经度和纬度
127.0.0.1:6379> geopos china:city chengdu
1) 1) "104.32572394609451"
   2) "30.862591207711652"


//GEODIST
//geodist key member1 member2 [unit] 单位
127.0.0.1:6379> geodist china:city beijin shanghai



//GEORADIUS
//经度 纬度 半径,以该经度纬度为中心寻找半径中的成员有哪些
127.0.0.1:6379> georadius key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC 



//GEORADIUSBYMEMBER 
//以某成员为中心寻找半径中的成员
127.0.0.1:6379> GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DES 


//GEOHASH
//将二维的经纬度转换为一维的字符串
127.0.0.1:6379> GEOHASH key member [member ...]  


GEO底层的实现原理其实就是Zset
//查看其中的元素
127.0.0.1:6379> zrange china:city 0 -1
1) "chengdu"
2) "xian"
3) "beijin"
4) "shanghai"

//移除元素
127.0.0.1:6379> zrem key member [member ...]  

Hyperloglog

基数:一个集合中不重复的元素
Redis Hyperloglog基数统计算法
优点:占用的内存是固定的,2^64不同的元素的技术,只需要废12KB的内存!如果要从内存角度来比较的话Hyperloglog首选!
网页的UV(一个人访问一个网站多次,但是还是算作一个人)
传统的方式,set 保存用户的id ,然后就可以统计set中的元素数量作为标准判断!
这个方式如果保存大量的用户id ,就会比较麻烦!我们的目的是为了计数,而不是保存用户id ;
0.81%错误率!统计UV任务,可以做一些经度要求不那么高的任务

127.0.0.1:6379> pfadd mykey a b c d e f g g g
(integer) 1
127.0.0.1:6379> pfcount mykey
(integer) 7
//合并(不重复)
127.0.0.1:6379> pfmerge destkey sourcekey [sourcekey ...]  

如果允许容错,那么一定可以使用Hyperloglog
如果不允许容错,那就使用set或者自己的数据类型即可

Bitmaps

位存储
统计用户信息,活跃,不活跃,打卡,两个状态的,都可以使用Bitmaps
Bitmaps位图,数据结构!都是操作二进制位来进行记录,就只有0和1两个状态

//设置值
127.0.0.1:6379> setbit sign 1 0
(integer) 0
127.0.0.1:6379> setbit sign 2 1
(integer) 0
//获取值
127.0.0.1:6379> getbit sign 2
(integer) 1
//统计操作

127.0.0.1:6379> bitcount key [start end]  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值