这次彻底读透 Redis !

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 !

文章插图
 
如上图所示,发布订阅基于频道实现的,同一个频道可以有多个订阅者,多个发布者 。其中任意一个发布者发布消息到频道中,所以订阅者都可以收到该消息 。
发布订阅 Redis 演示
我在服务器上启动了 4 个 Redis 客户端,2 个订阅者,2 个发布者,订阅者订阅的频道为 channel01
这次彻底读透 Redis !

文章插图
 
第一步:发布者 1 往 channel01 中发送消息 "wugongzi"
这次彻底读透 Redis !

文章插图
 
订阅者 1 收到消息:
这次彻底读透 Redis !

文章插图
 
订阅者 2 收到消息:
这次彻底读透 Redis !

文章插图
 
第二步:发布者 2 往频道中发布消息 "hello-redis"
这次彻底读透 Redis !

文章插图
 
订阅者 1 收到消息:
这次彻底读透 Redis !

文章插图
 
订阅者 2 收到消息:
这次彻底读透 Redis !

文章插图
 
Redis 同时支持订阅多个频道:
这次彻底读透 Redis !

文章插图
 
Redis 过期策略过期时间使用
Redis 可以给每个 key 都设置一个过期时间,过期时间到达后,Redis 会自动删除这个 key 。
实际生产中,我们还是要求必须要为每个 Redis 的 Key 设置一个过期时间,如果不设置过期时间,时间一久,Redis 内存就会满了,有很多冷数据,依然存在 。
设置过期时间的命令:EXPIRE key seconds
在使用过程中有一点需要注意,就是在每次更新 Redis 时,都需要重新设置过期时间,如果不设置,那个 key 就是永久的,下面给大家演示一下如何使用:
这次彻底读透 Redis !


推荐阅读