日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Redis配置文件redis.conf詳解

作者:共飲一杯無 更新時間: 2022-09-22 編程語言

文章目錄

    • 常用配置
    • 進階配置
      • 主從復制
      • 安全
      • 限制 CLIENTS
      • RDB模式相關配置
      • AOF模式 appendonly配置
      • slowlog
      • INCLUDES
      • vm相關
      • 其他配置

常用配置

Redis支持很多的參數配置,但都有默認值
daemonize默認情況下,redis 不是在后臺運行的,如果需要在后臺運行,把該項的值更改為yes。
protected-mode保護模式,protected-mode設置為yes的情況下,為了我們的應用服務可以正常訪問Redis,我們需要設置Redis的bind參數或者密碼參數requirepass。
bind指定 Redis只接收來自于該IP地址的請求,如果設置成0.0.0.0表示接收所有ip請求,不建議使用。
port監聽端口,默認為6379。
databases設置數據庫的個數,默認使用的數據庫是0。
save設置Redis進行數據庫鏡像備份的頻率。

#如果900秒內至少1個key發生變化(新增、修改和刪除),則重寫rdb文件;
save 900 1
#如果每300秒內至少10個key發生變化(新增、修改和刪除),則重寫rdb文件;
save 300 10
#如果每60秒內至少10000個key發生變化(新增、修改和刪除),則重寫rdb文件。
save 60 10000

dbfilename鏡像備份文件的文件名。
dir數據庫鏡像備份的文件放置的路徑。
requirepass設置客戶端連接后進行任何其他指定前需要使用的密碼。
maxclients限制同時連接的客戶數量。
maxmemory設置redis 能夠使用的最大內存。
logfile 日志文件名。

進階配置

stop-writes-on-bgsave-error 持久化如果出錯,是否還需要繼續工作。
loglevel 指定日志記錄級別。

Redis總共支持四個級別:debug、verbose、notice、warning,默認為verbose
debug 記錄很多信息,用于開發和測試
varbose 有用的信息,不像debug會記錄那么多
notice 普通的verbose,常用于生產環境
warning 只有非常重要或者嚴重的信息會記錄到日志

timeout設置客戶端連接時的超時時間,單位為秒。當客戶端在這段時間內沒有發出任何指令,那么關閉該連接,0是關閉此設置。

主從復制

slaveof <masterip> <masterport>主從復制。設置該數據庫為其他數據庫的從數據庫。設置當本機為slave服務時,設置master服務的IP地址及端口,在Redis啟動時,它會自動從master進行數據同步。這里永久性的設置主機IP(設置后自己視為從節點)
masterauth <master-password>當master服務設置了密碼保護時(用requirepass制定的密碼)slave服務連接master的密碼。
slave-serve-stale-data當從庫同主機失去連接或者復制正在進行,從庫有兩種運行方式:

  1. 如果slave-serve-stale-data設置為yes(默認設置),從庫會繼續相應客戶端的請求
  2. 如果slave-serve-stale-data是指為no,出去INFO和SLAVOF命令之外的任何請求都會返回一個錯誤"SYNC with master in progress"

repl-ping-slave-period從庫會按照一個時間間隔向主庫發送PINGs.可以通過repl-ping-slave-period設置這個時間間隔,默認是10秒。
總結就是上面間隔多少秒發送一次檢測存活的pingPong信號,下面repl-timeout就是判定發送這個信號后的返回超時時間。
repl-timeout 設置主庫批量數據傳輸時間或者ping回復時間間隔,默認值是60秒。一定要確保repl-timeout大于repl-ping-slave-period。

安全

requirepass設置客戶端連接后進行任何其他指定前需要使用的密碼。警告:因為redis速度相當快,所以在一臺比較好的服務器下,一個外部的用戶可以在一秒鐘進行150K次的密碼嘗試,這意味著你需要指定非常非常強大的密碼來防止暴力破解。
rename-command命令重命名。

在一個共享環境下可以重命名相對危險的命令。比如把CONFIG重名為一個不容易猜測的字符。
舉例:
rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
如果想刪除一個命令,直接把它重命名為一個空字符""即可,如下:
rename-command CONFIG “”

限制 CLIENTS

maxclients限制同時連接的客戶數量。
maxmemory設置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 volatile-lru
LRU 和 minimal TTL 算法都不是精準的算法,但是相對精確的算法(為了節省內存),隨意你可以選擇樣本大小進行檢測。

RDB模式相關配置

rdbcompression存儲至本地數據庫時(持久化到rdb文件)是否壓縮數據,需要消耗一些cpu的資源,默認為yes
rdbchecksum保存rdb文件的時候,進行錯誤的檢查校驗。
dirrdb文件保存的目錄,如:/www/server/redis/
dbfilenameRDB后,本地持久化數據庫文件名,默認值為dump.rdb(持久化的數據都會保存在這個文件里然后準備刷盤)

AOF模式 appendonly配置

appendonly 默認是no,不開啟AOF模式的,默認是使用RDB方式持久化的,在大部分使用的情況下,RDB完全夠用了
appendfilename 持久化的文件的名字,如:“appendonly.aof”
appendfsync同步策略。

#appendfsync always #每次修改都會 sync 消耗性能
appendfsync everysec #每秒執一次 sync,可能會丟失這1s的數據
#appendfsync no #不執行 sync 這個時候操作系統自己同步數據,數據最快

