我试图理解memcache如何工作(如果)你填满分配的内存缓冲区。特别是我想了解缓存中键值对的生命周期。我在讨论rails中的低级缓存操作,我直接创建键/值对。例如像
这样的命令Rails.cache.write key, cached_data
Rails.cache.fetch key
假设为了参数我有一个无限循环,它只是生成随机UUID作为密钥并存储随机数据。缓存填满后会发生什么?旧项目是否会被淘汰或是否有一些特定的算法来处理这种可能性? 我在其他地方读过“缓存失效是一个难题”。
试着了解它的实际效果。
也许一些简单的代码示例说明了创建和销毁缓存数据的最佳方法?您是否必须明确定义条目何时到期?
答案 0 :(得分:1)
MemcacheD在幕后处理这个问题。看看这个问题 -
您可以定义到期参数,查看此Wiki页面 -
http://code.google.com/p/memcached/wiki/NewProgramming#Cache_Invalidation
对于特定于应用程序逻辑的高速缓存失效(而不仅仅是幕后内存耗尽),delete函数将简单地删除数据。至于何时删除应用程序中的缓存数据,这更难说 - 因此您引用的关于缓存失效的引用很难。我建议你首先考虑像After_commit - http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html之类的ActiveRecord回调,以便在数据库发生变化时轻松使缓存数据无效。
但这只是一个建议,那里有许多不同的缓存失效方案。