影响缓存的三个因素(命中率、缓存更新策略、缓存最大数据量)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/luyaran/article/details/84875989

我们经常通过命中率来衡量缓存机制的好坏和效率,这个命中率指的就是请求缓存次数和缓存返回正确结果的次数的一个比例,这个比例越高,就表明缓存的使用率越高。

正常的缓存命中率也会因为不同的缓存应用而大不相同,咱们以query cache为例来说明一下,经过服务器一段时间的运行和积累,query cache的命中率在98%以上,而另外的能在85%就算是很高了,这个跟我们的缓存机制的实现有关系,一般来说,越复杂的缓存机制,越难以保证命中率,随着系统的积累,缓存命中率会逐渐增长至稳定状态。

我们需要注意的是,就是不要频繁的更新缓存数据,这样会降低命中率,如果不得不做的话,就得考虑缓存在这里是否合理了。

缓存更新策略一般有以下三种:

  1. FIFO(first in first out),也就是说,最先进入缓存的数据,在缓存空间不够的情况下,将会被先清除
  2. LFU(less frequently used),这里是说,最少使用的元素会先被清理,这里需要标记元素使用情况
  3. LRU(least recently used),这个说的是最近最少使用的元素会先被清理,需给元素标记时间戳,距离当前时间最远的元素,将会先被清理

缓存最大数据量是指在缓存中能处理元素的最大个数或者说所能使用的最大空间。通常来讲,各种缓存机制都会对缓存的最大数据量进行限制,可以是固定大小的存储空间、集合个数,或者是由操作系统所能处理和分配的存储空间决定。

而超过缓存机制所允许的最大数据量,系统会进行相应的处理,一般有四种处理方式:

  1. 停止缓存服务,把所有的缓存数据清空
  2. 拒绝写入,不再对缓存数据进行更新
  3. 根据缓存更新策略,清除旧数据
  4. 在第三点的基础上,将淘汰的数据备份,腾出新的空间

好啦,咱们也不废话,今天的记录就到这里了。

如果感觉不错的话,请多多点赞支持哦。。。

猜你喜欢

转载自blog.csdn.net/luyaran/article/details/84875989