Redis 詳細設定指南
Redis 是廣受歡迎的開放原始碼資料庫,專門用於在記憶體中儲存資料。除了預設設定外,Redis 還提供許多設定參數,讓您能夠針對特定應用程式需求調整其行為。本指南將提供 Redis 詳細設定指南,幫助您優化 Redis 設定以獲得最佳效能。
常見設定參數
記憶體管理
- maxmemory (bytes):設定 Redis 可使用的最大記憶體量。
- maxmemory-policy:當 Redis 達到 maxmemory 限制時,決定如何從 Redis 中刪除鍵值對的演算法。可選值包括 volatile-lru, volatile-random, volatile-ttl, allkeys-lru, allkeys-random, noeviction。
- maxmemory-samples (n):在執行 LRU 或隨機演算法時,用於抽樣的鍵值對數量。
資料儲存
- save (seconds n):定期將 Redis 資料庫儲存到磁碟的頻率。
- rdbcompression (yes/no):是否將 RDB 檔案進行壓縮。
- aof-rewrite-percentage (n%):觸發 AOF 檔案重新寫入的觸發百分比。
- aof-rewrite-min-size (bytes):觸發 AOF 檔案重新寫入的最小 AOF 檔案大小。
效能調整
- maxclients (n):Redis 可以同時處理的最大客戶端連線數。
- tcp-keepalive (yes/no):啟用 TCP 保活功能,以防止空閒連線被關閉。
- tcp-keepalive-idle (seconds):在 TCP 保活探測之前連線處於空閒狀態的時間量。
- hash-max-zipmap-entries (n):哈希資料結構自動轉換為 ziplist 之前允許的最大 zipmap 條目數。
- list-max-ziplist-entries (n):清單資料結構自動轉換為 ziplist 之前允許的最大 ziplist 條目數。
安全性
- requirepass password:設定 Redis 驗證密碼。
- bind ip-address:將 Redis 伺服器繫結到特定 IP 地址。
- protected-mode (yes/no):僅允許已驗證的客戶端連線到 Redis。
進階設定
複寫 (Replication)
- repl-diskless-sync (yes/no):禁用複寫期間的 RDB 檔案傳輸。
- repl-diskless-sync-delay (seconds):在使用無磁碟複
寫時,在執行複寫之前等待刪除後台 RDB 檔案的秒數。
- repl-disable-tcp-nodelay (yes/no):禁用 TCP_NODELAY 選項,以改善複寫效能。
叢集 (Clustering)
- cluster-enabled (yes/no):啟用 Redis 叢集。
- cluster-config-file name:設定 Redis 叢集設定檔。
- cluster-node-timeout (milliseconds):Redis 叢集節點超時時間。
監控
- slowlog-log-slower-than (microseconds):記錄執行時間超過指定微秒的指令。
- slowlog-max-len (n):慢查詢日誌中儲存的查詢數量。
- latency-monitor-threshold (microseconds):記錄執行時間超過指定微秒的指令。
設定範例
以下是一個 Redis 設定範例,針對效能和穩定性進行了最佳化:
maxmemory 1gb
maxmemory-policy volatile-lru
maxmemory-samples 10
save 60 1200
rdbcompression yes
aof-rewrite-percentage 100
aof-rewrite-min-size 64mb
maxclients 10000
tcp-keepalive yes
tcp-keepalive-idle 300
hash-max-zipmap-entries 512
list-max-ziplist-entries 512
requirepass password
bind 127.0.0.1
protected-mode yes
結論
透過調整 Redis 設定,您可以優化其效能、穩定性並滿足特定應用程式的需求。本指南提供了詳細的 Redis 設定參數說明,以及建議的最佳化設定範例。透過遵循這些指南,您可以確保 Redis 滿足您的資料儲存和快取需求。