开心六月综合激情婷婷|欧美精品成人动漫二区|国产中文字幕综合色|亚洲人在线成视频

    1. 
      
        <b id="zqfy3"><legend id="zqfy3"><fieldset id="zqfy3"></fieldset></legend></b>
          <ul id="zqfy3"></ul>
          <blockquote id="zqfy3"><strong id="zqfy3"><dfn id="zqfy3"></dfn></strong></blockquote>
          <blockquote id="zqfy3"><legend id="zqfy3"></legend></blockquote>
          打開(kāi)APP
          userphoto
          未登錄

          開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

          開(kāi)通VIP
          【Redis27】Redis進(jìn)階:配置文件(一)

          Redis進(jìn)階:配置文件(一)

          對(duì)于配置文件來(lái)說(shuō),往往是很多大佬們?nèi)胧诌\(yùn)維優(yōu)化的第一步,因此我們想要真正的進(jìn)階,就一定要看看配置文件中有哪些可以配置的地方,有哪些可以?xún)?yōu)化的配置點(diǎn)。當(dāng)然,咱也不是特別專(zhuān)業(yè),有很多配置也不知道是啥意思,更不知道應(yīng)該配成什么才是最好的。既然這樣,那就一起來(lái)學(xué)學(xué)唄。

          整個(gè)配置文件有兩篇文章,基于 Redis6.2 版本的原生配置文件。其它沒(méi)有在配置文件中出現(xiàn)的配置項(xiàng)可能都并不是非常常用的選項(xiàng),Redis7 以及更新版本的配置項(xiàng)也并沒(méi)有詳細(xì)的列出,如果大家有興趣,可以到官方文檔中去查找完整的以及最新的所有配置項(xiàng)信息。

          基本配置

          打開(kāi)配置文件,最開(kāi)始的部分就是告訴我們可以進(jìn)行一些單位的轉(zhuǎn)換。直接使用 1k 可以表示 1000bytes ,而使用 1kb 則可以表示 1024bytes ,注意這一塊的微小差別哦。

          # 1k => 1000 bytes
          # 1kb => 1024 bytes
          # 1m => 1000000 bytes
          # 1mb => 1024*1024 bytes
          # 1g => 1000000000 bytes
          # 1gb => 1024*1024*1024 bytes

          接著,就是教我們可以 INCLUDES 其它配置文件,這個(gè)也是很多類(lèi)似的系統(tǒng)工具都提供的功能,最典型的就是 Nginx 配置 vhost 的時(shí)候大家也往往會(huì)不同的站點(diǎn)單獨(dú)使用一個(gè)配置文件。但其實(shí)它們最后都是在主配置文件中 INCLUDES 進(jìn)來(lái)的。緊跟著后面是可以使用 loadmodule 加載一些外部模塊和插件,比如官方文檔上就有的布隆過(guò)濾器之類(lèi)的插件。

          好了,繼續(xù)向下看,我們將看到 NETWORK 這一個(gè)大的配置模塊。

          NETWORK配置

          bind 127.0.0.1 ::1
          protected-mode no
          port 6379

          這三個(gè)應(yīng)該是同學(xué)們接觸到的比較多的配置項(xiàng),bind 是綁定 IP ,默認(rèn)就是綁定本地的回環(huán)地址,protected-mode 是保護(hù)模式的開(kāi)關(guān),打開(kāi)后服務(wù)端將只接收 bind 綁定的客戶(hù)端連接,并且需要配置密碼(注意如果是多實(shí)例哨兵部署,這個(gè)要設(shè)置成no,否則哨兵之間可能無(wú)法通信)。最后的 port 就是服務(wù)端啟動(dòng)時(shí)所監(jiān)聽(tīng)的端口號(hào)。

          剩下的幾個(gè)配置大家看看就好,平常改動(dòng)這幾個(gè)配置的應(yīng)該不多。

          # tcp 未連接隊(duì)列數(shù)量配置,要注意主進(jìn)程是否有慢查詢(xún),如果出現(xiàn)慢查詢(xún)
          # 這里就會(huì)積壓,超過(guò)這個(gè)數(shù)量之后就會(huì)產(chǎn)生隊(duì)列溢出,拋棄連接
          # 不要大于系統(tǒng)的 /proc/sys/net/core/somaxconn 配置,可以設(shè)置成 2048 ,和系統(tǒng)的 somaxconn 一起改
          tcp-backlog 511

          #
           使用 unix socket 形式連接
          # 之前我們?cè)囘^(guò),默認(rèn)是注釋的狀態(tài)
          # unixsocket /run/redis.sock
          # unixsocketperm 700

          #
           客戶(hù)端空閑多久后關(guān)閉連接
          timeout 0

          #
           客戶(hù)端保持活躍狀態(tài)的時(shí)間,推薦就是 300s 
          tcp-keepalive 300

          TLS/SSL 配置

          這一塊的配置是用于配置安全套接字連接的,對(duì)應(yīng)的 HTTP 上就是 HTTPS 的那個(gè)意思。不過(guò)一般我們也很少會(huì)配置這里,因?yàn)榇蟛糠智闆r下其實(shí)我們的 Redis 會(huì)優(yōu)先配置在內(nèi)網(wǎng)使用,如果有外網(wǎng)使用需求的話,增加這一套配置是對(duì)于安全的又一層保障。

          # 默認(rèn)情況下,TLS/SSL 是關(guān)閉的
          # 如果要打開(kāi)的話,先把 port 設(shè)置成 0 
          # 然后打開(kāi)下面這個(gè)注釋
          # tls-port 6379

          #
           配置X.509證書(shū)和私鑰以用于驗(yàn)證
          # tls-cert-file redis.crt
          # tls-key-file redis.key

          #
           如果密鑰文件使用密碼短語(yǔ)加密就在下面這里直接配置上
          # tls-key-file-pass secret

          #
           有的時(shí)候,可能會(huì)配置不同的證書(shū),比如客戶(hù)端證書(shū)和服務(wù)端證書(shū)
          # 在這里,可以直接配置客戶(hù)端證書(shū)
          # tls-client-cert-file client.crt
          # tls-client-key-file client.key

          #
           客戶(hù)端證書(shū)如果是密碼的,也可以直接把密碼寫(xiě)在這里
          # tls-client-key-file-pass secret

          #
           配置 Diffie-Hellman (DH) 文件,使用 DH 密鑰
          # tls-dh-params-file redis.dh

          #
           配置使用 CA 證書(shū)進(jìn)行驗(yàn)證
          # tls-ca-cert-file ca.crt
          # tls-ca-cert-dir /etc/ssl/certs

          #
           默認(rèn)情況下,需要客戶(hù)端使用有效的客戶(hù)端證書(shū)
          # 如果配置為 no 則不需要也不接受客戶(hù)端證書(shū)
          # 如果配置為 optinal 則接受客戶(hù)端請(qǐng)收并驗(yàn)證其有效,但并不是必須的
          # tls-auth-clients no
          # tls-auth-clients optional

          #
           默認(rèn)情況下,主從復(fù)制和 Cluster 間不會(huì)使用 TLS ,這里可以設(shè)置成 yes 開(kāi)啟主從復(fù)制也使用 TLS
          # tls-replication yes
          # tls-cluster yes

          #
           使用什么 TLS 協(xié)議
          # 下面打開(kāi)注釋就是只啟用 1.2 和 1.3 的 TLS ,不使用 1.1x 版本
          # tls-protocols "TLSv1.2 TLSv1.3"

          #
           配置允許的密碼,只對(duì)小于等于 TLSv1.2 以下的版本有效
          # tls-ciphers DEFAULT:!MEDIUM

          #
           配置 TLSv1.3 所使用的密碼套件信息
          # tls-ciphersuites TLS_CHACHA20_POLY1305_SHA256

          #
           使用 yes 的話,選擇密碼時(shí),使用服務(wù)器的首選項(xiàng)
          # 設(shè)置 no 的話,服務(wù)端跟隨客戶(hù)端的選擇
          # tls-prefer-server-ciphers yes

          #
           禁用或開(kāi)啟 TLS 緩存
          # tls-session-caching no

          #
           TLS 緩存會(huì)話的默認(rèn)數(shù)量,不設(shè)置或者保持注釋狀態(tài)的話,默認(rèn)是 20480
          # tls-session-cache-size 5000

          #
           TLS 緩存會(huì)話的超時(shí)時(shí)間
          # tls-session-cache-timeout 60

          好吧,實(shí)話實(shí)說(shuō),從來(lái)沒(méi)配置過(guò)這一塊的內(nèi)容,所以說(shuō)只能是照著注釋大概翻譯一下。

          GENERAL 通用配置

          通用配置這一塊,比較常用的是下面幾個(gè)配置。

          daemonize yes  #后臺(tái)運(yùn)行
          pidfile "/var/run/redis_6379.pid" # 進(jìn)程id文件存放路徑
          databases 16 # 庫(kù)數(shù)量

          這三個(gè)配置之前的文章中也都用過(guò),也不用多解釋了,剩下的東西我們?cè)偻ㄟ^(guò)注釋看一下。

          # 可以通過(guò)upstart和systemd管理Redis守護(hù)進(jìn)程
          # 不是我們常見(jiàn)的那個(gè) supervisectl 工具
          # upstart 和 systemd 是大部分 Linux 自帶的那個(gè)
          # supervised auto

          #
           服務(wù)端日志輸出級(jí)別
          # 有 debug、verbose、notice、warning 
          # debug 輸出的內(nèi)容最多全面,適合測(cè)試環(huán)境
          # notic 和 warning 適合生產(chǎn)環(huán)境
          loglevel notice

          #
           配置日志的輸出路徑
          # 如果 daemonize 是 no ,輸出到控制臺(tái)
          # 如果 daemonize 是 yes ,輸出到指定的路徑文件中,如果沒(méi)配,輸出到 /dev/null
          logfile ""

          #
           系統(tǒng)日志記錄相關(guān)的配置
          # syslog-enabled no
          # syslog-ident redis
          # syslog-facility local0

          #
           系統(tǒng)崩潰日志相關(guān)的配置
          # crash-log-enabled no
          # crash-memcheck-enabled no

          #
           啟動(dòng)時(shí)顯示 Redis 的 Logo 不
          always-show-logo no

          #
           Linux 下查看進(jìn)程名時(shí),是否設(shè)置 Redis 的進(jìn)程名
          # 就是我們用 ps 命令查看時(shí)的那個(gè)名字
          set-proc-title yes

          #
           進(jìn)程名的模板
          proc-title-template "{title} {listen-addr} {server-mode}"

          SNAPSHOTTING 快照配置

          這一塊呀,其實(shí)就是 RDB 相關(guān)的配置,本身對(duì)于 RDB 持久話來(lái)說(shuō),它就是一種快照機(jī)制。因此,這一大塊的配置名稱(chēng)也是使用的 SNAPSHOTTING 。

          # 不用多解釋了吧,RDB 持久化的規(guī)則
          # 不記得的小伙伴看之前的 Redis進(jìn)階:持久化策略 這篇文章或者視頻哦
          save 3600 1
          save 300 100
          save 60 10000

          #
           假如 bgsave 的時(shí)候發(fā)生問(wèn)題,默認(rèn)情況下會(huì)禁止寫(xiě)入
          # 這個(gè)吧,可以幫助發(fā)現(xiàn)問(wèn)題,也就是持久化失敗了會(huì)很明顯的出現(xiàn)無(wú)法寫(xiě)入數(shù)據(jù)的情況
          # 但如果你已經(jīng)有了對(duì)于持久化的監(jiān)控,把它關(guān)掉也可以
          stop-writes-on-bgsave-error yes

          #
           是否在持久化時(shí)對(duì)數(shù)據(jù)進(jìn)行 LZF 壓縮
          rdbcompression yes

          #
           是否對(duì) RDB 內(nèi)容進(jìn)行 CRC64 簽名檢查
          rdbchecksum yes

          #
           啟用或禁用對(duì)于 ziplist 和 listpack 的完整整理
          # 可以設(shè)置 no yes clients 
          # 默認(rèn)值是  clients ,表示僅對(duì)客戶(hù)端連接進(jìn)行整理,但它會(huì)影響集群
          # 集群操作時(shí),可以臨時(shí)設(shè)置為 no
          # sanitize-dump-payload no

          #
           RDB 文件的名稱(chēng)
          dbfilename "dump.rdb"

          #
           刪除同步文件,僅在有 AOF 文件時(shí)有效
          # 主從復(fù)制時(shí),在沒(méi)有配置 RDB 持久化策略的機(jī)器上是否刪除復(fù)制時(shí)使用的 RDB 文件
          rdb-del-sync-files no

          #
           工作目錄
          # 之前講過(guò),rdb、aof、cluster nodes 文件都會(huì)放到這個(gè)目錄下
          dir "/usr/local/var/db/redis"

          REPLICATION 主從復(fù)制相關(guān)配置

          主從配置是一塊非常大的配置部分,有很多的配置參數(shù)。不過(guò)當(dāng)時(shí)我們學(xué)習(xí)的時(shí)候大部分都是在命令行操作的,而且其實(shí)主要接觸到的也就那么兩個(gè)命令以及對(duì)應(yīng)的配置參數(shù)。其它的配置參數(shù)咱們今天就一起都來(lái)好好看看。

          # 不多解釋了吧
          # 之前文章中我們使用的是在命令中直接配置
          # 也說(shuō)過(guò)在配置文件中也可以直接配置,就是在這里了
          # replicaof <masterip> <masterport>

          #
           主從配置時(shí)認(rèn)證相關(guān)的內(nèi)容
          # 之前也講過(guò)了
          # masterauth <master-password>
          # masteruser <username>

          #
           當(dāng)從庫(kù)失去與主機(jī)的連接之后要怎么辦?
          # 設(shè)置為 yes ,就還是正常響應(yīng)命令及結(jié)果,但可以包含過(guò)期數(shù)據(jù)
          # 設(shè)置為 no ,除了 INFO、REPLICAOF 等等的一些命令之外,其它的命令報(bào)錯(cuò)
          # 具體哪些命令可以使用直接去看原版注釋
          replica-serve-stale-data yes

          #
           配置從庫(kù)是否是只讀的,換成 no 的話就也可以寫(xiě)入數(shù)據(jù)了
          replica-read-only yes

          #
           復(fù)制的同步策略,使用磁盤(pán)還是socket
          # 磁盤(pán)就是發(fā)送 RDB 文件
          # socket 就是直接主庫(kù)請(qǐng)求從庫(kù)的socket端口同步命令
          # 現(xiàn)在肯定是無(wú)盤(pán)復(fù)制好些啦,不過(guò)默認(rèn)是 no ,因?yàn)闊o(wú)盤(pán)復(fù)制還是實(shí)驗(yàn)階段
          repl-diskless-sync no

          #
           當(dāng)使用無(wú)盤(pán)復(fù)制的時(shí)候,可以配置等待時(shí)間
          # 一般主庫(kù)會(huì)等待一會(huì)再向從庫(kù)發(fā)送數(shù)據(jù)
          repl-diskless-sync-delay 5

          #
           無(wú)盤(pán)加載
          # 一般情況下,socket 會(huì)比文件傳輸快,但也有可能傳送時(shí)有新的數(shù)據(jù)
          # 這里的配置如果是 disabled ,就是不使用無(wú)盤(pán)復(fù)制,先將文件保存到磁盤(pán)再加載
          repl-diskless-load disabled

          #
           副本以預(yù)定義的間隔向服務(wù)器發(fā)送PING
          # 默認(rèn)值為10秒
          # repl-ping-replica-period 10

          #
           復(fù)制的超時(shí)時(shí)間
          # repl-timeout 60

          #
           同步之后是否禁用主庫(kù)上的 TCP_NODELAY 
          # 使用 yes 會(huì)使用較少的包向從庫(kù)發(fā)送數(shù)據(jù),但會(huì)增加延遲和帶寬
          repl-disable-tcp-nodelay no

          #
           復(fù)制緩沖日志大小
          # repl-backlog-size 1mb

          #
           緩沖日志刪除時(shí)間
          # repl-backlog-ttl 3600

          #
           復(fù)制副本的優(yōu)先級(jí) 優(yōu)先級(jí)高的副本在哨兵選舉時(shí)的得分會(huì)更高
          replica-priority 100

          #
           在 哨兵 信息中可以移除當(dāng)前副本的信息
          # replica-announced yes

          #
           從機(jī)最小寫(xiě)入數(shù)量
          # 幾個(gè)從機(jī)處于在線狀態(tài)
          # 從機(jī)的延遲小于10秒
          # min-replicas-to-write 3
          # min-replicas-max-lag 10

          #
           主庫(kù)的 role 命令可以查看到的從庫(kù)的信息
          # replica-announce-ip 5.5.5.5
          # replica-announce-port 1234

          無(wú)盤(pán)復(fù)制大概的意思是指主服務(wù)器直接通過(guò)套接字將快照內(nèi)容發(fā)送到從節(jié)點(diǎn),生成快照是一個(gè)遍歷的過(guò)程,主節(jié)點(diǎn)會(huì)一邊遍歷內(nèi)存,一邊將序列化的內(nèi)容發(fā)送到從節(jié)點(diǎn),從節(jié)點(diǎn)還是跟之前一樣,先將接收到的內(nèi)容存儲(chǔ)到磁盤(pán)文件中,再進(jìn)行一次性加載。

          KEYS TRACKING 鍵跟蹤

          主要是對(duì)于客戶(hù)端的緩存來(lái)說(shuō)的。一般情況下,Redis 支持客戶(hù)端緩存一些鍵的內(nèi)容,這樣可以幫助客戶(hù)端更快地響應(yīng)數(shù)據(jù)并且減少服務(wù)端的壓力。默認(rèn)狀態(tài)下是不開(kāi)啟的,當(dāng)開(kāi)啟之后,如果數(shù)據(jù)發(fā)生了變化,服務(wù)端會(huì)向客戶(hù)端發(fā)通知并更新緩存,而客戶(hù)端緩存的鍵數(shù)量如果超出了下面設(shè)置的值,就會(huì)隨機(jī)刪除一個(gè)之前緩存的客戶(hù)端緩存 Key 。

          # 客戶(hù)端緩存時(shí)跟蹤的鍵數(shù)量
          # tracking-table-max-keys 1000000

          更詳細(xì)的資料大家可以自己再去搜索一下哈。

          SECURITY 安全配置

          安全相關(guān)的配置不用我說(shuō)大家應(yīng)該也想到了,一個(gè)是全局密碼,一個(gè)是之前我們學(xué)過(guò)的 ACL ,這兩塊的配置之前也是在命令行中直接操作的,同樣地,它們也可以通過(guò)配置文件來(lái)實(shí)現(xiàn)。另外,ACL 配置文件還可以單獨(dú)設(shè)置一個(gè)配置文件,我們也講過(guò)。

          # ACL 用戶(hù)的配置
          # user alice on -DEBUG +@all ~* >somepassword

          #
           ACL 日志長(zhǎng)度
          acllog-max-len 128

          #
           使用單獨(dú)的 acl 文件保存 acl 用戶(hù)信息
          #aclfile /usr/local/etc/redis_users.acl

          #
           全局密碼配置
          # requirepass aabbcc

          #
           為 PUB/SUB 模式提供用戶(hù)的默認(rèn)權(quán)限
          # acl-pubsub-default resetchannels

          #
           給命令重命名(已標(biāo)記為廢棄)
          # 可以更改危險(xiǎn)命令的名稱(chēng)
          # 現(xiàn)在推薦的是使用 ACL 控制用戶(hù)可以執(zhí)行的命令權(quán)限
          # rename-command CONFIG ""

          CLIENTS 客戶(hù)端配置

          就一個(gè),客戶(hù)端的最大連接數(shù)。另外在系統(tǒng)層面還要注意 Linux 系統(tǒng)的 ulimit 配置。

          maxclients 10000

          總結(jié)

          今天的內(nèi)容是配置文件學(xué)習(xí)的第一部分,主要是基本配置、快照(RDB)、主從復(fù)制、安全相關(guān)配置的內(nèi)容。有很多內(nèi)容是我們之前用過(guò)的,但更多的內(nèi)容其實(shí)是我們平常很少會(huì)接觸到的,在這里不管用不用得到,大概的看一眼留個(gè)印象才是更重要的。如果確實(shí)想要精通整個(gè) Redis 以及需要對(duì) Redis 優(yōu)化有深度需求的同學(xué),那還是要更加詳細(xì)地了解每個(gè)配置參數(shù)的作用以及它們更詳細(xì)的含義。

          下篇文章我們將繼續(xù)學(xué)習(xí)配置文件中后半部分的內(nèi)容。

          本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
          打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
          猜你喜歡
          類(lèi)似文章
          redis sentinel 主從切換(failover)解決方案,詳細(xì)配置
          深入Redis 主從復(fù)制原理
          Redis服務(wù)之常用配置(三)
          深入學(xué)習(xí)Redis高可用的基石:主從復(fù)制
          redis配置文件全解
          Redis 2.8 配置文件說(shuō)明
          更多類(lèi)似文章 >>
          生活服務(wù)
          分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
          綁定賬號(hào)成功
          后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
          如果VIP功能使用有故障,
          可點(diǎn)擊這里聯(lián)系客服!

          聯(lián)系客服