redis的过期策略都有哪些
定期删除
定期删除:每隔一段时间,就抽取一部分设置了过期时间的key进行删除,但是一般缓存中会有非常多过期的key,如果一次性删除全都的话,就会容易导致卡死,所以会配合惰性删除。
惰性删除:
惰性删除是如果某一缓存数据被查到的时候是过期了的,那么直接删除这个数据,但是通过定期删除+惰性删除之后的数据还是会有很多的数据没有被删除,所以会有内存淘汰机制。
内存淘汰机制:
1)noeviction:当内存不足以容纳新写入数据时,新写入操作会报错,这个一般没人用
2)allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的key(这个是最常用的)
3)allkeys-random:当内存不足以容纳新写入数据时,在键空间中,随机移除某个key,这个一般没人用,为啥要随机,肯定是把最近最少使用的key给干掉啊
4)volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的key(这个一般不太合适)
5)volatile-random:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个key
6)volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的key优先移除