gpt4 book ai didi

ruby-on-rails - Rails Cache 正在存储值但不工作?

转载 作者:行者123 更新时间:2023-12-04 05:49:11 25 4
gpt4 key购买 nike

我正在将外部 API 响应缓存到 Rails 中。我从缓存中读取并按预期返回 nil。我将其存储到缓存中,它返回 true,我再次读取它并返回我的值,但如果我从客户端发出另一个具有相同参数的请求,它返回 nil,就好像该值未被存储一样。

    def create
cache = ActiveSupport::Cache::MemoryStore.new
url = "http://api.openweathermap.org/data/2.5/weather?zip=" + params[:zip] +"&units=imperial&APPID=4e66533961b500086bf6bd7c37d4b847"
@weather = fetch_weather(url)
p cache.read(params[:zip])
weather = cache.read(params[:zip])
p weather
p weather.nil?
if weather.nil?
cache.write(params[:zip],@weather,:expires_in => 30.minutes)
end
p cache.read(params[:zip])

render json: @weather
end

例如,我将第一次使用邮政编码 94016,它会返回

nil
nil
true
<RestClient::Response 200 "{\"coord\":{\"...">

我将使用相同的邮政编码再次运行它并获得相同的响应。我在我的开发环境中启用了缓存。我不确定为什么它不起作用。谢谢。

最佳答案

因为每次您请求此操作时,您都会创建一个缓存存储:

cache = ActiveSupport::Cache::MemoryStore.new

你应该把这一行放在你的配置文件中:

config.cache_store = :memory_store, { size: 64.megabytes }

然后使用 Rails.cache 获取或设置缓存。

关于ruby-on-rails - Rails Cache 正在存储值但不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49327974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com