2011-04-26 51 views
1

將Rails 3與memcachestore和memcache-client gem結合使用。Rails.cache.read後面的Rails.cache.read沒有給出正確的值

臨時環境中macbook-pro或memcache服務器上的本地memcache。

當我做了

Rails.cache.increment(key, 1) 

隨後很快(W /在幾行)由

Rails.cache.read(key, :raw => true) 

我讓我的原始值。如果它坐了一秒鐘,然後我打電話給閱讀(或在控制檯),我得到正確增加的值。

正如我的工作,我使用增量調用返回的值,但這似乎不應該發生。

任何想法?

+0

聽起來像這樣的事件驅動的問題。你沒有使用EventMachine嗎? – Daniel 2011-05-22 20:14:55

回答

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 
相關問題