Redis 管道(Pipelining)、PUB/SUB

安稳与你 提交于 2020-08-19 22:59:04

http://redis.cn/topics/pipelining.html

  • 是否可以这样理解:
    • 如果是组织大量的、无依赖关系的命令,可以选择管道,当然也可以选择脚本。
    • 如果命令之间有依赖关系,比如后续的命令需要处理先前命令的返回值,只能选择脚本。
  • Redis 提供了 PUB/SUB 订阅功能,实际我们在使用时,一定要注意,它提供的不是一个可靠的订阅系统
    • Redis 是不持久化 Publish 的消息的
    • 当然,不能说 Redis Pub/Sub 毫无使用的场景,以下艿艿来列举几个:

      1. 在使用 Redis Sentinel 做高可用时,Jedis 通过 Redis Pub/Sub 功能,实现对 Redis 主节点的故障切换,刷新 Jedis 客户端的主节点的缓存。
        • 如果出现 Redis Connection 订阅的异常断开,会重新主动去 Redis Sentinel 的最新主节点信息,
        • 从而解决 Redis Pub/Sub 可能因为网络问题,丢失消息
      2. Redis Sentinel 节点之间的部分信息同步,通过 Redis Pub/Sub 订阅发布。
      3. 在我们实现 Redis 分布式锁时,如果获取不到锁,可以通过 Redis 的 Pub/Sub 订阅锁释放消息,从而实现其它获得不到锁的线程,快速抢占锁。
        • 当然,Redis Client 释放锁时,需要 PUBLISH 一条释放锁的消息。在 Redisson 实现分布式锁的源码中,我们可以看到。
      4. Dubbo 使用 Redis 作为注册中心时,使用 Redis Pub/Sub 实现注册信息的同步。
    • 也就是说,如果想要有保障的使用 Redis Pub/Sub 功能,需要处理下发起订阅的 Redis Connection 的异常,例如说网络异常。
      • 然后,重新主动去查询最新的数据的状态
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!