共计 1368 个字符,预计需要花费 4 分钟才能阅读完成。
这篇文章主要讲解了“Redis 中慢查询和订阅模式是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“Redis 中慢查询和订阅模式是什么”吧!
慢查询
慢查询日志就是系统在命令执行时每条命令的执行时间,当超过阀值,就将这条命令记录下来。【
Redis 命令执行流程
发送命令
命令排队
命令执行
返回结果
其中命令执行才是慢查询统计的时间
慢查询两个配置参数
slowlog-log-slower-than:预设阀值,单位是毫秒,假如执行一条“很慢”的命令,执行时间超过阀值就会被记录下来
slowlog-max-len: 设置慢查询日志最多存储多少条
发布订阅模式
Redis 提供了发布订阅功能,可以用于消息的传输,Redis 的发布订阅机制包括三个部分,发布者,订阅者和 Channel。
发布订阅功能
发送消息采用 publish 命令
订阅某个频道采用 subscribe 命令订阅
模式匹配:同时订阅多个频道,命令是 PSUBSCRIBE
Redis 过期时间处理
主动处理
定时处理,在设置过期时间的时候创建一个定时器,当过期时间到的时候立马执行删除操作,这个操作是即时的,不管在这个时间段内有多少过期 Key, 也不管服务器运行情况,都会被删除,对 CPU 不是很友好。
定期删除,定期删除是设置一个时间间隔每个时间段都会检测是否有过期键,如果有就执行删除,
被动处理
当已经过期的 key 再次被访问时,才会对 key 是否过期进行判断,如果已经过期,则进行删除,并返回 NIL. 这种处理方式对 CPU 是友好的,不会对其他过期 key 上占用 CPU, 但对内存不友好,一个 key 已经过期,但是在它被操作前都不会被删除,仍然占用内存空间,如果有大量过期 Key 没有被再次操作,则会浪费大量内存空间。
3.RDB 与 AOF 对过期键的处理
如果在执行 save 或者 bgsave 命令创建一个 RDB 时,程序会对数据库中的键进行检查,已过期的键不会被保存到新创建的 RDB 文件中。
当过期键被惰性删除或者定期删除之后,程序会向 AOF 文件追加(append)一条 DEL 命令,来显式地记录该键已被删除。
在执行 AOF 重写的过程中,程序会对数据库中的键进行检查,已过期的键不会被保存到重写后的 AOF 文件中。
内存回收
noeviction:默认策略,不会删除任何数据,拒绝所有写入操作并返回客户端错误信息,此时 Redis 只响应读操作。
volatitle-rlu:根据 LRU 算法删除设置了超时属性的键,知道腾出足够空间为止。如果没有可删除的键对象,回退到 noeviction 策略。
allkeys-lru:根据 LRU 算法删除键,不管数据有没有设置超时属性,直到腾出足够空间为止。
allkeys-random:随机删除所有键,知道腾出足够空间为止。
volatitle-random:随机删除过期键,知道腾出足够空间为止。
volatitle-ttl:根据键值对象的 ttl 属性,删除最近将要过期数据。如果没有,回退到 noeviction 策略
感谢各位的阅读,以上就是“Redis 中慢查询和订阅模式是什么”的内容了,经过本文的学习后,相信大家对 Redis 中慢查询和订阅模式是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!