Redis管道(Pipelining)、PUB/SUB
http://redis.cn/topics/pipelining.html
- 是否可以这样理解:
- 如果是组织大量的、无依赖关系的命令,可以选择管道,当然也可以选择脚本。
- 如果命令之间有依赖关系,比如后续的命令需要处理先前命令的返回值,只能选择脚本。
- Redis 提供了 PUB/SUB 订阅功能,实际我们在使用时,一定要注意,它提供的不是一个可靠的订阅系统
- Redis 是不持久化 Publish 的消息的
当然,不能说 Redis Pub/Sub 毫无使用的场景,以下艿艿来列举几个:
- 在使用 Redis Sentinel 做高可用时,Jedis 通过 Redis Pub/Sub 功能,实现对 Redis 主节点的故障切换,刷新 Jedis 客户端的主节点的缓存。
- 如果出现 Redis Connection 订阅的异常断开,会重新主动去 Redis Sentinel 的最新主节点信息,
- 从而解决 Redis Pub/Sub 可能因为网络问题,丢失消息
- Redis Sentinel 节点之间的部分信息同步,通过 Redis Pub/Sub 订阅发布。
- 在我们实现 Redis 分布式锁时,如果获取不到锁,可以通过 Redis 的 Pub/Sub 订阅锁释放消息,从而实现其它获得不到锁的线程,快速抢占锁。
- 当然,Redis Client 释放锁时,需要 PUBLISH 一条释放锁的消息。在 Redisson 实现分布式锁的源码中,我们可以看到。
- Dubbo 使用 Redis 作为注册中心时,使用 Redis Pub/Sub 实现注册信息的同步。
- 在使用 Redis Sentinel 做高可用时,Jedis 通过 Redis Pub/Sub 功能,实现对 Redis 主节点的故障切换,刷新 Jedis 客户端的主节点的缓存。
- 也就是说,如果想要有保障的使用 Redis Pub/Sub 功能,需要处理下发起订阅的 Redis Connection 的异常,例如说网络异常。
- 然后,重新主动去查询最新的数据的状态
以上是 Redis管道(Pipelining)、PUB/SUB 的全部内容, 来源链接: utcz.com/z/518596.html