Подтвердить что ты не робот

Каково время истечения времени по умолчанию для кеша Rails?

Я сделал несколько поисковых запросов и не смог найти ответ на этот вопрос. Rails позволяет указать время истечения для своего кеша следующим образом:

Rails.cache.fetch("my_var", :expires_in => 10.seconds)

Но что произойдет, если я ничего не укажу:

Rails.cache.fetch("my_var")

Он никогда не истекает? Есть ли значение по умолчанию? Как я могу явно определить то, что никогда не истекает?

4b9b3361

Ответ 1

Это зависит от того, какое хранилище кеша вы используете. Rails предоставляет несколько, один из них наиболее популярный Memcached. Одной из ключевых особенностей Memcached является то, что автоматически истекает старые неиспользуемые записи, поэтому вы можете забыть о: expire option.

Другие хранилища кешей Rails, такие как память или хранилище redis, будут недействительными, если вы явно не укажете, когда это сделать.

Подробнее о том, как истекает срок действия ключа кеша в Rails.

Ответ 2

Используя Dalli для memcached (кто этого не делает), время истечения по умолчанию никогда не будет, как говорит @Rahul. Вам не нужно беспокоиться о сборке мусора, поскольку @icem говорит, memcached выбрасывает старые неиспользуемые записи.

См. официальную документацию dalli:

Expires_in default is 0, which means never

https://github.com/mperham/dalli#configuration

вы можете установить глобальное время истечения срока действия для dalli

config.cache_store = :dalli_store, { expires_in: 1.day}

и для лучшего индивидуального контроля:

Rails.cache.write "some_cache_key", some_cachable_string, expires_in: 3.hours

новый документ http://apidock.com/rails/ActiveSupport/Cache/Store/write не говорит много, но старый делает: http://apidock.com/rails/ActiveSupport/Cache/MemCacheStore/write

вручную истекает кеш (если произошло какое-то событие):

Rails.cache.delete "some_cache_key"

Ответ 3

Они никогда не истекают. (для кеша на основе FileStore, который по умолчанию используется в Rails)

Если они находятся в хранилище кеша, это значение будет использоваться. Таким образом, всегда рекомендуется добавлять по крайней мере любое время истечения срока действия.