Redis高级

1. 事务

127.0.0.1:6379> MULTI
127.0.0.1:6379> 事务块
127.0.0.1:6379> EXEC 或者 DISCARD
  • MULTI 标记一个事务的开始。
  • EXEC 执行所有事务块内的命令。
  • DISCARD 取消执行事务块内的所有命令。
  • WATCH key [key ...] 监视一个或多个key,如果在事务执行之前,key 被其他命令所改动,那么事务将被打断。
  • UNWATCH 取消 WATCH 命令对所有 key 的监视。

2. 消息队列

Redis 使用 list 数据结构作为消息队列,rpush 生产消息,lpop 消费消息。当 lpop 没有消息的时候,要适当 sleep 一会再重试。如果不用 sleep,可以使用 blpop 指令,在没有消息的时候,它会阻塞直到消息到来。

使用 pub/sub 主题订阅者模式,可以实现 1:N 的消息队列。pub/sub 有个缺点,消费者下线的情况下,生产的消息会丢失。

redis 如何实现延时队列?

使用 sorted set,时间戳作为 score,消息内容作为 key 调用 zadd 来生产消息,消费者用 zrangebyscore 指令获取 N 秒之前的数据轮询进行处理。

3. 发布订阅

Redis pub/sub 是一种消息通信机制:发布者发送消息,订阅者接收消息。

127.0.0.1:6379> SUBSCRIBE channel [channel ...]    #订阅频道
127.0.0.1:6379> PUBLISH channel message    #在频道上发布消息
posted @ 2020-04-17 17:53  PIPO2  阅读(140)  评论(0编辑  收藏  举报