我在Heroku上有一个Sinatra应用程序,我从许多第三方API获取数据并将其存储在内存缓存中,以加快加载时间。
但是数据没有更新:启用插件后第一次加载的数据一直保留在memcache中,并且不会过期。
以下是我的代码的一部分:
set :cache, Dalli:client.new
configure do
set :cache_default_expiry, 300
end
def get_apidata()
apidata = settings.cache.get('apidata')
if apidatadata.nil?
# getting data from API
settings.cache.set('apidata',apidata)
我的代码中出现问题,为什么缓存数据没有到期?
答案 0 :(得分:1)
从我的测试中set :cache_default_expiry
不起作用。你可以做的是:
set :cache, Dalli::Client.new(ENV['MEMCACHE_SERVERS'],
:username => ENV['MEMCACHE_USERNAME'],
:password => ENV['MEMCACHE_PASSWORD'],
:expires_in => 300)