Configuration
在沒有 TTL 的 redis 中長期失去持久性
我們的鑰匙在一段時間內失去了,我們無法找到問題所在。
我們同時使用 AOF 和 RDB,配置如下:
關係數據庫:
save 900 1 save 300 10 save 60 10000 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dbfilename dump.rdb
AOF:
appendonly yes appendfilename "appendonly.aof" appendfsync everysec no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb aof-load-truncated yes
如您所見,沒有花哨的…都是redis預設值。
我試圖創建密鑰並重新啟動伺服器。在這種情況下,鑰匙還在。我無法確定鑰匙何時失去或為什麼?日誌文件沒有幫助,因為我不知道在日誌中查詢什麼或何時查詢。
我所知道的是我的鑰匙每隔大約一個月就會失去一次。
如何在redis中調試這種問題?
前言:Redis 中的鍵不會被刪除,除非明確請求或伺服器配置了驅逐策略(並且 RAM 受到壓力)。
遺憾的是,失去密鑰的最常見原因是安全性,或者說缺乏安全性。腳本兒童、leet haxors 和普通壞人利用不受保護的伺服器並造成各種破壞。您需要做的第一件事是確保伺服器受到適當的保護(即配置了密碼並且不向外界公開)。有關更多詳細資訊,請參閱https://redis.io/topics/security
在排除了攻擊和驅逐策略配置之後,唯一剩下的解釋就是一段流氓程式碼。從伺服器端,您可以嘗試使用
MONITOR
命令或通過配置鍵空間事件並訂閱相關消息來跟踪此行為。