memcache和rails如何在最大限制下工作?

时间:2012-11-02 15:20:30

标签: ruby-on-rails memcached cache-control

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

这样的命令
Rails.cache.write key, cached_data

Rails.cache.fetch key 

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

试着了解它的实际效果。

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

1 个答案:

答案 0 :(得分:1)

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

Memcache and expired items

您可以定义到期参数,查看此Wiki页面 -

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

对于特定于应用程序逻辑的高速缓存失效(而不仅仅是幕后内存耗尽),delete函数将简单地删除数据。至于何时删除应用程序中的缓存数据,这更难说 - 因此您引用的关于缓存失效的引用很难。我建议你首先考虑像After_commit - http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html之类的ActiveRecord回调,以便在数据库发生变化时轻松使缓存数据无效。

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