redis 基础
如果对 Redis 还不了解的同学可以先看一下这篇 https://www.cnblogs.com/wugongzi/p/12841273.html 这里面介绍了 Redis 是什么,以及怎么用 。
Redis 管道
我们通常使用 Redis 的方式是,发送命令,命令排队,Redis 执行,然后返回结果,这个过程称为Round trip time(简称RTT, 往返时间) 。但是如果有多条命令需要执行时,需要消耗 N 次 RTT,经过 N 次 IO 传输,这样效率明显很低 。
于是 Redis 管道(pipeline)便产生了,一次请求/响应服务器能实现处理新的请求即使旧的请求还未被响应 。这样就可以将多个命令发送到服务器,而不用等待回复,最后在一个步骤中读取该答复 。这就是管道(pipelining),减少了 RTT,提升了效率
重要说明: 使用管道发送命令时,服务器将被迫回复一个队列答复,占用很多内存 。所以,如果你需要发送大量的命令,最好是把他们按照合理数量分批次的处理,例如10K的命令,读回复,然后再发送另一个10k的命令,等等 。这样速度几乎是相同的,但是在回复这10k命令队列需要非常大量的内存用来组织返回数据内容 。
Redis 发布订阅
发布订阅是一种消息模式,发送者(sub)发送消息,订阅者(pub)接收消息
![这次彻底读透 Redis !](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0101%2Fb7e5786cj00rnsr1v0010c000hs00d1g.jpg&thumbnail=660x2147483647&quality=80&type=jpg)
文章插图
如上图所示,发布订阅基于频道实现的,同一个频道可以有多个订阅者,多个发布者 。其中任意一个发布者发布消息到频道中,所以订阅者都可以收到该消息 。
发布订阅 Redis 演示
我在服务器上启动了 4 个 Redis 客户端,2 个订阅者,2 个发布者,订阅者订阅的频道为 channel01
![这次彻底读透 Redis !](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0101%2Fdd45bfc5j00rnsr1v000yc000nj007mg.jpg&thumbnail=660x2147483647&quality=80&type=jpg)
文章插图
第一步:发布者 1 往 channel01 中发送消息 "wugongzi"
![这次彻底读透 Redis !](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0101%2F80f2253dj00rnsr1w000lc000hs006dg.jpg&thumbnail=660x2147483647&quality=80&type=jpg)
文章插图
订阅者 1 收到消息:
![这次彻底读透 Redis !](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0101%2F36fa5dbbj00rnsr1x0015c000hs00cag.jpg&thumbnail=660x2147483647&quality=80&type=jpg)
文章插图
订阅者 2 收到消息:
![这次彻底读透 Redis !](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0101%2Fe732bad0j00rnsr210015c000hs00cpg.jpg&thumbnail=660x2147483647&quality=80&type=jpg)
文章插图
第二步:发布者 2 往频道中发布消息 "hello-redis"
![这次彻底读透 Redis !](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0101%2F1a0e4615j00rnsr22000oc000mr004wg.jpg&thumbnail=660x2147483647&quality=80&type=jpg)
文章插图
订阅者 1 收到消息:
![这次彻底读透 Redis !](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0101%2F664e747aj00rnsr22001gc000hs00ghg.jpg&thumbnail=660x2147483647&quality=80&type=jpg)
文章插图
订阅者 2 收到消息:
![这次彻底读透 Redis !](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0101%2F1414287dj00rnsr23001fc000hs00g9g.jpg&thumbnail=660x2147483647&quality=80&type=jpg)
文章插图
Redis 同时支持订阅多个频道:
![这次彻底读透 Redis !](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0101%2F895be490j00rnsr240010c000hs00chg.jpg&thumbnail=660x2147483647&quality=80&type=jpg)
文章插图
Redis 过期策略过期时间使用
Redis 可以给每个 key 都设置一个过期时间,过期时间到达后,Redis 会自动删除这个 key 。
实际生产中,我们还是要求必须要为每个 Redis 的 Key 设置一个过期时间,如果不设置过期时间,时间一久,Redis 内存就会满了,有很多冷数据,依然存在 。
设置过期时间的命令:EXPIRE key seconds
在使用过程中有一点需要注意,就是在每次更新 Redis 时,都需要重新设置过期时间,如果不设置,那个 key 就是永久的,下面给大家演示一下如何使用:
![这次彻底读透 Redis !](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0101%2Fabcfbb96j00rnsr250027c000hs00q8g.jpg&thumbnail=660x2147483647&quality=80&type=jpg)
推荐阅读
- 谢霆锋|谢霆锋发文示爱王菲:我爱了你20年,打脸两子,渣男属性彻底暴露
- 谢霆锋|“锋菲恋”沸沸扬扬二十年,这次是否真的画上句号?
- 吉克隽逸|从淳朴大山妹到目中无人耍大牌,吉克隽逸彻底垮台!
- 唐莲|《少年歌行》两位主角结局被改,唐莲彻底下线,赵玉真重伤退隐
- 地下室怎么防潮除湿更彻底? 地下室如何防水防潮
- 乙肝能否彻底治愈? 治疗乙肝
- 叶童|靳东这次的“清醒”,让多少实力派演员“大梦初醒”?
- 李思思|李思思带儿子游玩,自拍大变样不敢认,尖下巴彻底没了一姐气派
- 家里的蚂蚁怎么彻底消除? 家里有蚂蚁怎么办
- 订阅号消息怎么彻底删除—手机微信上的订阅号消息怎么关闭?