0

我试图了解当(如果)你填满分配的内存缓冲区时 memcache 是如何工作的。特别是我想了解缓存中键值对的生命周期。我说的是rails中的低级缓存操作,我直接创建键/值对。例如像这样的命令

Rails.cache.write key, cached_data

Rails.cache.fetch key 

假设为了论证,我有一个无限循环,它只是生成随机 UUID 作为键并存储随机数据。当缓存填满时会发生什么?较旧的项目是否会被淘汰,或者是否有一些特定的算法在幕后处理这种可能性?我在其他地方读过“缓存失效是一个难题”。

只是想了解它实际上是如何工作的。

也许一些简单的代码示例可以说明创建和销毁缓存数据的最佳方式?您是否必须明确定义条目何时到期?

4

1 回答 1

1

MemcacheD 在幕后处理这个问题。看看这个问题 -

Memcache 和过期项目

您可以定义过期参数,查看此 wiki 页面 -

http://code.google.com/p/memcached/wiki/NewProgramming#Cache_Invalidation

对于特定于您的应用程序逻辑的缓存失效(而不仅仅是幕后的内存耗尽),删除功能将简单地删除数据。至于何时删除应用程序中的缓存数据,这很难说 - 因此您引用的关于缓存失效的引用很难。我可能建议您首先考虑 ActiveRecord 回调,例如 after_commit - http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html,以便在数据库更改时轻松使缓存数据无效。

但这只是一个建议,那里有许多不同的缓存失效方案。

于 2012-11-02T15:25:58.190 回答