2016-11-05 76 views
0

我們使用redis作爲緩存。有些情況下,某些密鑰被刪除,我們找不到原因。我把CONFIG SET notify-keyspace-events KEgxe的redis keyspace/keyevent放在這個通知上我正在把日誌。但是我無法在我的核心日誌中找到,也沒有在這個redis中找到某些密鑰。他們在RDBMS中有一些數據,所以我們確信這些密鑰必須已經進入Redis。我們非常陷入失落狀態,我們應該在什麼基礎上進行調試。Redis鍵自動刪除

Redis的信息說它有〜100MB的使用量,這對我來說看起來還不錯。如何堅持數據和密鑰。

回答

0

2個可能的原因:

  1. 客戶端無法寫入Redis的
  2. 一些客戶端刪除這些丟失的鑰匙

您可以嘗試訂閱關於重大變化的一切:CONFIG SET notify-keyspace-events AKE和日誌將這些更改記入日誌以找出問題。

+0

對於第一點,至少對於某些鍵,我確定它們在redis中,就像我見過的那樣。 對於第二點,我使用'KEgxe'進行日誌記錄,我認爲這對於del來說足夠了,因爲日誌記錄'AKE'將是所有事件。無論如何,我會把'AKE'留意一下。謝謝。 – theGamblerRises

+0

hi @for_stack,我也嘗試過'AKE',但我在日誌中找不到任何東西。情況變得更糟。我有一些懷疑,機器或Redis重新啓動,但在這種情況下,我應該得到連接錯誤。 並且如果redis的最大限制數量的鍵或大小,所以政策是lru。我的問題是,如果redis'清除'這些密鑰,它們是否也會進入密鑰空間通知 – theGamblerRises

+0

@theGamblerRises如果redis過期或被驅逐,它會發送通知。是否有可能,你的應用程序意外地調用了'flushdb'或'flushall'?由於這些命令會影響太多密鑰,因此Redis不會發送任何通知。 –