【Redis 系列】redis 學習七,那些你不知道的 redis 配置檔案詳解

小魔童哪吒發表於2022-03-06

Redis 配置檔案詳解

單位

redis 啟動的時候會去讀配置檔案 redis.conf

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

redis 裡面單位是不分大小寫的,例如,1GB 1Gb 1gB 表示的都是同一個意思

INCLUDES 包含

環境中使用的 redis.conf 可以包含其他的 redis.conf,他們會整合成一個 配置檔案來提供使用

NETWORK 網路

bind 0.0.0.0 

protected-mode yes

port 6379

bind

繫結地址,若繫結 127.0.0.1 是本地訪問,若需要遠端訪問,可以繫結一個真實的 ip 地址

protected-mode

保護模式是否開啟,預設是開啟

port

埠設定,預設埠是 6379,我們也可以修改成其他的可用埠,例如叢集的時候就會修改到埠

GENERAL 通用

通用配置,常用的有

daemonize yes

pidfile /var/run/redis_6379.pid

loglevel notice

logfile ""

databases 16

always-show-logo no

set-proc-title yes

daemonize

是否以守護程式的方式執行,預設是 no,我們需要的話可以修改成 yes

pidfile

以後臺方式執行 redis ,我們就需要制定一個 pid 檔案

loglevel

日誌等級

 291 # Specify the server verbosity level.
 292 # This can be one of:
 293 # debug (a lot of information, useful for development/testing)
 294 # verbose (many rarely useful info, but not a mess like the debug level)
 295 # notice (moderately verbose, what you want in production probably)
 296 # warning (only very important / critical messages are logged)

和我們專案中用到的一致:

  • debug

用於開發和測試的除錯資訊

  • verbose

罕見有用的資訊

  • notice

提示資訊,期望在生產環境中看到的

  • warning

告警資訊,重要的資訊會被列印到日誌中

logfile

指定 redis 日誌檔案路徑

databases

redis 資料庫, 預設是 16 個

always-show-logo

是否總是顯示 reids logo ,就是下面這個 logo

                _._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._           Redis 6.2.5 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 29303
  `-._    `-._  `-./  _.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |           https://redis.io
  `-._    `-._`-.__.-'_.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |
  `-._    `-._`-.__.-'_.-'    _.-'
      `-._    `-.__.-'    _.-'
          `-._        _.-'
              `-.__.-'

SNAPSHOTTING 快照

快照,這裡也就是 redis 的持久化,在規定的時間裡面,執行了多少次操作,就會持久化到檔案中

redis 的持久化有兩種

  • RDB
  • AOF

redis 是記憶體資料庫,程式當機或者斷電都會導致資料丟失,因此 redis 就有這樣的持久化策略

# save 3600 1

# save 300 100

# save 60 10000
  • save 3600 1

如果 3600 s 內 redis 發生了 1 次操作, 那麼就會做資料持久化

  • save 300 100

如果 300s 內 redis 發生了 100 次操作, 那麼就會做資料持久化

  • save 60 10000

如果 60s 內 redis 發生了 10000 次操作, 那麼就會做資料持久化

後面我們們詳細寫到持久化的時候,再來細說和實際測試持久化的事情

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dir ./

stop-writes-on-bgsave-error

redis 持久化出錯是否繼續執行 redis 程式,預設是開啟的,持久化錯誤不能影響 redis 程式的執行,需要正常進行下去

rdbcompression

持久化的檔案是否需要壓縮,預設是開啟的,這個功能會比較消耗效能

rdbchecksum

儲存 rdb 持久化檔案的時候,會進行錯誤檢查校驗

dir

rdb 檔案的儲存目錄

REPLICATION 主從複製

主從複製的配置在這個位置

詳細的後續寫到主動複製的時候詳細的寫

SECURITY 安全

redis 的安全相關配置檔案,我們們來看看密碼的事情

# The requirepass is not compatable with aclfile option and the ACL LOAD
# command, these will cause requirepass to be ignored.
#
# requirepass foobared

redis 預設是不設定密碼的,但是我們為了遠端訪問安全,必須要設定密碼

127.0.0.1:6379> ping
PONG
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) ""
127.0.0.1:6379> config set requirepass 888888
OK
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "888888"

退出 redis 客戶端,再次連線 redis-server
root@iZuf66y3tuzn4wp3h02t7pZ:~# redis-cli
127.0.0.1:6379> ping
(error) NOAUTH Authentication required.

對 redis 設定了密碼之後,退出 redis 客戶端,再次連線 redis-server,發現 redis 報錯許可權不足,此時我們使用 redis-client 連線 redis-server 就需要密碼了

127.0.0.1:6379> auth 888888
OK
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "888888"

CLIENTS 客戶端

限制客戶端連線數

 maxclients 10000

maxclients

redis 限制客戶端連線數 預設是 10000 個,這個數字我們也可以修改成我們所期望的

MEMORY MANAGEMENT 記憶體管理

maxmemory <bytes>

maxmemory-policy noeviction

maxmemory
redis 配置的最大記憶體容量,單位是位元組

maxmemory-policy

redis 記憶體達到上限之後的處理策略是什麼樣的,有如下幾個選型:

  • noeviction

永不過期,返回錯誤

  • volatile-ttl

刪除即將過期的

  • allkeys-random

隨機刪除 key

  • volatile-random

隨機刪除即將過期的 key

  • allkeys-lru

刪除 lru 演算法的 key

  • volatile-lru

只對設定了過期時間的 key 進行 LRU

LRU(Least recently used,最近最少使用)

APPEND ONLY MODE 追加模式(aof 配置)

APPEND ONLY MODE 用於 AOF 的持久化

appendonly no

appendfilename "appendonly.aof"

# appendfsync always
appendfsync everysec
# appendfsync no

appendonly

預設是關閉的,redis 預設使用的是 rdb 持久化模式,基本是夠用的

appendfilename

aof 持久化 檔案的名字

appendfsync

持久化同步策略

  • always 每次修改都會同步,消耗效能
  • everysec 每秒執行一次同步,異常情況下會丟失上 1 s 的資料
  • no 不主動同步資料,系統會自動同步,這種方式速度最快,但是丟失資料的機率大

對於 redis 配置檔案常用常改的位置都給大家分享到了,需要多多在實際學習和工作中多多應用,熟能生巧

參考資料:

redis_doc

歡迎點贊,關注,收藏

朋友們,你的支援和鼓勵,是我堅持分享,提高質量的動力

好了,本次就到這裡

技術是開放的,我們的心態,更應是開放的。擁抱變化,向陽而生,努力向前行。

我是小魔童哪吒,歡迎點贊關注收藏,下次見~

相關文章