1.redis的大key和热key
redis的大key和热key实际上就是经常被访问的key或者占用空间比较大的key。
有什么影响?举个栗子,比如说某个明星出轨了,这个明星的搜索量就会暴增,对redis造成很大的冲击。
2.热/大key的预估和评审
redis查看大key命令
redis-cli --bigkeys
redis查看热key命令
redis-cli --hotkeys
1.根据业务经验判断
比如做一个秒杀系统,根据要秒杀的商品就可以知道哪些key会成为热key,但是不是所有的业务都能这样判断。
2.代码补偿
客户端代码进行数据手收集和统计,但是也存在一个问题,代码侵入。
3.使用facebookarchive/redis-faina
1.去github拉代码
git clone https://github.com/facebookarchive/redis-faina.git
2.cd redis-faina/
3.执行命令:redis-cli -p 6379 MONITOR > redis-options.log
(开始监控)
4.查看日志: ./redis-faina.py redis.log
但是该命令在高并发的条件下,有内存增暴增的隐患,还会降低redis的性能。
4.其他思路
利用2级缓存
备份热key。
/**
* @auther yhd
* @create 2020-11-11 12:23
*/
public class RedisMonitorDemo
{
public static final String HOST = "192.168.111.147";
public static final int PORT = 6379;
public static void main(String[] args)
{
//只能监控单机redis,对于集群只能多个监听一块走
Jedis jedis = new Jedis(HOST, PORT);
System.out.println("------开始监听。。。。。。");
jedis.monitor(new JedisMonitor()
{
@Override
public void onCommand(String command)
{
System.out.println("------最近正在使用的key: "+command);
}
});
}
}