课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
我们在前几期的文章中曾经给大家简单介绍过缓存的应用以及重要性等内容,而今天我们就继续来说说,缓存管理都有哪些常用方法。
管理缓存大小,是一个重要的方面。许多系统存储了大量数据,以至于不可能将所有数据都存储在缓存中。因此,需要一种机制来管理缓存的数据量。管理缓存大小通常是将不需要的缓存数据清除,来腾出足够的空间。一般有下面几种方式:
基于时间清理
先进先出(FIFO)
先进后出(FILO)
少被使用
小访问间隔
基于时间清理方式是类似于前面提到的基于时间过期。除了可以保持数据与远程系统同步,还能够减少缓存数据的大小。可以开启一个单独的监听线程,也可以在读写新值的时候清理数据。
先进先出清理方式意味着,当写入一个新的缓存的时候,就需要删除早插入的缓存值。如果空间足够,也是可以不删除任何数据的。
先进后出的方式正好和先进先出相反,这种方式对于先存储的数据时热点数据的情况比较有用。
少被使用清理方式是先清理访问次数少的缓存数据。这种方式的目的是避免清理热点数据,为了实现这种方式,需要记录缓存数据被访问的次数。需要注意一个问题,缓存中的旧值可能有较高的访问次数,这样就意味着这些旧值不会被清理。比如一篇旧文章的缓存,以前被访问过很多次,但是近很少访问了,但是因为原来的访问量很高,尽管目前访问量较低,也不会被清理。为了避免这种情况,访问次数可以是针对N个小时统计。
小访问间隔清理方式是将访问时间间隔考虑在内。访问某个缓存数据时,就需要标记访问该数据的时间并增加访问次数。二次访问这个缓存数据时,就增加访问次数,并计算平均访问时间。那些曾经是热点数据,被频繁访问,但是近访问时间间隔变长,访问频率下降的数据,其平均访问时间会降低,当降到足够低的时候,就会被清理。
有一种变化方式是,只计算后N次访问的时间。N可以是100、1或者其他任何有意义的数。每当访问计数到N时,访问计数被重置为0,记录下来访问时间。这种方式可以更快的清理热度下降的数据。
还有一种变化方式是,定期重置访问计数,并且只使用小访问的清理方式。比如,每缓存一个小时的数据,前一个小时的访问计数会存储在另一个变量中,以便决策清理时使用。下一个小时访问计数重置为0。这种机制具有上次变化相同的效果。
后两个变体之间的差异总结起来就是在每次缓存检查时,访问计数是否已达到N,或者时间间隔是否已超过Y。一种方式是每隔N次访问一次系统时钟,而二种方式在每次访问时都读取一次系统时钟(查看时间间隔是否已过期)。因为检查一个整数通常比读取系统时钟快,所以我会选择一种方式。
请记住,即使使用缓存大小管理系统,也需要清理、读取和存储数据,以保证他们能够与远程系统保持一致。尽管缓存的数据被大量访问而驻留在系统中,有时候也需要与远程系统同步。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。