在MySQL中存在慢日志的概念(参考MySQL索引原理之查询优化 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)),Redis中也提供慢日志的功能用于监视和优化查询。下面介绍Redis中慢日志相关的操作
1、设置
在redis.conf中可以配置和慢查询日志相关的选项:
Redis使用列表存储慢查询日志,采用队列方式(FIFO)。
config set的方式可以临时设置,redis重启后就无效
config set slowlog-log-slower-than 微秒
config set slowlog-max-len 条数
2、阅读及删除
查看日志:slowlog get [n]
清除日志:slowlog reset
3、慢查询定位及处理
使用slowlog get 可以获得执行较慢的redis命令,针对该命令可以进行优化:
1)尽量使用短的key,对于value有些也可精简,能使用int就int。
2)避免使用keys *、hgetall等全量操作。
3)减少大key的存取,打散为小key 100K以上
4)将rdb改为aof模式:rdb fork 子进程 数据量过大 主进程阻塞 redis性能大幅下降关闭持久化 , (适合于数据量较小,有固定数据源)
5)想要一次添加多条数据的时候可以使用管道
6)尽可能地使用哈希存储
7)尽量限制下redis使用的内存大小,这样可以避免redis使用swap分区或者出现OOM错误内存与硬盘的swap