Redis使用——Redis的redis.conf配置注釋詳解(一)

Redis使用——Redis的redis.conf配置注釋詳解(一)

背景

日常我們開發(fā)時(shí),我們會(huì)遇到各種各樣的奇奇怪怪的問題(踩坑o(╯□╰)o),這個(gè)常見問題系列就是我日常遇到的一些問題的記錄文章系列,這里整理匯總后分享給大家,讓其還在深坑中的小伙伴有繩索能爬出來。
同時(shí)在這里也歡迎大家把自己遇到的問題留言或私信給我,我看看其能否給大家解決。

開發(fā)環(huán)境

  • 系統(tǒng):Ubuntu
  • 工具:Docker
  • 鏡像:Redis
  • 官方配置:redis.conf

內(nèi)容

本節(jié)對(duì)于其Redis的redis.conf配置進(jìn)行注釋翻譯,確定各個(gè)配置的主要用途,便于日后配置使用,由于redis.conf中的配置較多,因此我們拆分為四節(jié)進(jìn)行,話不多說下面開始。

# Redis 配置文件示例。
#
# 注意為了讀取配置文件,啟動(dòng)時(shí)Redis 必須以配置文件的路徑作為第一個(gè)參數(shù):
# ./redis-server /path/to/redis.conf

# 單位注意:當(dāng)需要內(nèi)存大小時(shí), 可以用1k 5GB 4M 等形式指定它:
# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes
#
# 單位不區(qū)分大小寫,所以 1GB 1Gb 1gB 都是一樣的。

################################## INCLUDES ###################################

# 在此處包含一個(gè)或多個(gè)其他配置文件。  如果您有一個(gè)適用于所有 Redis 服務(wù)器的標(biāo)準(zhǔn)模板,但還需要
# 自定義一些每個(gè)服務(wù)器的設(shè)置,這將非常有用。包含文件可以包含其他文件,因此請(qǐng)明智地使用它。
#
# 注意選項(xiàng)“include”不會(huì)被來自管理員或Redis Sentinel的命令“CONFIG REWRITE”重寫。
# Redis的特性是最后處理的配置指令為最終生效指令。
# 因此在使用時(shí)您最好將標(biāo)準(zhǔn)模板放在第一行,其他需要覆蓋的配置放在最后一行,這樣使其準(zhǔn)確生效,以免在運(yùn)行時(shí)被覆蓋。
#
# include /path/to/local.conf
# include /path/to/other.conf

################################## MODULES #####################################

# 在啟動(dòng)時(shí)加載模塊。如果服務(wù)器無法加載模塊它將中止??梢允褂枚鄠€(gè) loadmodule 指令。
#
# loadmodule /path/to/my_module.so
# loadmodule /path/to/other_module.so

################################## NETWORK #####################################

# 默認(rèn)情況下,如果沒有“ bind" 配置指令被指定,Redis 偵聽來自主機(jī)上所有可用網(wǎng)絡(luò)接口的連接。
# 可以只聽一個(gè)或多個(gè)選定的接口使用"bind" 配置指令,后跟一個(gè)或多個(gè) IP 地址。
# 例如:
#
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1 ::1
#
# ~~~ 警告~~~ 如果運(yùn)行Redis 的計(jì)算機(jī)直接暴露在互聯(lián)網(wǎng)上,那么綁定到所有接口都是危險(xiǎn)的,并且實(shí)例將公開給互聯(lián)網(wǎng)上的每個(gè)人。
# 因此,默認(rèn)情況下,我們?nèi)∠⑨屢韵耣ind指令,這將強(qiáng)制 Redis 僅偵聽IPv4 環(huán)回接口地址(這意味著 Redis 將只能接受來自運(yùn)行它的同一主機(jī)的客戶端連接)。
# 如果您確定要讓您的實(shí)例收聽所有接口只需注釋掉以下行即可。
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bind 127.0.0.1

# 保護(hù)模式是一層安全保護(hù),為了避免Redis 實(shí)例在互聯(lián)網(wǎng)上保持打開狀態(tài)被訪問和利用。
# 當(dāng)保護(hù)模式開啟并且如果:
# 1) 服務(wù)器沒有使用"bind" 指令顯式綁定到一組地址。
# 2) 沒有配置密碼。
#
# 服務(wù)器只接受來自客戶端的連接
# IPv4 和 IPv6 環(huán)回地址 127.0.0.1 和 ::1,以及來自 Unix 域套接字。
# 默認(rèn)情況下啟用保護(hù)模式。你應(yīng)該禁用它
# 你確定你希望來自其他主機(jī)的客戶端連接到 Redis 即使沒有配置身份驗(yàn)證,也沒有一組特定的接口使用“bind”指令顯式列出。
protected-mode yes

