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

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

Redis配置文件redis.conf詳解

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

文章目錄

    • 常用配置
    • 進(jìn)階配置
      • 主從復(fù)制
      • 安全
      • 限制 CLIENTS
      • RDB模式相關(guān)配置
      • AOF模式 appendonly配置
      • slowlog
      • INCLUDES
      • vm相關(guān)
      • 其他配置

常用配置

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

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

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

進(jìn)階配置

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

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

timeout設(shè)置客戶端連接時的超時時間,單位為秒。當(dāng)客戶端在這段時間內(nèi)沒有發(fā)出任何指令,那么關(guān)閉該連接,0是關(guān)閉此設(shè)置

主從復(fù)制

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

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

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

安全

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

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

限制 CLIENTS

maxclients限制同時連接的客戶數(shù)量。
maxmemory設(shè)置redis 能夠使用的最大內(nèi)存。
maxmemory-policy 內(nèi)存達(dá)到上限的處理策略,有以下幾種策略

volatile-lru :利用 LRU 算法移除設(shè)置過過期時間的 key 。
volatile-random :隨機(jī)移除設(shè)置過過期時間的 key 。
volatile-ttl :移除即將過期的 key ,根據(jù)最近過期時間來刪除(輔以 TTL )
allkeys-lru :利用 LRU 算法移除任何 key 。
allkeys-random :隨機(jī)移除任何 key 。
noeviction :不移除任何 key ,只是返回一個寫錯誤。
默認(rèn)是:maxmemory-policy volatile-lru
LRU 和 minimal TTL 算法都不是精準(zhǔn)的算法,但是相對精確的算法(為了節(jié)省內(nèi)存),隨意你可以選擇樣本大小進(jìn)行檢測。

RDB模式相關(guān)配置

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

AOF模式 appendonly配置

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

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

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

slowlog

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

INCLUDES

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

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

vm相關(guān)

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

其他配置

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

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

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

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

set數(shù)據(jù)類型內(nèi)部數(shù)據(jù)如果全部是數(shù)值型,且包含多少節(jié)點以下會采用緊湊格式存儲。

set-max-intset-entries 512

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

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

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

activerehashing yes

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

欄目分類
最近更新