redis新类型bitmap/hyperloglgo/GEO

Mr.LR2022年5月15日
大约 4 分钟

redis新类型bitmap/hyperloglgo/GEO

bitmap

简述

由0和1状态表现的二进制位的bit数组

image-20220506193043780

使用场景

用于状态统计、上班打卡,签到统计

连续签到打卡,统计用户一年的登录天数

命令使用

记录一周打卡情况

> setbit user01 1 1
1
> setbit user01 2 1
0
> setbit user01 3 1
0
> setbit user01 4 1
0
> setbit user01 5 1
0
> setbit user01 6 0
0
> setbit user01 7 0
0

查看周一周六是否打卡

> getbit user01 1
1
> getbit user01 6
0

查看一周一共打卡几天

> bitcount user01
5

hyperloglog

简述

是一种数据集,去重复后的真实个数,用于统计一个集合中不重复的元素个数,就是对集合去重复后剩余元素的计算

使用场景

统计网站的UV、用户搜索关键词的数量,在线用户数

命令使用

> pfadd hkey01 1 2 2 3 4 5  #创建第一组元素
1
> pfadd hkey02  3 3 4 6 7   #创建第二组元素
1
> PFMERGE hkey03 hkey01 hkey02  #合并两组  hkey01 hkey02 ->hkey03
OK
> pfcount hkey03
7

geospatial

Redis在3.2版本以后增加了地理位置的处理

官方文档https://www.redis.net.cn/order/3685.htmlopen in new window

GEOADD

该命令以采用标准格式的参数x,y,所以经度必须在纬度之前。这些坐标的限制是可以被编入索引的,区域面积可以很接近极点但是不能索引。具体的限制,由EPSG:900913 / EPSG:3785 / OSGEO:41001 规定如下:

  • 有效的经度从-180度到180度。
  • 有效的纬度从-85.05112878度到85.05112878度。

当坐标位置超出上述指定范围时,该命令将会返回一个错误。

> geoadd china:city 121.47 31.23   shanghai
1
> geoadd china:city 106.50 29.53   chongqin 114.05 22.52   shenzhen
2

GEOPOS

  • 获取指定位置的经度和维度
> geopos china:city beijing chongqin
116.39999896287918091
39.90000009167092543
106.49999767541885376
29.52999957900659211

GEODIST

  • 返回两个给定位置之间的距离。

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

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

    • m 表示单位为米。
    • km 表示单位为千米。
    • mi 表示单位为英里。
    • ft 表示单位为英尺。
    • 如果用户没有显式地指定单位参数, 那么 GEODIST 默认使用米作为单位。
  • GEODIST 命令在计算距离时会假设地球为完美的球形, 在极限情况下, 这一假设最大会造成 0.5% 的误差。

> geodist china:city beijing shanghai km
1067.3788

GEORADIUS

  • 以给定的经纬度为中心, 返回与中心的距离不超过给定最大距离的所有位置元素。
  • WITHDIST: 在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。 距离的单位和用户给定的范围单位保持一致。
  • WITHCOORD: 将位置元素的经度和维度也一并返回。
  • WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大。
  • 命令默认返回未排序的位置元素。 通过以下两个参数, 用户可以指定被返回位置元素的排序方式:
    • ASC: 根据中心的位置, 按照从近到远的方式返回位置元素。
    • DESC: 根据中心的位置, 按照从远到近的方式返回位置元素。
> georadius china:city 110 30 500 km withdist #显示到中间距离的位置
chongqin
341.9374

GEORADIUSBYMEMBER

  • 找出位于指定元素周围的其他元素
> GEORADIUSBYMEMBER china:city shanghai 400 km
shanghai

GEOHASH

  • 返回坐标的geohash表示
> geohash china:city beijing chongqin
wx4fbxxfke0
wm5xzrybty0

参考

上次编辑于: 2022/5/19 23:15:33
贡献者: liurui_60837