# 接受指定端口上的連接,默認(rèn)為 6379 (IANA #815344)。如果指定了port 0,Redis 將不會(huì)監(jiān)聽 TCP 套接字。
port 6379

# TCP listen() backlog.
#
# 在高每秒請(qǐng)求數(shù)的環(huán)境中,您需要大量的 backlog 來避免客戶端連接緩慢的問題。請(qǐng)注意,Linux 內(nèi)核會(huì)默默地將其截?cái)酁?/proc/sys/net/core/somaxconn 的值,
# 因此確保提高 somaxconn 和 tcp_max_syn_backlog 的值以獲得所需的效果。
tcp-backlog 511

# Unix 套接字。
#
# 指定將用于偵聽傳入連接的 Unix 套接字的路徑。它是沒有默認(rèn)值的,因此如果未指定,那Redis 將不會(huì)在 unix 套接字上偵聽
#
# unixsocket /tmp/redis.sock
# unixsocketperm 700

# 客戶端空閑 N 秒后關(guān)閉連接(0 表示禁用)
timeout 0

# TCP keepalive.
#
# 如果非零,使用 SO_KEEPALIVE 在沒有通信的情況下向客戶端發(fā)送 TCP ACK 。這有兩個(gè)原因:
#
# 1) 檢測死對(duì)等點(diǎn)。
# 2) 強(qiáng)制中間的網(wǎng)絡(luò)設(shè)備認(rèn)為連接是alive 的。
#
# 在 Linux 上,指定的值(以秒為單位)是用于發(fā)送 ACK 的時(shí)間段。注意關(guān)閉連接需要雙倍的時(shí)間。在其他內(nèi)核上,周期取決于內(nèi)核配置。
# 此選項(xiàng)的合理值是 300 秒,這是從 Redis 3.2.1 開始的新Redis 默認(rèn)值。
tcp-keepalive 300

################################# TLS/SSL #####################################

# 默認(rèn)情況下,TLS/SSL 是禁用的。要啟用它,“tls-port”配置指令可用于定義 TLS 偵聽端口。
# 要在默認(rèn)端口上啟用 TLS ,請(qǐng)使用:
# 
# port 0
# tls-port 6379

# 配置 X.509 證書和私鑰,用于向連接的客戶端、主節(jié)點(diǎn)或集群對(duì)等方驗(yàn)證服務(wù)器。這些文件應(yīng)該是PEM 格式。
#
# tls-cert-file redis.crt 
# tls-key-file redis.key

# 配置DH 參數(shù)文件以啟用Diffie-Hellman (DH) 密鑰交換:
#
# tls-dh-params-file redis.dh

# 配置用于驗(yàn)證 TLS/SSL 客戶端和對(duì)等方的 CA 證書包或目錄。Redis 需要至少一個(gè)顯式配置。這些,并且不會(huì)隱式使用系統(tǒng)范圍的配置。
#
# tls-ca-cert-file ca.crt
# tls-ca-cert-dir /etc/ssl/certs

# 默認(rèn)情況下,TLS 端口上的客戶端(包括副本服務(wù)器)需要使用有效的客戶端證書進(jìn)行身份驗(yàn)證. 
# 如果指定“no”,則不需要且不接受客戶端證書。如果指定了“optional”,則接受客戶端證書,并且如果提供,則必須是有效的,但不是必需的。
#
# tls-auth-clients no
# tls-auth-clients optional

# 默認(rèn)情況下,Redis 副本不會(huì)嘗試與其主服務(wù)器建立 TLS 連接。
# 使用以下指令在復(fù)制鏈接上啟用 TLS。
#
# tls-replication yes

# 默認(rèn)情況下,Redis Cluster 總線使用普通 TCP 連接。要為總線協(xié)議啟用 TLS,請(qǐng)使用以下指令:
#
# tls-cluster yes

# 明確指定要支持的 TLS 版本。允許的值不區(qū)分大小寫并包括“TLSv1”、“TLSv1.1”、“TLSv1.2”、“TLSv1.3”(OpenSSL >= 1.1.1)或任意組合。
# 要僅啟用 TLSv1.2 和 TLSv1.3,請(qǐng)使用:
# 
# tls-protocols "TLSv1.2 TLSv1.3"

# 配置允許的密碼。有關(guān)此字符串的語法的更多信息,請(qǐng)參見 ciphers(1ssl) 聯(lián)機(jī)幫助頁。
# 注意:此配置僅適用于<= TLSv1.2。
#
# tls-ciphers DEFAULT:!MEDIUM

