1.排查大KEY/慢查询问题
(1)设置慢查询参数
slowlog-log-slower-than 10000 --设置慢查询的时间阀值,单位微秒
slowlog-max-len 128 --设置慢查询FIFO队列的长度
(2)模拟大KEY
public class RedisExample {public static void main(String[] args) {Jedis jedis = new Jedis("localhost", 6379);for(int index = 0; index < 2; index++){StringBuilder name = new StringBuilder();for(int i = 0 ; i < 1000000; i++){name.append("testtesttesttesttesttesttesttesttesttest");}System.out.println("name"+index+" length="+name.length()/1024/1024+"mb");jedis.set("name"+index, name.toString());}// 关闭Jedis对象jedis.close();}
}
Connected to the target VM, address: '127.0.0.1:63883', transport: 'socket'
name0 length=38mb
name1 length=38mb
(3)查出慢查询的操作slowlog
127.0.0.1:6379> slowlog get 10 --查出最近的10条慢查询日志
1) 1) (integer) 2 ---序号
2) (integer) 1713628306 --时间戳
3) (integer) 26000 -- 操作花费的时间,单位为微秒
4) 1) "get" --操作类型
2) "name0" -- KEY
5) "127.0.0.1:60078"
6) ""
2) 1) (integer) 1
2) (integer) 1713628143
3) (integer) 14000
4) 1) "SET"
2) "name0"
3) "testtesttesttesttestt
sttesttesttesttesttesttesttestt
es)"
(4)查询KEY占用的内存
127.0.0.1:6379> memory usage name0
(integer) 41943088 --单位是字节
2.解决慢查询问题
(1)将大KEY按业务类型拆成小KEY
(2)增加集群的数量,比如读写分离,添加更多的备节点
(3)大KEY打散到多个节点,不要集中到一台机器