Redis进阶数据结构

126 阅读1分钟

往往在面试中,面试官会问Redis的数据结构,大多数面试者都只能回答出String、Hash、List、Set、Zset这5种,但是如果你能继续说出Bitmap、HyperLogLog、Geo、Stream,那肯定能增加这次面试拿到offer的几率。

Bitmap

bitmap就是通过最小的单位bit来进行0或者1的设置,表示某个元素对应的值或者状态

应用场景:

  • 视频属性的无限延伸
  • 用户在线状态
  • 统计活跃用户
  • 用户签到

HyperLogLog

用于基数计算的概率数据结构,通俗的说就是支持不重复元素的统计

使用一种用精度换取内存空间算法,仅需12k完成统计,HyperLogLog的标准误差是0.81%

应用场景:

  • 统计UV(独立访客、客户端IP)、PV(页面浏览量)

  • 网站日活(DAU)、月活(MAU)

  • 搜索引擎关键词搜索量

Geo

Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作,该功能在 Redis 3.2 版本新增

应用场景:

  • 附近的人
  • 打车叫车匹配附近司机接单

Stream

Redis5.0发布,强大的支持多播的可持久化消息队列,借鉴了Kafka的设计,弥补了PubSub不能持久化消息的缺陷

它有一个消息链表,将所有加入的消息串起来,每个消息都有一个唯一的ID和对应的内容,消息是持久化的

特点:

  • 可持久化
  • 支持消息多播、分组消费
  • 支持消息的有序性