# 配置允許的 TLSv1.3 密碼套件。請(qǐng)參閱 ciphers(1ssl) 聯(lián)機(jī)幫助頁以獲取有關(guān)此字符串語法的更多信息,特別是 TLSv1.3 密碼套件
#
# tls-ciphersuites TLS_CHACHA20_POLY1305_SHA256

# 選擇密碼時(shí),使用服務(wù)器的首選項(xiàng)而不是客戶端首選項(xiàng)。默認(rèn)情況下,服務(wù)器遵循客戶端的偏好。
#
# tls-prefer-server-ciphers yes

# 默認(rèn)情況下,TLS 會(huì)話緩存已啟用,以允許支持它的客戶端更快、更便宜地重新連接。使用以下指令禁用緩存。
#
# tls-session-caching no

# 更改緩存的 TLS 會(huì)話的默認(rèn)數(shù)量。0值將緩存設(shè)置為無限大小。默認(rèn)大小為 20480。
#
# tls-session-cache-size 5000

# 更改緩存 TLS 會(huì)話的默認(rèn)超時(shí)時(shí)間。默認(rèn)超時(shí)時(shí)間為 300 秒。
#
# tls-session-cache-timeout 60

################################# GENERAL #####################################

# 默認(rèn)情況下,Redis 不作為守護(hù)進(jìn)程運(yùn)行。如果需要,請(qǐng)使用“yes”。注意Redis在daemonized時(shí)會(huì)在/var/run/redis.pid中寫入pid文件。
daemonize no

# 如果您從 upstart 或 systemd 運(yùn)行 Redis,Redis 可以加入你的管理樹中與您的監(jiān)督樹。
# 選項(xiàng):
#   supervised no      - no supervision interaction
#   supervised upstart - signal upstart by putting Redis into SIGSTOP mode
#                        requires "expect stop" in your upstart job config
#   supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET
#   supervised auto    - detect upstart or systemd method based on
#                        UPSTART_JOB or NOTIFY_SOCKET environment variables
# 注意:這些監(jiān)督方法僅表示“進(jìn)程已準(zhǔn)備好”
#  他們不能連續(xù) ping 回你的supervisor.
supervised no

# 如果指定了 pid 文件,Redis 在啟動(dòng)時(shí)將其寫入指定的位置并在退出時(shí)將其刪除。
# 當(dāng)服務(wù)器運(yùn)行非守護(hù)進(jìn)程時(shí),如果沒有在配置中指定,則不會(huì)創(chuàng)建 pid 文件。當(dāng)服務(wù)器被守護(hù)時(shí),即使沒有指定,也會(huì)使用pid 文件#,默認(rèn)為“/var/run/redis.pid”。
#
# 創(chuàng)建一個(gè)pid文件是最好的努力:如果Redis無法創(chuàng)建它沒有什么不好的事情發(fā)生,服務(wù)器將啟動(dòng)并正常運(yùn)行。
#
pidfile /var/run/redis_6379.pid

# 指定服務(wù)器詳細(xì)級(jí)別。
# 這可以是以下之一:
# debug (很多信息,對(duì)開發(fā)/測試有用)
# verbose (許多很少有用的信息,但不像調(diào)試級(jí)別那樣混亂)
# notice (適度冗長,你可能在生產(chǎn)中想要什么)
# warning (僅記錄非常重要/關(guān)鍵的消息)
loglevel notice

# 指定日志文件名。也可以使用空字符串強(qiáng)制Redis 登錄標(biāo)準(zhǔn)輸出。請(qǐng)注意,如果您使用標(biāo)準(zhǔn)輸出進(jìn)行日志記錄但守護(hù)進(jìn)程,日志將發(fā)送到 /dev/null 
logfile ""

# 要啟用系統(tǒng)記錄器的日志記錄,只需將 'syslog-enabled' 設(shè)置為 yes,并可選擇更新其他syslog 參數(shù)以滿足您的需求。
# syslog-enabled no

# 指定系統(tǒng)日志標(biāo)識(shí)。
# syslog-ident redis

# 指定系統(tǒng)日志工具。必須是 USER 或介于 LOCAL0-LOCAL7 之間。
# syslog-facility local0

# 設(shè)置數(shù)據(jù)庫數(shù)量。默認(rèn)數(shù)據(jù)庫是 DB 0,您可以使用 SELECT <dbid> 在每個(gè)連接的基礎(chǔ)上選擇不同的數(shù)據(jù)庫,其中dbid 是介于 0 和 'databases'-1 
databases 16

