0
点赞
收藏
分享

微信扫一扫

redis学习笔记(七)管道、事务、发布订阅

安七月读书 2022-04-26 阅读 57
javaredis

一、管道

1.管道的意义?

啤酒瓶理论:
怎么喝啤酒最舒服?
是去超市买一瓶,喝一瓶,再去超市买一瓶。还是去超市买一箱回来慢慢喝?
答案一般是后者,这就是管道的意义:减少通信成本,只需要TCP握手一次,就能执行多条命令。

2.实际命令

3.管道的应用

可以对redis做冷启动,利用管道读取文件做初始数据

二、事务

redis的事务并不完整,没有回滚功能,原因是回滚会损耗redis性能,作者决定不做回滚。不需要回滚,那么redis内部可以保持简单且快速

基本命令:

注:redis事务只会因为语法而失败

三、发布订阅

基本命令:

面试题:
微信,qq等,历史性数据是存在redis里还是关系型数据库里?设计一个解决方案。
思考:
微信如果半年不上线,上线后一样可以收到这半年以来的所有消息,所以大概率是持久化进数据库里的。但数据库不可能接收微信这样的高并发场景,因此可能会用到redis的缓存机制(最近几天)和实时机制(发布订阅)
所以设计方案如下:
在这里插入图片描述
如图所示,实时性的数据利用redis发布订阅实现(微信在线的情况)。最近3天的数据使用sortSet实现(score为时间戳),更久远的数据用kafka持久到数据库里。
上图实现有一个问题,就是读写都在同一个redis中。如果能实现读写分离就更好了,因此写有优化方案,如下:
在这里插入图片描述
用另一个redis订阅写的redis,那就从业务角度实现了读写分离

如果有写错的地方,欢迎大家指正,感谢!

举报

相关推荐

0 条评论