扫码关注公众号
Redis怎么执行过期策略?
Redis所有的数据结构都可以设置过期时间,时间一到,就会自动删除。你可以想象Redis内部有一个死神,时刻盯着所有设置了过期时间的key,寿命一到就会立即收割。你还可以进一步站在死神的角度思考,会不会因为同一时间太多的key过期,以至于忙不过来。同时因为Redis是单线程的,收割的时间也会占用线程的处理时间,如果收割的太过于繁忙,会不会导致线上读写指令出现卡顿。过期策略分为:1.惰性删除策略。在客户端访问这个key的时候,redis对key的过期时间进行检查,如果过期了就立即删除。2.定时扫描策略。Redis默认会每秒进行十次过期扫描,过期扫描不会遍历过期字典中所有的key,而是采用了一种简单的贪心策略。从过期字典中随机20个key;删除这20个key中已经过期的key;如果过期的key比率超过1/4,那就重复步骤1;同时,为了保证过期扫描不会出现循环过度,导致线程卡死现象,算法还增加了扫描时间的上限,默认不会超过25ms。
下面关于Redis集群数据分区规则,错误的说法是()
正确答案是A这道题考察的是集群数据的分区规则,由于哈希的随机性,哈希分区基本可以保证数据分布均匀,因此在比较哈希分区方案时,重点要看增减节点对数据分布的影响,所以选A;B选项、C选项、D选项都是正确的说法。
请说说Redis过期策略
1、设置过期时间中最近最少使用--volatile-lru2、设置过期时间中最不常用---volatile-lfu3、设置过期时间中即将过期--volatile-ttl4、设置过期时间中随机删除--volatile-random5、当内存不足时,不足以纳入新数据移除最近最少使用allkeys=lru6、当内存不足时,不足以纳入新数据移除最不常用的keyallkeys=lfu7、数据集中随机挑选allkeys-random8、no-eviction