我正在使用scala玩遊戲框架。我還使用RedisScala驅動程序(這一個https://github.com/etaty/rediscala)與Redis進行通信。如果Redis不包含數據,那麼我的應用程序正在MongoDB中查找數據。 當Redis發生故障或僅僅因爲某種原因不可用時,應用程序等待響應時間過長。如何在這種情況下實現故障轉移策略。如果請求花費太長時間,我想停止請求Redis。在Redis重新聯機時開始與他們合作。 爲了澄清這個問題我的代碼是像現在以下RedisClient失敗策略
private def getUserInfo(userName: String): Future[Option[UserInfo]] = {
CacheRepository.getBaseUserInfo(userName) flatMap{
case Some(userInfo) =>
Logger.trace(s"AuthenticatedAction.getUserInfo($userName). User has been found in cache")
Future.successful(Some(userInfo))
case None =>
getUserFromMongo(userName)
}
}
感謝您提供如此詳細的概述。第1點正是我目前正在做的。我的問題主要是關於第3點。據我看到RedisScala客戶端有演員試圖每2秒重新連接,但我不知道如何從它獲得有關連接的信息。如果我可以從RedisScala獲得這些信息,那麼當Redis無法訪問時,我可能會錯過請求數據的步驟。我認爲最簡單的方法就是使用Future,並在最後提到超時。謝謝你的幫助。 – Kir