Redis:(二)三种特殊数据类型常用命令

Geospatial 地理位置

底层是Zset,所以可以用Zset的一些命令操作geospatial

应用:附近的人,朋友的定位,打车距离计算。

有效的经度从-180度到180度。

有效的纬度从-85.05112878度到85.05112878度。

单位:

  • m表示米。
  • km表示千米。
  • mi表示英里。
  • ft表示英尺。
geoadd china:city 116.40 39.90 beijing       # 添加城市经纬度及名称
geopos china:city beijing                # 返回城市的经度和纬度
geodist china:city beijing shanghai km       # 返回两个元素间的直线距离(单位为km)
georadius china:city 110 30 1000 km        # 以给定的经纬度(110,30)为中心,找到某一半经(1000km)的元素
2)georadius china:city 110 30 1000 km withdist # 显示到中间距离的位置
3)georadius china:city 110 30 1000 km withcoord # 显示他人的定位信息
4)georadius china:city 110 30 1000 km withcoord count 1 # 筛选出指定个数
georadiusbymember china:city beijing 1000km   # 找出位于指定元素的周围的其他元素

Hyperloglog 基数统计

应用:网页的UV(一个人访问网站多次,还是算作一次访问量),0.81%的错误率。

如果允许容错,首选它,否则使用set或自己的数据类型。

PFADD mykey a b c d e f g h i j # 创建第一组元素mykey
PFCOUNT mykey             # 统计mykey元素的基数数量
PFADD mykey2 i j z x c v b n m  # 创建第二组元素mykey2
pfmerge mykey3 mykey mykey2     #合并两组元素(mykey+mykey2 => mykey3),自动去掉两组间重复数据

Bitmaps 位图

应用:统计用户信息,活跃,不活跃!登录、未登录!打卡,两种状态的,都可以使用它。

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

例如使用bitmaps来记录周一到周日的打卡:

周一: 1 (打卡) 、周二: 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 0
(integer) 0
127.0.0.1:6379> setbit sign 3 1
(integer) 0
127.0.0.1:6379> setbit sign 4 1
(integer) 0
127.0.0.1:6379> setbit sign 5 0
(integer) 0
127.0.0.1:6379> setbit sign 6 0
127.0.0.1:6379> getbit sign 3  # 获取周四有没有打卡
(integer) 1
127.0.0.1:6379> bitcount sign  # 统计打卡的天数
(integer) 3
原文地址:https://www.cnblogs.com/liuyu666/p/14019160.html