2011-09-23 47 views
1

我在Heroku上有一个Sinatra应用程序,我从许多第三方API获取数据并将其存储在内存缓存中,以加快加载时间。在Sinatra/memcached应​​用程序中不会过期的缓存数据

但是数据并未更新:启用插件后第一次加载的数据始终停留在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

从我的测试set :cache_default_expiry不起作用。你可以做的是这样的:

set :cache, Dalli::Client.new(ENV['MEMCACHE_SERVERS'], 
          :username => ENV['MEMCACHE_USERNAME'], 
          :password => ENV['MEMCACHE_PASSWORD'], 
          :expires_in => 300) 
相关问题