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