缓存数据未在Sinatra / memcached应​​用程序中过期

时间:2011-09-23 10:35:15

标签: heroku memcached sinatra

我在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)

我的代码中出现问题,为什么缓存数据没有到期?

1 个答案:

答案 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)