# 默認(rèn)情況下 Redis 顯示 ASCII 徽標(biāo)僅當(dāng)開始記錄到標(biāo)準(zhǔn)輸出并且標(biāo)準(zhǔn)輸出是 TTY 時(shí)?;旧线@意味著通常ASCII徽標(biāo)僅在交互式會(huì)話中顯示。
# 但是,通過將以下選項(xiàng)設(shè)置為 yes,可以強(qiáng)制執(zhí)行 4.0 之前的行為并始終在啟動(dòng)日志中顯示# ASCII 徽標(biāo)。
always-show-logo yes

################################ SNAPSHOTTING  ################################
#
# 將 DB 保存在磁盤上:
#
#   save <seconds> <changes>
#
#   如果發(fā)生給定的秒數(shù)和給定的對(duì) DB 的寫操作次數(shù),將保存DB。
#   在下面的示例中,行為將是保存:
#   900 秒(15 分鐘)后,如果至少更改了 1 個(gè)鍵
#   300 秒(5 分鐘)后,如果至少 10 個(gè)鍵更改了
#   60 秒后,如果至少有 10000 個(gè)鍵更改
#
#   注意:您可以通過注釋掉所有“save”行來完全禁用保存。
#
#   也可以刪除所有先前配置的save
#   就像下面的例子:
#
#   save ""

save 900 1
save 300 10
save 60 10000

# 默認(rèn)情況下,如果啟用了 RDB 快照(至少一個(gè)保存點(diǎn))并且最新的后臺(tái)保存失敗,Redis 將停止接受寫入。
# 這將使用戶意識(shí)到(以一種艱難的方式)數(shù)據(jù)沒有正確地保存在磁盤上,否則很可能沒有人會(huì)注意到并且會(huì)發(fā)生一些災(zāi)難。
# 如果后臺(tái)保存進(jìn)程將再次開始工作,Redis 將自動(dòng)允許再次寫入。
# 但是,如果您已經(jīng)設(shè)置了對(duì) Redis 服務(wù)器的適當(dāng)監(jiān)控和持久性,您可能希望禁用此功能,以便 Redis 繼續(xù)照常工作,即使存在磁盤、權(quán)限等問題。
#
stop-writes-on-bgsave-error yes

# 在轉(zhuǎn)儲(chǔ) .rdb 數(shù)據(jù)庫時(shí)使用 LZF 壓縮字符串對(duì)象?
# 默認(rèn)情況下啟用壓縮,因?yàn)樗鼛缀蹩偸且粋€(gè)勝利。
# 如果您想在保存子項(xiàng)中節(jié)省一些 CPU,請(qǐng)將其設(shè)置為“no”,但如果您有可壓縮的值或鍵,數(shù)據(jù)集可能會(huì)更大。
rdbcompression yes

# 從 RDB 的第 5 版開始,CRC64 校驗(yàn)和被放置在文件的末尾。
# 這使得格式更能抵抗損壞,但有一個(gè)性能在保存和加載 RDB 文件時(shí)點(diǎn)擊支付(大約 10%),因此您可以禁用它以獲得最佳性能。
# 在禁用校驗(yàn)和的情況下創(chuàng)建的 RDB 文件的校驗(yàn)和為0,這將告訴加載代碼跳過檢查。
#
rdbchecksum yes

# 轉(zhuǎn)儲(chǔ)數(shù)據(jù)庫的文件名
dbfilename dump.rdb

# 在沒有啟用持久性的情況下刪除復(fù)制使用的 RDB 文件。
# 默認(rèn)情況下,此選項(xiàng)是禁用的,但是在某些環(huán)境中出于法規(guī)或其他安全問題,RDB 文件由 master保存在磁盤上以提供副本,
# 或由副本存儲(chǔ)在磁盤上以便加載它們以進(jìn)行初始同步,應(yīng)該盡快刪除。請(qǐng)注意,此選項(xiàng)僅適用于同時(shí)禁用AOF 和 RDB 持久性的實(shí)例,否則完全忽略。
# 獲得相同效果的另一種(有時(shí)更好)方法是在主實(shí)例和副本實(shí)例上使用無盤復(fù)制。然而在副本的情況下,無盤并不總是一種選擇。
rdb-del-sync-files no

# 工作目錄
#
# 數(shù)據(jù)庫將寫入此目錄中,文件名在上面使用“dbfilename”配置指令指定。
#
# 附加文件也將在此目錄中創(chuàng)建。
#
# 注意這里必須指定目錄,而不是文件名。
dir ./

更多配置詳見Redis使用——Redis的redis.conf配置注釋詳解(二)

本文聲明:

88x31.png

知識(shí)共享許可協(xié)議
本作品由 cn華少 采用 知識(shí)共享署名-非商業(yè)性使用 4.0 國際許可協(xié)議 進(jìn)行許可。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容