gpt4 book ai didi

memcached - LRU 会删除一段时间内未使用的条目吗?

转载 作者:行者123 更新时间:2023-12-03 22:55:48 24 4
gpt4 key购买 nike

当 memcache 中可用内存已满时,memcache 使用 LRU(最近使用的)算法来释放内存。
我的问题是 LRU 算法是否会删除在一段时间内(最近一次使用)未使用的条目而不是过期的条目?
即将到期的条目不会在那个确切的时刻被删除,而是在下次有人尝试访问它时 (AFAIR)。那么 LRU 算法(也)会考虑 key 的到期吗?

最佳答案

要了解 memcached 如何执行 LRU,您必须更深入地了解 memcached 如何存储项目。项目根据它们的大小存储,只需将所有 100k 的项目存储在同一块中,而其他 200k 的项目存储在不同的块中。

当内存已满并且您尝试存储 100k 项时,memcached 将在该平板上应用 LRU。如果 200k slab 中存在过期或未使用的 key ,它们会保留在那里,而如果 100k slab 中只有热键,则其中一个基于算法的将被驱逐。

回到您的问题,当内存已满并且您尝试存储项目时,memcached 将首先在您尝试写入的平板中查找过期项目,然后查找最少使用的项目。所以是的,它确实考虑了 key 的过期,或者更好的是,过期的 key 在 LRU 之前先行。

此外,当您尝试获取过期日期的项目时,该项目将被驱逐并回收内存。

有关更多详细信息(谷歌上有很多关于 memcached 内存分配的内容,这也解释了 LRU,因此可以阅读大量内容):

http://returnfoo.com/2012/02/memcached-memory-allocation-and-optimization-2/

http://www.adayinthelifeof.nl/2011/02/06/memcache-internals/

还有一个非常好的工具,我推荐用于每个 memcached 主题:

http://code.google.com/p/phpmemcacheadmin/

希望能帮助到你!

关于memcached - LRU 会删除一段时间内未使用的条目吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10122384/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com