慢查询
慢查询日志就是系统在命令执行时每条命令的执行时间,当超过阀值,就将这条命令记录下来。【相关推荐: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中什么是慢查询、订阅模式的详细内容,转载自php中文网
发表评论 取消回复