Pubsub/Transaction/Pipeline分别是什么?
Pubsub 适合悲观锁和简单信号,不适合稳定的更新,因为Pubsub可能会丢消息。 在模糊通知方面,因为模糊匹配非常耗费 CPU,所以在引擎层面存在 CPU 瓶颈。业务侧看到的现象是:在 channel 和 client 比较多的情况下,容易造成 CPU 打满、服务夯住。
Transaction 是一种伪事务,没有回滚条件;集群版需要所有 key 使用 hashtag 保证在同一个 slot 中,代码比较复杂,hashtag 也可能导致算力和存储倾斜;Lua 中封装了 multi-exec,但更耗费 CPU,比如编译、加载时,经常出现 Redis 引擎 CPU 打满的问题。
Pipeline 用的比较多,如下面的示意图,实际上是把多个请求合并在一个请求里发 送,服务端一次性返回,能够有效减少 IO,提高执行效率。需要注意的是,尽量 在 Pipeline 中聚合小的命令,避免在 Pipeline 里做大 range。此外,需要注意 Pipeline 中的批量任务不是原子执行的(从来不是),所以要处理 Pipeline 中部 分命令失败的场景
资源来源于《阿里云数据库运维实战问题改》
https://developer.aliyun.com/topic/download?spm=a2c6h.20345107.J_6399686890.1.2e1e17dbzKUX5r&id=8198
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。