将Rails 3与memcachestore和memcache-client gem一起使用。
登台环境中的macbook-pro或memcache服务器上的本地内存缓存。
我做的时候
Rails.cache.increment(key, 1)
跟随
非常快(几行)Rails.cache.read(key, :raw => true)
我得到了原来的价值。如果它坐了一秒然后我调用read(或在控制台中),我得到正确递增的值。
在我的工作中,我正在使用增量调用中返回的值,但这似乎不应该发生。
有什么想法吗?
答案 0 :(得分:0)
此问题在博文中有所描述 http://thomasmango.com/2009/06/25/a-better-rails-cache-increment/
,建议的解决方法是:
class Util::Cache
def self.increment(key, amount = 1)
if (value = Rails.cache.read(key)).nil?
Rails.cache.write(key, (value = amount))
else
Rails.cache.write(key, (value = value + amount))
end
return value
end
def self.decrement(key, amount = 1)
if (value = Rails.cache.read(key)).nil?
value = 0
else
Rails.cache.write(key, (value = value - amount))
end
return value
end
end