Published on

Redis高阶应用实战:数据结构深度应用与发布订阅系统设计

Authors
  • avatar
    Name
    Liant
    Twitter

Redis进阶篇

集合、有序集合、哈希、列表(List)、bitmap、HyperLogLog的支持情况和优缺点如图:

示例1

redis数据类型参考网站

举个例子1:

登录中心使用redis有序集合记录员工最近一次操作时间,员工超过半小时未操作,则取出删除掉

用于将一个或多个成员添加到有序集合中,或者更新已存在成员的 score 值
> ZADD key 1678102999 10003
返回有序集中指定分数区间内的成员,分数从高到低排序,取出半个小时之前的时间戳 > ZREVRANGEBYSCORE key 半个小时之前的时间戳 -inf LIMIT 0 100
移除有序集合中的一个或多个成员。删除
> ZREM key 10003


举个例子2:

CRM利用有序集合+列表(队列) 实现延迟队列

示例2-1

该集合 分数为时间戳 成员为消息id 这里存储消息 id存储 5 bytes
以hyperf为例:如果存储消息内容 会占用 211 bytes 如下图
存储整型可以有效的节约服务器的内存,利用主键id查询mysql速度也很快

示例2-2

举个例子3:

运营中台使用hash存储业务线

示例2-3

redis发布/订阅流程

举个列子3: 消息中心IM,使用websocket, 如果部署多台服务器发送消息,则无法实现服务器A的用户无法发送到服务器B的用户
解决方案:使用redis发布/订阅流程 实现服务器A上的用户发送 到 服务器B 上面的用户

示例3