1.參數說明
INCLUDES
include /path/to/local.conf
## 引入多個配置文件,如果寫在主conf 的開頭,會被主conf后面的參數覆蓋,如果想引入的配置文件覆蓋主conf,就把該參數寫到末尾
NETWORK
bind 192.168.1.100 10.0.0.1
bind 127.0.0.1 ::1
## bind:綁定redis服務器網卡IP,默認為127.0.0.1,即本地回環地址。這樣的話,訪問redis服務只能通過本機的客戶端連接,而無法通過遠程連接。如果bind選項為空的話,那會接受所有來自於可用網絡接口的連接
port 6379
## 指定redis運行的端口,默認是6379
timeout 0
## 設置客戶端連接時的超時時間,單位為秒。當客戶端在這段時間內沒有發出任何指令,那么關閉該連接。默認值為0,表示不關閉
tcp-keepalive
## 單位是秒,表示將周期性的使用SO_KEEPALIVE檢測客戶端是否還處於健康狀態,避免服務器一直阻塞,官方給出的建議值是300s,如果設置為0,則不會周期性的檢測
## timeout 是client多久沒發命令就關閉該連接,keepalive是定期檢查,檢查到client沒響應再關閉該連接
protected-mode yes
## 是否開啟保護模式,默認開啟。要是配置里沒有指定bind和密碼。開啟該參數后,redis只會本地進行訪問,拒絕外部訪問
tcp-backlog 511
## 此參數確定了隊列中已完成TCP連接(完成三次握手)的隊列的長度,連接超過這個數就阻塞,當然此值必須不大於Linux系統定義的/proc/sys/net/core/somaxconn值,默認是511,而Linux的默認參數值是128,當系統並發量大丙炔客戶端速度緩慢的時候,可以將這二個參數一起參考設定
daemonize yes
## 是否在后台執行,yes:后台運行;no:不是后台運行
supervised no
## 可以通過upstart和systemd管理Redis守護進程
pidfile
## redis的進程文件,當daemonize yes 才會創建進程文件
loglevel
## 指定了服務端日志的級別。級別包括:debug(很多信息,方便開發、測試),verbose(許多有用的信息但是沒有debug級別信息多),notice(適當的日志級別,適合生產環境),warn(只有非常重要的信息)
logfile
## 日志文件的存放目錄,當為空的時候直接輸出
database 16
## 數據庫的數量,默認使用的數據庫是0。可以通過”SELECT 【數據庫序號】“命令選擇一個數據庫,序號從0開始
SNAPSHOTTING
##dump RDB的方式有save 和bgsave 下面的內容默認指的是bgsave
## save 是在主進程下執行save操作,因為redis是單線程單進程,所以在執行這個操作的時候會阻塞
## bgsave 是fork一個子進程來執行save操作,所以 Redis 服務器在BGSAVE 執行期間仍然可以繼續處理客戶端道的請求,但也會阻塞fork的時間
# save ""
save 900 1
save 300 10
save 60 10000
## RDB核心規則配置 save <指定時間間隔> <執行指定次數更新操作>,滿足條件就將內存中的數據同步到硬盤中,
## 若不想用RDB方案,可以把 save "" 的注釋打開
## redis進程執行fork操作創建子進程,RDB持久化過程由子進程負責,完成后自動結束。阻塞只發生在fork階段
stop-writes-on-bgsave-error yes
## 當RDB持久化出現錯誤后,是否依然進行繼續進行工作,yes:不能進行工作,no:可以繼續進行工作
rdbcompression yes
## 配置存儲至本地數據庫時是否壓縮數據,默認為yes。Redis采用LZF壓縮方式,但占用了一點CPU的時間
rdbchecksum yes
## 是否校驗rdb文件;從rdb格式的第五個版本開始,在rdb文件的末尾會帶上CRC64的校驗和。這跟有利於文件的,容錯性,但是在保存rdb文件的時候,可能會有大概10%的性能損耗
dbfilename dump.rdb
#指定本地數據庫文件名,一般采用默認的 dump.rdb
dir /usr/local/redis/var
#數據目錄,數據庫的寫入會在這個目錄。rdb、aof文件也會寫在這個目錄
REPLICATION
replicaof <masterip> <masterport>
## 復制選項,slave復制對應的master
masterauth <master-password>
## 如果master設置了requirepass,那么slave要連上master,需要有master的密碼才行。masterauth就是用來配置master的密碼,這樣可以在連上master后進行認證
replica-serve-stale-data yes
## 當從庫和主庫失去連接或者復制正在進行時
## yes:從庫會繼續響應客戶端的請求
## no: 當有請求來的時候返回一個錯誤”SYNC with master in progress”
replica-read-only yes
## 作為從服務器,默認情況下是只讀的(yes),可以修改成NO,用於寫(不建議)
repl-diskless-sync no
## 是否使用socket方式復制數據。目前redis復制提供兩種方式,disk和socket如果新的slave連上來或者重連的slave無法部分同步,就會執行全量同步,master會生成rdb文件
## disk方式是master創建一個新的進程把rdb文件保存到磁盤,再把磁盤上的rdb文件傳遞給slave
## socket是master創建一個新的進程,直接把rdb文件以socket的方式發給slave
## disk方式的時候,當一個rdb保存的過程中,多個slave都能共享這個rdb文件。socket的方式就的一個個slave順序復制
repl-diskless-sync-delay 5
##diskless復制的延遲時間,防止設置為0。一旦復制開始,節點不會再接收新slave的復制請求直到下一個rdb傳輸,最好等待一段時間,等更多的slave連上來
repl-ping-slave-period 10
## slave根據指定的時間間隔向服務器發送ping請求
repl-timeout 60
## 復制連接超時時間。master和slave都有超時時間的設置
a) slave角度,如果在repl-timeout時間內沒有收到master SYNC傳輸的rdb snapshot數據,
b) slave角度,在repl-timeout沒有收到master發送的數據包或者ping。
c) master角度,在repl-timeout時間沒有收到REPCONF ACK確認信息
repl-disable-tcp-nodelay no
## yes: 禁止tcp nodelay設置,在把數據復制給slave的時候,會減少包的數量和更小的網絡帶寬
## no : 默認我們推薦更小的延遲,但是在數據量傳輸很大的場景下,建議選擇yes
repl-backlog-size 1mb
## 復制緩沖區大小,這是一個環形復制緩沖區,用來保存最新復制的命令,這樣在slave離線的時候,不需要完全復制master的數據,如果可以執行部分同步,只需要把緩沖區的部分數據復制給slave,就能恢復正常復制狀態。緩沖區的大小越大,slave離線的時間可以更長,復制緩沖區只有在有slave連接的時候才分配內存,沒有slave的時候會被釋放
repl-backlog-ttl 3600
## master沒有slave一段時間會釋放復制緩沖區的內存,repl-backlog-ttl用來設置該時間長度。單位為秒
slave-priority 100
## 當master不可用,Sentinel會根據slave的優先級選舉一個master。最低的優先級的slave,當選master,而配置成0,永遠不會被選舉
min-slaves-to-write 3
## redis提供了可以讓master停止寫入的方式,如果配置了min-replicas-to-write,健康的slave的個數小於N,mater就禁止寫入。master最少得有多少個健康的slave存活才能執行寫命令。這個配置雖然不能保證N個slave都一定能接收到master的寫操作,但是能避免沒有足夠健康的slave的時候,master不能寫入來避免數據丟失。設置為0是關閉該功能
min-slaves-max-lag 10
## 延遲小於min-replicas-max-lag秒的slave才認為是健康的slave 單位秒 ,1和0都是關閉這個功能
SECURITY
requirepass foobared
## requirepass配置可以讓用戶使用AUTH命令來認證密碼,才能使用其他命令,使用requirepass的時候需要注意,因為redis太快了,每秒可以認證15w次密碼,簡單的密碼很容易被攻破
rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
## 把危險的命令給修改成其他名稱。比如CONFIG命令可以重命名為一個很難被猜到的命令,這樣用戶不能使用,內部工具還能接着使用
rename-command CONFIG
## 設置成一個空的值,可以禁止一個命令
CLIENT
MAXCLIENTS 10000
## 設置能連上redis的最大客戶端連接數量。默認是10000個客戶端連接,不區分連接是客戶端連接還是內部打開文件或者和slave連接等,如果超過了maxclients,redis會給新的連接發送’max number of clients reached’,並關閉連接
MEMORY MANAGEMENT
maxmemory <bytes>
## redis配置的最大內存容量。當內存滿了,需要配合maxmemory-policy策略進行處理
volatile-lru
## 利用LRU算法移除設置過過期時間的key。
volatile-random
## 隨機移除設置過過期時間的key。
volatile-ttl
## 移除即將過期的key,根據最近過期時間來刪除(輔以TTL)
allkeys-lru
## 利用LRU算法移除任何key。
allkeys-random
## 隨機移除任何key。
noeviction
## 不移除任何key,只是返回一個寫錯誤
maxmemory-policy noeviction
## 上面的這些驅逐策略,如果redis沒有合適的key驅逐,對於寫命令,還是會返回錯誤。redis將不再接收寫請求,只接收get請求
maxmemory-samples 5
## lru檢測的樣本數。使用lru或者ttl淘汰算法,從需要淘汰的列表中隨機選擇sample個key,選出閑置時間最長的key移除
Tips:
REDIS的LFU:按策略采樣 N 個 key(max-memory-samples) 最近最少使用,跟使用的次數有關,淘汰使用次數最少的。 ---volatile從設置了過期時間的key中抽樣,allkeys從所有key中抽樣
REDIS的LRU:按策略采樣 N 個 key(max-memory-samples) 的訪問時間,離現在最久的,淘汰 ---volatile從設置了過期時間的key中抽樣,allkeys從所有key中抽樣
這些內存驅逐策略只在內存超過max-memory的情況發生
過期的鍵的清除是按照惰性刪除 + 定期刪除刪除實現
惰性刪除:當訪問到該過期key時,再刪除
定期刪除: hz 參數控制,表示執行后台任務的頻率,默認為10,此值越大表示redis對"間歇性task"的執行次數越頻繁(次數/秒)。"間歇性task"包括"過期集合"檢測、關閉"空閑超時"的連接等,不是全部設置了過期時間的鍵都檢查,只是抽樣檢查
LAZY FREEING
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
## 以非阻塞方式釋放內存
APPEND ONLY MODE
appendonly no
## 默認不開啟。它的出現是為了彌補RDB的不足(數據的不一致性),所以它采用日志的形式來記錄每個寫操作,並追加到文件中。Redis 重啟的會根據日志文件的內容將寫指令從前到后執行一次以完成數據的恢復工作
## Append Only File是另一種持久化方式,可以提供更好的持久化特性。Redis會把每次寫入的數據在接收后都寫入 appendonly.aof 文件,每次啟動時Redis都會先把這個文件的數據讀入內存里,先忽略RDB文件。
## 默認redis使用的是rdb方式持久化,這種方式在許多應用中已經足夠用了。但是redis如果中途宕機,會導致可能有幾分鍾的數據丟失,根據save來策略進行持久化
## 表示每次寫入都執行fsync,以保證數據同步到磁盤
appendfilename "appendonly.aof"
## 默認文件名
appendfsync everysec
## 表示每秒執行一次fsync,可能會導致丟失這1s數據
appendfsync no
## 不執行fsync,由操作系統保證數據同步到磁盤,速度最快
## aof 持久化策略的配置
no-appendfsync-on-rewrite no
## 在aof重寫或者寫入rdb文件的時候,會執行大量IO,此時對於everysec和always的aof模式來說,執行fsync會造成阻塞過長時間,如果對延遲要求很高的應用,這個字段可以設置為yes,否則還是設置為no,這樣對持久化特性來說這是更安全的選擇,設置為yes表示rewrite期間對新寫操作不fsync,暫時存在內存中,等rewrite完成后再寫入,linux默認fsync策略是30秒。可能丟失30秒數據
auto-aof-rewrite-percentage 10
## aof自動重寫配置。當目前aof文件大小超過上一次重寫的aof文件大小的百分之多少進行重寫,即當aof文件增長到一定大小的時候Redis能夠調用bgrewriteaof對日志文件進行重寫.當前AOF文件大小是上次日志重寫到AOF文件大小的二倍(設置為100)時,自動啟動新的日志重寫過程
auto-aof-rewrite-min-size 64mb
## 設置允許重寫的最小aof文件大小,避免了達到約定百分比但尺寸仍然很小的情況還要重寫
aof-load-truncated yes
## aof文件可能在尾部是不完整的,當redis啟動的時候,aof文件的數據被載入內存(redis宕機或者異常終止不會造成尾部不完整現象。)
## 如果aof load truncated設置為yes,則加載截斷的aof文件,Redis服務器開始發出一個日志來通知用戶事件
## 如果將該選項設置為“否”,則服務器將因錯誤而中止拒絕開始。當選項設置為“否”時,用戶需要在重新啟動之前使用“redis check AOF”實用程序修復AOF文件
aof-use-rdb-preamble yes
## 加載redis時同時加載RDB文件
LUA SCRIPTING
lua-time-limit 5000
如果達到最大時間限制(毫秒),redis會記個log,然后返回error。當一個腳本超過了最大時限。只有SCRIPT KILL和SHUTDOWN NOSAVE可以用,第一個可以殺沒有調write命令的東西。要是已經調用了write,只能用第二個命令殺
REDIS CLUSTER
cluster-enabled yes
## 集群開關,默認不打開集群
cluster-config-file nodes-6379.conf
## 集群配置文件的名稱,每個節點都有一個集群相關的配置文件,持久化保存集群的信息。這個文件並不需要手動配置,這個配置文件有Redis生成並更新,每個Redis集群節點需要一個單獨的配置文件,請確保與實例運行的系統中配置文件名稱不沖突
cluster-node-timeout 15000
## 節點互連超時的閥值。集群節點超時毫秒數
cluster-require-full-coverage yes
## 默認情況下,集群全部的slot有節點負責,集群狀態才為ok,才能提供服務。設置為no,可以在slot沒有全部分配的時候提供服務
CLUSTER DOCKER/NAT support
cluster-announce-ip
cluster-announce-port
cluster-announce-bus-port
##如果配置了以后,Redis節點會將配置中的這些IP和PORT告知客戶端或其他節點。而這些IP和PORT是通過Docker轉發到容器內的臨時IP和PORT的
SLOW LOG
slowlog-log-slower-than 10000
##執行時間比slowlog-log-slower-than大的請求記錄到slowlog里面,單位是微秒,所以1000000就是1秒,負數時間會禁用慢查詢日志,而0則會強制記錄所有命令
slowlog-max-len 128
## 慢查詢日志長度。當一個新的命令被寫進日志的時候,最老的那個記錄會被刪掉。這個長度沒有限制。只要有足夠的內存就行。你可以通過 SLOWLOG RESET 來釋放內存
LATENCY MONITOR
latency-monitor-threshold 0
##延遲監控功能是用來監控redis中執行比較緩慢的一些操作,用LATENCY打印redis實例在跑命令時的耗時圖表,只記錄大於等於下邊設置的值的操作。0的話,就是關閉監視,可以通過CONFIG SET命令動態設置
EVENT NOTIFICATION
notify-keyspace-events ""
# K 鍵空間通知,所有通知以 __keyspace@__ 為前綴
# E 鍵事件通知,所有通知以 __keyevent@__ 為前綴
# g DEL 、 EXPIRE 、 RENAME 等類型無關的通用命令的通知
# $ 字符串命令的通知
# l 列表命令的通知
# s 集合命令的通知
# h 哈希命令的通知
# z 有序集合命令的通知
# x 過期事件:每當有過期鍵被刪除時發送
# e 驅逐(evict)事件:每當有鍵因為 maxmemory 政策而被刪除時發送
# A 參數 g$lshzxe 的別名
#輸入的參數中至少要有一個 K 或者 E,否則的話,不管其余的參數是什么,都不會有任何 通知被分發
ADVANCED CONFIG
hash-max-ziplist-entries 512
## 數據量小於等於hash-max-ziplist-entries的用ziplist,大於hash-max-ziplist-entries用hash
hash-max-ziplist-value 64
## value大小小於等於hash-max-ziplist-value的用ziplist,大於hash-max-ziplist-value用hash
list-max-ziplist-size -2
# -5: max size: 64 Kb <-- not recommended for normal workloads
# -4: max size: 32 Kb <-- not recommended
# -3: max size: 16 Kb <-- probably not recommended
# -2: max size: 8 Kb <-- good
# -1: max size: 4 Kb <-- good
list-compress-depth 0
#0:禁用所有列表壓縮
#1:深度1表示“在列表中的1個節點之后才開始壓縮
#2這里的意思是:不要壓縮頭部和頭部->下一個和尾部->上一個和尾部,但壓縮其他節點
set-max-intset-entries 512
## 數據量小於等於set-max-intset-entries用iniset,大於set-max-intset-entries用set
zset-max-ziplist-entries 128
## 數據量小於等於zset-max-ziplist-entries用ziplist,大於zset-max-ziplist-entries用zset
zset-max-ziplist-value 64
## value大小小於等於zset-max-ziplist-value用ziplist,大於zset-max-ziplist-value用zset
hll-sparse-max-bytes 3000
## value大小小於等於hll-sparse-max-bytes使用稀疏數據結構(sparse),大於hll-sparse-max-bytes使用稠密的數據結構(dense),對空間要求較高的,建議設置到10000左右
activerehashing yes
## Redis將在每100毫秒時使用1毫秒的CPU時間來對redis的hash表進行重新hash,可以降低內存的使用,不能夠接受Redis時不時的對請求有2毫秒的延遲的話,把這項配置為no。如果沒有這么嚴格的實時性要求,可以設置為yes,以便能夠盡可能快的釋放內存
client-output-buffer-limit normal 0 0 0
## 對於normal client,第一個0表示取消hard limit,第二個0和第三個0表示取消soft limit,normalclient默認取消限制
client-output-buffer-limit replica 256mb 64mb 60
## 對於slave client和MONITER client,如果client-output-buffer一旦超過256mb,又或者超過64mb持續60秒,那么服務器斷開客戶端連接
client-output-buffer-limit pubsub 32mb 8mb 60
## 對於訂閱發布系統,如果client-output-buffer一旦超過32mb,又或者超過8mb持續60秒,那么服務器立刻斷開連接
client-query-buffer-limit 1gb
## 這是客戶端查詢的緩存極限值大小
proto-max-bulk-len 512mb
## 在Redis協議中,批量請求,即表示單個字符串通常限制為512 mb
hz 10 redis執行任務的頻率為1s除以hz
## 值越大,請求延遲越小,但CPU使用的越多,通常1~100 ,最大值可以設置到500
aof-rewrite-incremental-fsync yes
## 在aof重寫的時候,如果打開了aof-rewrite-incremental-fsync開關,系統會每32MB執行一次fsync
ACTIVE DEFRAGMENTATION
activedefrag yes
## 開啟自動內存碎片整理
active-defrag-ignore-bytes 100mb
## 啟動活動碎片整理的最小碎片浪費量
active-defrag-threshold-lower 10
## 啟動活動碎片整理的最小碎片百分比
active-defrag-threshold-upper 100
## 啟動活動碎片整理的最大碎片百分比
active-defrag-cycle-min 25
## 內存自動整理占用資源最小百分比
active-defrag-cycle-max 75
## 內存自動整理占用資源最大百分比
2.運行狀態
redis-cli 連接 執行info命令
# Server
redis_version:4.0.14 ## redis版本
redis_git_sha1:00000000 ## Git sha1
redis_git_dirty:0 ## Git dirty flag
redis_build_id:7edfa22c6960c1cf ## redis build id
redis_mode:standalone ## redis 運行模式
os:Linux 2.6.32-504.23.4.el6.x86_64 x86_64 ##服務器宿主操作系統
arch_bits:64 ## 操作系統位數
multiplexing_api:epoll ## 網絡多路復用的事件處理機制
atomicvar_api:sync-builtin ## redis使用的GNU Compiler Collection編譯器
gcc_version:4.4.7 ## 編譯redis時所使用的gcc版本
process_id:30495 ## redis運行時的pid
run_id:c446ff82334b5bfc9309d510043baddf0852e964 ## redis服務器的隨機標識符(用於sentinel和集群)
tcp_port:6379 ## redis 的運行端口
uptime_in_seconds:6 ## redis服務器啟動的總時間(啟動了多久) ,秒
uptime_in_days:0 ## redis服務器啟動總時間,單位是天
hz:10 ## Redis調用內部函數來執行許多后台任務的頻率為每秒10次
lru_clock:10322279 ## 以分鍾為單位進行自增的時鍾,用於LRU管理
executable:/root/redis-server ##redis-server路徑
config_file:/apps/conf/redis/redis.conf ## #配置文件路徑
# Clients
connected_clients:1 ##已連接客戶端的數量(不包括通過從服務器連接的客戶端)
client_longest_output_list:0 ## 當前的客戶端連接中,最長的輸出列表
client_biggest_input_buf:0 ## 當前連接的客戶端中,最大的輸入緩存
blocked_clients:0 ## 正在等待阻塞命令(BLOP、BRPOP、BRPOPLPUSH)的客戶端的數量
# Memory
used_memory:849488 ## 已經使用的內存大小,以字節(byte)為單位
used_memory_human:829.58K ## 已經使用的內存,就是你緩存的數據的大小。
used_memory_rss:7802880 ## 從操作系統的角度,表示redis物理內存的大小,即向OS申請了多少內存)。這個值和 top 、 ps等命令的輸出一致
used_memory_rss_human:7.44M ## 從操作系統的角度,以可讀的形式返回 Redis 已分配的內存總量
used_memory_peak:849488 ## redis的內存消耗峰值(以字節為單位)
used_memory_peak_human:829.58K ## 以可讀的形式顯示內存消耗峰值
used_memory_peak_perc:100.12% ## (used_memory/ used_memory_peak) *100%
used_memory_overhead:836262 ## Redis為了維護數據集的內部機制所需的內存開銷,包括所有客戶端輸出緩沖區、查詢緩沖區、AOF重寫緩沖區和主從復制的backlog
used_memory_startup:786624 ## Redis服務器啟動時消耗的內存
used_memory_dataset:13226 ##用戶數據占用的內存 used_memory-used_memory_overhead
used_memory_dataset_perc:21.04% ## 100%*(used_memory_dataset/(used_memory—used_memory_startup))
total_system_memory:4018548736 ## 整個系統內存
total_system_memory_human:3.74G ## 以可讀的格式,顯示整個系統內存
used_memory_lua:37888 ## Lua腳本存儲占用的內存
used_memory_lua_human:37.00K ## 以可讀的格式,顯示Lua腳本存儲占用的內存
maxmemory:0 ## Redis實例的最大內存配置
maxmemory_human:0B ## 以可讀的格式,,顯示Redis實例的最大內存配置
maxmemory_policy:noeviction ## 當達到maxmemory時的淘汰策略
mem_fragmentation_ratio:9.18 ## used_memory_rss/ used_memory
mem_allocator:jemalloc-4.0.3 ## 內存分配器
active_defrag_running:0 ## 表示沒有活動的defrag任務正在運行,1表示有活動的defrag任務正在運行
lazyfree_pending_objects:0 ## 0表示不存在延遲釋放的掛起對象
## 內存碎片計算 used_memory_rss(向os申請的內容) - used_memory(已經使用的內存)
# Persistence 記錄了RDB持久化和AOF持久化有關的信息
loading:0 ## 一個標志值,記錄了服務器是否正在載入持久化文件
rdb_changes_since_last_save:0 ## 距離最后一次成功創建持久化快照之后,改變了多少個鍵值
rdb_bgsave_in_progress:0 ## 一個標志值,記錄服務器是否正在創建RDB文件
rdb_last_save_time:1587380577 ## 最近一次成功創建RDB文件的UNIX時間戳
rdb_last_bgsave_status:ok ## 一個標志值,記錄了最后一次創建RDB文件的結果是成功還是失敗
rdb_last_bgsave_time_sec:-1 ## 記錄最后一次創建RDB文件耗費的秒數
rdb_current_bgsave_time_sec:-1 ##如果服務器正在創建RDB文件,那么這個值記錄的就是當前的創建RDB操作已經耗費了多長時間(單位為秒)
rdb_last_cow_size:0 ## RDB過程中父進程與子進程相比執行了多少修改(包括讀緩沖區,寫緩沖區,數據修改等)
aof_enabled:0 ## 是否允許aof持久化
aof_rewrite_in_progress:0 ## 標識aof的rewrite操作是否在進行中
aof_rewrite_scheduled:0 ## rewrite任務計划,當客戶端發送bgrewriteaof指令,如果當前rewrite子進程正在執行,那么將客戶端請求的bgrewriteaof變為計划任務,待aof子進程結束后執行rewrite
aof_last_rewrite_time_sec:-1 ## 最近一次aof rewrite耗費的時長
aof_current_rewrite_time_sec:-1 ##如果rewrite操作正在進行,則記錄所使用的時間,單位秒
aof_last_bgrewrite_status:ok ## 上次bgrewriteaof操作的狀態
aof_last_write_status:ok ## 上次aof寫入狀態
aof_last_cow_size:0 ## AOF過程中父進程與子進程相比執行了多少修改(包括讀緩沖區,寫緩沖區,數據修改等)
# Stats
total_connections_received:1 ##新創建連接個數,如果新創建連接過多,過度地創建和銷毀連接對性能有影響,說明短連接嚴重或連接池使用有問題
total_commands_processed:1 ## redis處理的命令數
instantaneous_ops_per_sec:0 ## redis當前的qps,redis內部較實時的每秒執行的命令數
total_net_input_bytes:31 ## redis網絡入口流量字節數
total_net_output_bytes:10163 ## redis網絡出口流量字節數
instantaneous_input_kbps:0.00 ## redis網絡入口kps
instantaneous_output_kbps:0.00 ## redis網絡出口kps
rejected_connections:0 ## 拒絕的連接個數
sync_full:0 ## 主從完全同步成功次數
sync_partial_ok:0 ## 主從部分同步成功次數
sync_partial_err:0 ## 主從部分同步失敗次數
expired_keys:0 ## 因為過期而被自動刪除的數據庫鍵數量
expired_stale_perc:0.00 ## 過期的比率
expired_time_cap_reached_count:0 ## 過期計數
evicted_keys:0 ## 運行以來剔除(超過了maxmemory后)的key的數量
keyspace_hits:0 ## 查找數據庫鍵成功的次數
keyspace_misses:0 ##查找數據庫鍵失敗的次數
pubsub_channels:0 ## #目前被訂閱的頻道數量
pubsub_patterns:0 ## 目前被訂閱的模式數量
latest_fork_usec:0 ##最近一次fork操作阻塞redis進程的耗時數,單位微秒
migrate_cached_sockets:0 ## 是否已經緩存了到該地址的連接
slave_expires_tracked_keys:0 ##從實例過期key數量
active_defrag_hits:0 ## 主動碎片整理命中次數
active_defrag_misses:0 ## 主動碎片整理未命中次數
active_defrag_key_hits:0 ## 主動碎片整理key命中次數
active_defrag_key_misses:0 ## 主動碎片整理key未命中次數
# Replication
role:master ## 實例的角色,是master or slave
connected_slaves:0 ## 連接的slave實例個數
master_replid:9040f8257744249939cff02d0818e279b97d0b87 ##主實例啟動隨機字符串
master_replid2:0000000000000000000000000000000000000000 ## 主實例啟動隨機字符串2
master_repl_offset:0 ## 主從同步偏移量,
second_repl_offset:-1 ## 記錄切換主從后的偏移量
repl_backlog_active:0 ## 復制積壓緩沖區是否開啟
repl_backlog_size:1048576 ##復制積壓緩沖大小
repl_backlog_first_byte_offset:0 ## 復制緩沖區里偏移量的大小
repl_backlog_histlen:0 ## 等於 master_repl_offset - repl_backlog_first_byte_offset,該值不會超過repl_backlog_size的大小
# CPU
used_cpu_sys:0.00 ## 將所有redis主進程在核心態所占用的CPU時求和累計起來
used_cpu_user:0.00 ## 將所有redis主進程在用戶態所占用的CPU時求和累計起來
used_cpu_sys_children:0.00 ## 將后台進程在核心態所占用的CPU時求和累計起來
used_cpu_user_children:0.00 ## 將后台進程在用戶態所占用的CPU時求和累計起來
# Cluster
cluster_enabled:0 ## 實例是否啟用集群模式,0為未啟用
3.redis2.8 和4.0參數對比
|
2.8
|
4.0
|
參數說明
|
---|---|---|---|
supervised |
無 | 有 | 可以通過upstart和systemd管理Redis守護進程 |
always-show-logo | 無 | 有 | 啟動時是否顯示出logo |
repl-diskless-sync | 無 | 有 | ## 是否使用socket方式復制數據。目前redis復制提供兩種方式, ## disk方式是master創建一個新的進程把rdb文件保存到磁盤,再把磁盤上的rdb文件傳遞給slave ## socket是master創建一個新的進程,直接把rdb文件以socket的方式發給slave ## disk方式的時候,當一個rdb保存的過程中,多個slave都能共享這個rdb文件。socket的方式就的一個個slave順序復制 |
repl-diskless-sync-delay | 無 | 有 | diskless復制的延遲時間,防止設置為0。一旦復制開始,節點不會再接收新slave的復制請求,可以設置延遲等更多slave一起復制 |
maxmemory-policy | 默認值:volatile-lru | 默認值:noeviction | redis配置的最大內存容量。當內存滿了,需要配合maxmemory-policy策略進行處理 4.0比2.8多出以下策略: # volatile-lfu -> 使用LFU策略移除過期的key. LFU:最近最少使用,跟使用的次數有關,淘汰使用次數最少的。 LRU:隨機采樣 N 個 key(max-memory-samples) 的訪問時間,離現在最久的,淘汰 |
max-memory-samples | 默認值:3 | 默認值:5 | 檢測的樣本數。使用maxmemory-policy策略,從需要淘汰的列表中隨機選擇sample個key |
slave-announce-ip 5.5.5.5 slave-announce-port 1234 |
無 | 有 | IP:通過檢查slave與master連接使用的套接字的對等體地址自動檢測地址。 當使用端口轉發或網絡地址轉換(NAT)時,slave實際上可以通過(不同的IP和端口對)來到達。 slave可以使用以下兩個選項,以便向master報告一組特定的IP和端口 |
lazyfree-lazy-eviction no |
無 | 有 | 4.0新特性,異步刪除key,4.0以前時阻塞刪除key 當刪除鍵的時候,redis提供異步延時釋放key內存的功能,把key釋放操作放在子線程處理中,減少刪除key對redis主線程的阻塞 注意lazyfree-lazy-eviction,當達到maxmemory的時候可能來不及釋放
|
aof-load-truncated | 無 | 有 | aof文件可能在尾部是不完整的,當redis啟動的時候,aof文件的數據被載入內存(redis宕機或者異常終止不會造成尾部不完整現象。) 如果aof load truncated設置為yes,則加載截斷的aof文件,Redis服務器開始發出一個日志來通知用戶事件 |
aof-use-rdb-preamble no | 無 | 有 | 加載Redis時,可以識別AOF文件以“Redis”開頭字符串並加載前綴RDB文件,然后繼續加載AOF |
cluster參數 | 無 | 有 | 2.8 的redis 還有實現集群模式,3.0開始才有集群模式 |
latency-monitor-threshold | 無 | 有 | 4.0 可以開啟延遲監控功能,用來監控redis中執行比較緩慢的一些操作, 用LATENCY打印redis實例在跑命令時的耗時圖表,只記錄大於等於下邊設置的值的操作 |
list-max-ziplist-size | list-max-ziplist-entries |
有 | 都是設置壓縮list時的閾值 |
hll-sparse-max-bytes | 無 | 有 | value大小小於等於hll-sparse-max-bytes使用稀疏數據結構(sparse),大於hll-sparse-max-bytes使用稠密的數據結構(dense) |
activedefrag | 無 | 有 | 自動內存碎片整理,允許Redis服務器壓縮內存中小數據分配和數據釋放之間的空間,從而允許回收內存 |