AOF策略設置為always或者everysec時,后臺處理進程(后臺保存或者AOF日志重寫)會執行大量的I/O操作。在某些Linux配置中會阻止過長的fsync()請求。注意現在沒有任何修復,即使fsync在另外一個線程進行處理。為了減緩這個問題,可以設置下面這個參數no-appendfsync-on-rewrite。
AOF 自動重寫,當AOF文件增長到一定大小的時候Redis能夠調用 BGREWRITEAOF 對日志文件進行重寫
它是這樣工作的:Redis會記住上次進行些日志后文件的大小(如果從開機以來還沒進行過重寫,那日子大小在開機的時候確定)
基礎大小會同現在的大小進行比較。如果現在的大小比基礎大小大制定的百分比,重寫功能將啟動
同時需要指定一個最小大小用于AOF重寫,這個用于阻止即使文件很小但是增長幅度很大也去重寫AOF文件的情況
設置 percentage 為0就關閉這個特性
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

slowlog

slowlog-log-slower-thanRedis Slow Log 記錄超過特定執行時間的命令。執行時間不包括I/O計算比如連接客戶端,返回結果等,只是命令執行時間??梢酝ㄟ^兩個參數設置slow log:一個是告訴Redis執行超過多少時間被記錄的參數slowlog-log-slower-than(微秒),另一個是slow log 的長度。當一個新命令被記錄的時候最早的命令將被從隊列中移除 。注意制定一個負數將關閉慢日志,而設置為0將強制每個命令都會記錄
slowlog-max-len對日志長度沒有限制,只是要注意它會消耗內存,可以通過 SLOWLOG RESET 回收被慢日志消耗的內存。

INCLUDES

include指定包含其它的配置文件,可以在同一主機上多個Redis實例之間使加粗樣式用同一份配置文件,而同時各個實例又擁有自己的特定配置文件,如:

include /path/to/local.conf
include /path/to/other.conf

vm相關

vm-enabled指定是否啟用虛擬內存機制,默認值為no,簡單介紹一下,VM機制將數據分頁存放,由redis將訪問量較小的頁即冷數據 swap到磁盤上,訪問多的頁面由磁盤自動換出到內存中。
vm-swap-file虛擬內存文件路徑,默認值為/tmp/redis.swap,不可多個redis實例共享。
vm-max-memory將所有大于vm-max-memory的數據存入虛擬內存,無論vm-max-memory設置多小,所有索引數據都是內存存儲的(redis的索引數據就是keys),也就是說,當vm-max-memory設置為0的時候,其實是所有value都存在于磁盤。默認值為 0。
vm-page-sizeredis swap文件分成了很多的page,一個對象可以保存在多個page上面,但一個page上不能被多個對象共享,vm-page-size是根據存儲的數據大小來設定的,作者建議如果儲存很多小對象,page大小最好設置為32或者64bytes;如果存儲很多大對象,則可以使用更大的page,如果不確定,就使用默認值。
vm-pages設置swap文件中page數量,由于頁表(一種表示頁面空閑或使用的bitmap)是放在內存中的,在磁盤上每8個pages將消耗1byte的內存:
vm-max-threads設置訪問swap文件的線程數,最好不要超過機器的核數,如果設置為0,那么所有對swap文件的操作都是串行的,可能會造成長時間的延遲。默認值為4。
glueoutputbuf yes設置在客戶端應答時,是否把較小的包含并為一個包發送,默認為開啟:

其他配置

當hash中包含超過指定元素個數并且最大的元素沒有超過臨界時,
hash將以一種特殊的編碼方式(大大減少內存使用)來存儲,這里可以設置這兩個臨界值
Redis Hash對應Value內部實際就是一個HashMap,實際這里會有2種不同實現,
這個Hash的成員比較少時Redis為了節省內存會采用類似一維數組的方式來緊湊存儲,而不會采用真正的HashMap結構,對應的value redisObject的encoding為zipmap,
當成員數量增大時會自動轉成真正的HashMap,此時encoding為ht。

hash-max-zipmap-entries 512
hash-max-zipmap-value 64

list數據類型多少節點以下會采用去指針的緊湊存儲格式。
list數據類型節點值大小小于多少字節會采用緊湊存儲格式。

list-max-ziplist-entries 512
list-max-ziplist-value 64

set數據類型內部數據如果全部是數值型,且包含多少節點以下會采用緊湊格式存儲。

set-max-intset-entries 512

zsort數據類型多少節點以下會采用去指針的緊湊存儲格式。
zsort數據類型節點值大小小于多少字節會采用緊湊存儲格式。

zset-max-ziplist-entries 128
zset-max-ziplist-value 64

Redis將在每100毫秒時使用1毫秒的CPU時間來對redis的hash表進行重新hash,可以降低內存的使用
當你的使用場景中,有非常嚴格的實時性需要,不能夠接受Redis時不時的對請求有2毫秒的延遲的話,把這項配置為no。
如果沒有這么嚴格的實時性要求,可以設置為yes,以便能夠盡可能快的釋放內存

activerehashing yes

原文鏈接:https://blog.csdn.net/qq_35427589/article/details/126927659

欄目分類
最近更新