缓存策略三要素:缓存命中率 缓存更新策略 最大缓存容量。衡量一个缓存方案的好坏标准是:缓存命中率。缓存命中率越高,缓存方法设计的越好。 算法
三者之间的关系为:当缓存到达最大的缓存容量时,会触发缓存更新策略,而缓存更新策略影响到了缓存命中率。可见,缓存方案的好坏依赖于缓存最大量的设置,以及缓存更新策略的选择。缓存
对于常常变更的数据,不适合作缓存。对于静态、读写比高(通常10:1以上)的数据作缓存。dom
常见的缓存更新策略有:设计
1 FIFO 队列,先进先出,典型应用:MySQL的 query cache,采用的就是这种简单的缓存更新策略code
2 LFU:最少使用 ,借助计数器实现队列
3 LRU:最久未被使用,借助计数器和队列实现io
对于Redis,当达到maxmemory时,采用什么策略删除key,有五个可选项可根据应用场景进行选择:class
volatile-lru 采用LRU算法删除带有expire的key(默认) allkeys-lru 采用LRU算法删除任意key volatile-random 任意删除带有expire的key allkeys-random 删除任意key volatile-ttl 删除最接近expire的key noeviction 不删除,直接对写命令返回错误