Redis三种特殊数据类型

1.geospatial 地理位置(Redis的Geo)

这个东西可以推算两地的位置的信息,比如说两地的距离,方圆几里的人

1.1获得一些城市的经纬度信息

http://www.jsons.cn/lngcode/

1.2六个命令

 

 官方文档只给出了如上六个命令

 

1.2.1 geoadd,添加地理位置的经度纬度

 

 以上是存入相关城市纬度经度信息,注意这里前面是纬度后面是经度,不要弄反了,南极和北极无法直接添加

1.2.2 geopos,获得地理位置的经度纬度

 

 1.2.3 geodist,返回两个定位之间的距离

如果两个位置之间的其中一个不存在, 那么命令返回空值。

指定单位的参数 unit 必须是以下单位的其中一个:

  • m 表示单位为米。

  • km 表示单位为千米。

  • mi 表示单位为英里。

  • ft 表示单位为英尺。

 

 

 

 我附近的人?(获得附近所有人的地址,定位!)通过半径来查询

 

1.2.4 georadis 以给定的经纬度为中心,找出某一半径内的元素

 

 1.2.5 georadiusbymember  基于一个元素,来查询这个元素附近的东西

 

 只是把上面的经纬度,,换成了具体的元素

1.2.6 geohash (该命令将返回11个字符的Geohash字符串,两个字符串越接近那么距离越近)

 

 

deo 底层实现原理 就是zset,有序集合。因此可以用zset命令来操作它。比如说我们要删除一个定位

 

 zset里所有的命令,它都可以对它来进行操作

2.hyperloglog

2.1什么是基数,就是两个集合之中不重复的元素

Redis2.8.9版本就更新了Hyperloglog数据结构

Redis Hyperloglog 基数统计的算法

2.2到底在哪里应用呢?

在计算网页的UV(页面访问量)的时候,需要记录它访问量的增长,同时还是删选掉那些重复的用户,也就是说一个用户访问了三遍这个网站

但是它的访问次数还是会被记录为1,也就是说去计算基数,那么传统的方法是用set来做,但是这种方法是存储大量的用户ID,吃力不讨好。

hyperloglog的优点:

占用的内存是固定的,2^64不同元素,只需要废12kb的内存,如果要从内存角度来比较的话,Hyperloglog是首选

hyperloglog的缺点:

0.81%的错误率

2.3测试数据使用

 

 如果不允许容错是不可以使用hyperloglog

3.bitmap

主要用于位运算,比如说用户登陆的和没有登录的就可以用这个来计算,用0和1来表示,比如说一些打没打卡也可以用这种0和1来表示

也就是说一般只有两个状态的都可以使用bitmap

bitmaps位图,数据结构,操作二进制位来进行记录,就又有0和1两个状态!

 

 那么判断打卡的天数,只用判断那些是1就可以了

 

 

 

 设置范围的

 

posted @ 2021-01-14 19:41  Yaoyaoo  阅读(216)  评论(0)    收藏  举报