Я использую graphql
для моего api rails. И используйте redis
для кеш-хранилища.
В запросе graphql я использую кеш для оптимизации производительности:
graphql / types / query_type.rb
field :labels, [Types::LabelType], null: false do
description 'Get all food labels'
end
def labels
Rails.cache.fetch("labels", expires_in: 24.hours) do
Label.all
end
end
10 меток загружаются в базу данных, и когда я тестирую запрос в localhost:3000/graphiql
, он показывает 10 результатов правильно. Однако, если я вручную удалю строку в базе данных, она вернет 9 записей вместо 10 кешированных результатов.
Вот моя конфигурация среды:
config / environment / development.rb
if Rails.root.join('tmp', 'caching-dev.txt').exist?
config.action_controller.perform_caching = true
config.cache_store = :redis_cache_store, { url: ENV.fetch("REDIS_URL_CACHING", "redis://localhost:6379/0") }
config.public_file_server.headers = {
'Cache-Control' => "public, max-age=#{2.days.to_i}"
}
else
config.action_controller.perform_caching = false
config.cache_store = :null_store
end
Я запустил rails dev:cache
, и в tmp
каталоге есть caching-dev.txt
. Что мне здесь не хватает?