Redis 三种特殊数据类型

文章目录

  • Redis 三种特殊数据类型
    • bitmaps
    • hyperloglogs 基数统计的算法
    • geospatial 地理位置

Redis 三种特殊数据类型

bitmaps

应用场景: 统计用户信息,活跃,不活跃;登录,未登录;

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

# 记录打卡数据 周一到周五 1为正常 0为缺勤
127.0.0.1:6379> setbit sign 1 1
(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> getbit sign 2
(integer) 0

# 统计打卡的天数
127.0.0.1:6379> bitcount sign
(integer) 3

hyperloglogs 基数统计的算法

什么是基数?

A{1,3,5,7,8,7}

B{1,3,5,7,8}

基数(不重复的元素) = 5,可以接受误差。

优点:占用的内存固定,只需要12KB 内存!如果从内存角度比较的话Hyperloglog 首选!

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

传统的方式,set保存用户的id,然后就可以统计set 中元素的数量作为判断标准,这种方式比较麻烦,我们目的是为了计数,而不是保存用户id;

存在误差:0.81%

pfadd mykey a b c  # 创建第一组元素

pfcount mykey #统计元素的数量

pfadd mykey2 a d e # 创建第二组元素

pfmerge mykey3 mykey mykey2 # 合并两组 并集

pfcount mykey3 
5

geospatial 地理位置

  • GEOADD
  • GEODIST 应用场景:两个人的定位
  • GEOHASH
  • GEOPOS
  • GEORADIUS 应用场景:微信附近的人
  • GEORADIUSBYMEMBER

有不对的地方,欢迎大家一起讨论。
最后,欢迎大家关注我的微信号,您的点赞,收藏,转发就是对我的最大鼓励。

Redis 三种特殊数据类型_第1张图片

你可能感兴趣的:(Redis)