redis过期和处置策略1 .过期策略2 .处置策略3 .在哪里配置? 4.Lazy Free
1 .过期政策
1 .所有1.redis密钥都可以通过expire命令设置过期日期。 所有设置了过期日期的密钥都存储在一个独立的词典中。 删除这些key有两种不同的策略。
1 )定时删除。 redis默认每秒进行10次过期扫描,每次从词典中检索20个key,删除这20个key中过期的key。 如果删除数大于1/4,则继续取出20个密钥,继续删除20个密钥中过期的密钥。 与此相同,为了避免无限循环扫描,redis规定每次都过期
2 )惯性删除。 客户端连接到redis服务器时,去检查key的过期时间。 如果此密钥过期,则删除此密钥
注意:对于主从体系结构,从机没有过期扫描。 过期扫描仅在主机上显示,并在主机中的密钥过期后与从机同步
2 .处置策略1 .概念:当redis用于缓存的内存已满时,将数据写入redis,redis如何处理
2 .八大战略
1 )全局密钥时
1.1无视频。 这是redis的默认策略,它停止写入,并允许读取和删除
1.2 allkeys-lru,废除最近不再使用的key
1.3所有密钥- lfu,取消不经常使用的密钥
1.4所有关键点- random,随机淘汰关键点
2 )对于设定了有效期限的键
2.1 volatitle-lru取消了所有过期密钥中最近很少使用的密钥
2.2 volatitle-ttl,丢弃所有设置了过期日期的密钥中ttl值小的密钥,ttl值表示设置了过期日期的大小
2.3 volatitle-lfu丢弃所有设置了过期日期的密钥中不经常使用的密钥
2.4卷随机丢弃所有已过期的密钥中的密钥
3 .部署在哪里? 在redis.conf中有这样的参数maxmemory-policy
4.Lazy Free 1.懒惰删除。 为什么需要懒惰的删除呢? 在redis时,如果删除单线程程序中密钥较大的程序,则会很容易产生纸箱。 懒惰删除也称为异步删除
2.unlink key,此命令相当于懒惰地删除key,redis4.0并提供
3.flushall async/flushdb async也可以懒惰删除所有密钥