当程序删除一个redis的key之后,该key虽然对应用来讲已经失效不可访问,但是redis不会马上将他从缓存中清除,而是通过主动定期删除或者被动删除的方式删除,这样做可以提高cpu性能,所谓主动定时删除,就是每隔一段时间检查缓存中失效的key,然后清除,被动删除的意思是,该key已经失效,但是一直留存在缓存中,直到被访问的时候才会清除
由于存在被动删除,导致内存暴涨的异常情况,需要给缓存过期的踢出制定一种策略,以保证redis能继续提供服务,过期key的踢出策略主要有以下几种:
当前缓存大小已经达到缓存设置的值,则新入缓存时报错 --ERROR
当前缓存大小已经达到缓存设置的值,则踢出最近最少使用的key -- LFU
当前缓存大小已经达到缓存设置的值,则踢出随机key --RANDOM
当前缓存大小已经达到缓存设置的值,则踢出即将过期的key --TTL
关于LRU和LFU的区别我想多说几句,LRU的意思是当前最少使用,LFU是最近最少使用,当前最少使用的意思是,当前上下文中,最少被使用的key,即长时间未被使用的key,最近最少使用的意思是,在最近一段时间内,最少被使用的key,即最近一段时间未被使用的key