Rails.cache.read после Rails.cache.increment не дает правильное значение - PullRequest
1 голос
/ 26 апреля 2011

Использование Rails 3 с memcachestore и гемом memcache-client.

Локальный memcache на серверах macbook-pro или memcache в промежуточной среде.

Когда я выполняю

Rails.cache.increment(key, 1)

, очень быстро (в несколько строк)) на

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

Я получаю свое первоначальное значение.Если он сидит в течение секунды, а затем я вызываю read (или в консоли), я получаю правильно увеличенное значение.

В качестве моей работы я использую возвращаемое значение из вызова приращения, но этоне похоже, что это должно происходить.

Есть идеи?

1 Ответ

0 голосов
/ 06 декабря 2013

Эта проблема описана в сообщении в блоге 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...