Ruby Handle Dalli::RingError-Sinatra中没有可用的服务器

Ruby Handle Dalli::RingError-Sinatra中没有可用的服务器,ruby,memcached,heroku,sinatra,Ruby,Memcached,Heroku,Sinatra,我有一个在Heroku上运行的Sinatra应用程序,它利用Dalli来支持memcached。有时候,memcached服务器无法响应,我会得到以下结果: Dalli::RingError - No server available 处理这种情况的最佳方法是什么?我选择通过显式忽略错误来处理此问题,因为如果缓存组件关闭,我的应用程序功能没有理由失败。您当然可以实现log语句或任何您想要的东西,但我选择什么也不做 我创建了自己的缓存类,并使用它将域代码与Dalli隔离。以下是相关部分: def

我有一个在Heroku上运行的Sinatra应用程序,它利用Dalli来支持memcached。有时候,memcached服务器无法响应,我会得到以下结果:

Dalli::RingError - No server available

处理这种情况的最佳方法是什么?

我选择通过显式忽略错误来处理此问题,因为如果缓存组件关闭,我的应用程序功能没有理由失败。您当然可以实现log语句或任何您想要的东西,但我选择什么也不做

我创建了自己的缓存类,并使用它将域代码与Dalli隔离。以下是相关部分:

def Cache.get(key)
  Configuration.dalliClient.get(key)    
rescue Dalli::RingError
  nil
end

有意思。。设置某种标志(缓存已关闭)是一个好主意吗?每次发生某个操作时都会对其进行测试,这样我们就可以在建立连接后开始使用缓存了?您可以设置一个标志,尽管我选择不这样做,因为这会涉及到一个额外的语句来检查每次缓存使用时的标志,如果你不打算每次都打电话给memcached,你还必须想办法知道memcached一回来。日志语句或某种通知管理员memcached已关闭的方式似乎更合适。值得注意的是,在某些情况下,这不是一个好主意。如果服务器使用大量缓存来保持活动状态,那么如果您为服务器的使用付费,那么在缓存服务器关闭时允许服务器生存并烧坏而不是简单地死掉可能会降低成本效益