本篇文章给大家介绍一下redis中的慢查询和订阅模式,希望对大家有所帮助!
慢查询慢查询日志就是系统在命令执行时每条命令的执行时间,当超过阀值,就将这条命令记录下来。【相关推荐: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中什么是慢查询、订阅模式的详细内容。