redis可视化客户端出现黑点的无限文件夹吗,这个是什么导致的?
中文乱码,应该是你存入redis的key值是中文的,所以在显示的时候乱码了。
是不是中文乱码了 你存的数据什么样的
redis删除过期数据是采用定期删除+惰性删除
的。
所谓定期删除,指的是redis默认是每隔100ms就随机抽取一些设置了过期时间的key,检查其是否过期,如果过期就删除。假设redis里放了10万个key,都设置了过期时间,你每隔几百毫秒,就检查10万个key,那redis基本就死了,cpu负载会非常高,消耗在检查过期key了。注意,这里可不是每隔100ms就遍历所有的设置过期时间的key,那样就是一场性能上的灾难。实际上redis是每隔100ms随机抽取一些key来检查和删除的。
但是问题是,定期删除可能会导致很多过期key到了时间并没有被删除掉,那咋整呢?所以就是惰性删除了。这就是说,在你获取某个key的时候,redis会检查一下,这个key如果设置了过期时间那么是否过期了?如果过期了此时就会删除,不会给你返回任何东西。
所以说有的时候明明应该很多数据过期了,redis占用的内存却没变,那是因为没被删除,要等待再查询这个key的时候,才会懒惰的检查再删除。
通过上面的定期+惰性两种手段,就可以保证过期的key一定会被干掉。
但是实际上这还是有问题的,如果定期删除漏掉了很多过期的key,然后你也没及时去查,也就没走惰性删除,此时会怎么样?如果大量过期key堆积在内存里,导致redis内存块耗尽了怎么办?
答案是:走内存淘汰机制。(上一个问题里的)