網(wǎng)站首頁 編程語言 正文
文章目錄
- 常用配置
- 進(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)行,從庫有兩種運行方式:
- 如果slave-serve-stale-data設(shè)置為yes(默認(rèn)設(shè)置),從庫會繼續(xù)相應(yīng)客戶端的請求
- 如果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)為yesrdbchecksum
保存rdb文件的時候,進(jìn)行錯誤的檢查校驗。dir
rdb文件保存的目錄,如:/www/server/redis/dbfilename
RDB后,本地持久化數(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
100auto-aof-rewrite-min-size
64mb
slowlog
slowlog-log-slower-than
Redis 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-size
redis 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
相關(guān)推薦
- 2022-11-27 C++?cin不同狀態(tài)詳細(xì)講解_C 語言
- 2022-12-09 Flutter?Widgets?MediaQuery控件屏幕信息適配_IOS
- 2021-12-08 el-cascader 級聯(lián)選擇器回顯數(shù)據(jù) (帶有子級children)
- 2022-06-12 Unity?使用tiledmap解析地圖的詳細(xì)過程_C#教程
- 2022-11-04 ASP.NET?MVC使用正則表達(dá)式驗證手機(jī)號碼_實用技巧
- 2022-04-17 論一次 taro小程序分包優(yōu)化經(jīng)歷,小程序體積過大的優(yōu)化
- 2022-04-09 C語言實現(xiàn)計算器的兩種方法_C 語言
- 2023-07-16 oracle 創(chuàng)建存儲過程
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支