redis geospatial /Hyperloglog/BItMap

geospatial 地理位置

朋友的位置,外卖的地理位置,附近的门店,附件的人,打车的距离。

Redis的Geo在redis 3.2版本中就推出啦,这个功能可以推算出地理位置的信息,两地之间的距离,方圆几里的

 

geoadd key 经度 纬度 城市(地点名称) 新增地址

 

 

 也可以一次加多个

 

 

 

zrange 获得指定key中所有坐标信息

  

zrem 删除指定key下指定目标的数据

 

 

 geopos 获得指定key中指定地点的坐标

 

 

 geodist key 第一个点 第二个点 单位 返回指定key中指定地点的距离 (单位可选 m(米), km(千米), ft(英尺), mi(英里))

 

 GEORADIUS key 目标经度 目标纬度 查询范围 查询单位 显示范围内位置的坐标 目标坐标与范围内坐标的距离 取几条  距离排序   斜体字标识非必填参数

127.0.0.1:6379> bitcount sign
(integer) 4

GEORADIUSBYMEMBER 查询指定key中指定一个目标范围内的数据

Hyperloglog 基数统计的算法

什么是基数:不重复的数

优点:占用内存是固定,2^64不同元素,只需要12kb内存,如果从内存角度来比较的HyperLoglogg是首选!

网页的UV (一个人访问一个网站多次,但是还是算作一个人!)

传统的方式,set保存用户的id,就会比较麻烦!我们的目的是为了计数,而不是保存用户的id;

其中有0.81%的错误率!统计UV任务,可以忽略不计!

127.0.0.1:6379> pfadd mykey a b c d e f g  //赋值mykey中元素有7个
(integer) 1
127.0.0.1:6379> pfcount mykey              //统计大小
(integer) 7
127.0.0.1:6379> pfadd mykey2 a e r b c d r //赋值mykey2中元素有6个
(integer) 1
127.0.0.1:6379> pfcount mykey2
(integer) 6
127.0.0.1:6379> pfmerge mykey3 mykey mykey2 //将两者的合并赋值给mykey3
OK
127.0.0.1:6379> pfcount mykey3
(integer) 8

总结:如果可以允许容错,可以使用基数统计

如果不允许容错,那么可以使用set,或者bitmap其他类型

 

############################################################

Bitmaps 位存储

统计用户信息 活跃,不活跃,登录,未登录,打卡,未打卡,365天打卡,两个状态,都可以使用bitMaps

bitMaps 位图,数据结构,都是操作二进制位来进行记录,只有0和1两个状态!

其中365天 = 365bit 1字节 = 8bit 46个字节左右!

 

使用bitmap 来记录周一到周日的打卡信息!

其中1代表打卡,0代表未打卡

周一:1 周二:0 周三:1 周四:1 周五:0 周六:0

127.0.0.1:6379> setbit sign 0 1
(integer) 0
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> setbit sign 3 1
(integer) 0
127.0.0.1:6379> setbit sign 4 0
(integer) 0
127.0.0.1:6379> setbit sign 5 1
(integer) 0
127.0.0.1:6379> setbit sign 6 0
(integer) 0

查看某一天是否有打卡!

127.0.0.1:6379> getbit sign 3  //查询sign:3是否打卡
(integer) 1
127.0.0.1:6379> getbit sign 6  //查询sign:6是否打卡
(integer) 0

统计操作,统计打卡的天数

127.0.0.1:6379> bitcount sign //统计这周的打卡记录
(integer) 4

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值