redis.config配置文件
前言
行家一出手,就知有沒(méi)有,讓一起學(xué)習(xí)redis.config配置文件。
一、基本配置
Redis 的配置文件位于 Redis 安裝目錄下,文件名為
redis.conf
在 Linux 中,可以使用whereis redis
查找 Redis 的安裝目錄(我的文件夾我命名的是redis-7.2.1)
root@dragon:/home/wang# whereis redis-7.2.1 redis-7.2: /usr/local/redis-7.2.1 root@dragon:/home/wang# cd /usr/local/redis-7.2.1/ root@dragon:/usr/local/redis-7.2.1# ls 00-RELEASENOTES CODE_OF_CONDUCT.md COPYING dump.rdb Makefile README.md runtest runtest-moduleapi SECURITY.md src TLS.md BUGS CONTRIBUTING.md deps INSTALL MANIFESTO redis.conf runtest-cluster runtest-sentinel sentinel.conf tests utils
命令行查看所有配置
127.0.0.1:6379> config get *
1.單位
Units
開(kāi)頭定義了一些基本的度量單位,只支持 bytes,不支持 bit。
這些單位對(duì)大小寫(xiě)是不敏感的。
# Redis configuration file example. # # Note that in order to read the configuration file, Redis must be # started with the file path as first argument: # # ./redis-server /path/to/redis.conf # Note on units: when memory size is needed, it is possible to specify # it in the usual form of 1k 5GB 4M and so forth: # # 1k => 1000 bytes # 1kb => 1024 bytes # 1m => 1000000 bytes # 1mb => 1024*1024 bytes # 1g => 1000000000 bytes # 1gb => 1024*1024*1024 bytes # # units are case insensitive so 1GB 1Gb 1gB are all the same.
2.包含
INCLUDES
和 Spring 配置文件類似,可以通過(guò) include 包含,redis.conf 可以作為總文件,可以包含其他文件。
################################## INCLUDES ################################### # Include one or more other config files here. This is useful if you # have a standard template that goes to all Redis servers but also need # to customize a few per-server settings. Include files can include # other files, so use this wisely. # # Note that option "include" won't be rewritten by command "CONFIG REWRITE" # from admin or Redis Sentinel. Since Redis always uses the last processed # line as value of a configuration directive, you'd better put includes # at the beginning of this file to avoid overwriting config change at runtime. # # If instead you are interested in using includes to override configuration # options, it is better to use include as the last line. # # Included paths may contain wildcards. All files matching the wildcards will # be included in alphabetical order. # Note that if an include path contains a wildcards but no files match it when # the server is started, the include statement will be ignored and no error will # be emitted. It is safe, therefore, to include wildcard files from empty # directories. # # include /path/to/local.conf # include /path/to/other.conf # include /path/to/fragments/*.conf #
3.網(wǎng)絡(luò)配置
NETWWORK
# 綁定的 IP bind 127.0.0.1 # 保護(hù)模式 protected-mode yes # 默認(rèn)端口 port 6379
4.通用
GENERAL
# 默認(rèn)情況下,Redis 不作為守護(hù)進(jìn)程運(yùn)行。需要開(kāi)啟的話,改為 yes daemonize yes # 可通過(guò) upstart 和 systemd 管理 Redis 守護(hù)進(jìn)程 supervised no # 以后臺(tái)進(jìn)程方式運(yùn)行 redis,則需要指定 pid 文件 pidfile /var/run/redis_6379.pid # 日志級(jí)別??蛇x項(xiàng)有: # debug(記錄大量日志信息,適用于開(kāi)發(fā)、測(cè)試階段); # verbose(較多日志信息); # notice(適量日志信息,使用于生產(chǎn)環(huán)境); # warning(僅有部分重要、關(guān)鍵信息才會(huì)被記錄)。 loglevel notice # 日志文件的位置,當(dāng)指定為空字符串時(shí),為標(biāo)準(zhǔn)輸出 logfile "" # 設(shè)置數(shù)據(jù)庫(kù)的數(shù)目。默認(rèn)的數(shù)據(jù)庫(kù)是 0 databases 16 # 是否總是顯示 logo always-show-logo yes
5.快照
SNAPSHOPTING
持久化:在規(guī)定時(shí)間內(nèi)執(zhí)行多少次操作,則會(huì)持久化到rdb、aof文件
redis是內(nèi)存數(shù)據(jù)庫(kù),如果沒(méi)有持久化,那么數(shù)據(jù)斷電即失
# 900秒(15分鐘)內(nèi)至少 1 個(gè) key 值改變(則進(jìn)行數(shù)據(jù)庫(kù)保存--持久化) save 900 1 # 300秒(5分鐘)內(nèi)至少 10 個(gè) key 值改變(則進(jìn)行數(shù)據(jù)庫(kù)保存--持久化) save 300 10 # 60秒(1分鐘)內(nèi)至少 10000 個(gè) key 值改變(則進(jìn)行數(shù)據(jù)庫(kù)保存--持久化) save 60 10000 # 持久化出現(xiàn)錯(cuò)誤后,是否依然進(jìn)行繼續(xù)進(jìn)行工作 stop-writes-on-bgsave-error yes # 使用壓縮 rdb 文件 yes:壓縮,但是需要一些 cpu 的消耗;no:不壓縮,需要更多的磁盤(pán)空間 rdbcompression yes # 是否校驗(yàn) rdb 文件,更有利于文件的容錯(cuò)性,但是在保存 rdb 文件的時(shí)候,會(huì)有大概 10% 的性能損耗 rdbchecksum yes # dbfilenamerdb 文件名稱 dbfilename dump.rdb # dir 數(shù)據(jù)目錄,數(shù)據(jù)庫(kù)的寫(xiě)入會(huì)在這個(gè)目錄。rdb、aof 文件也會(huì)寫(xiě)在這個(gè)目錄 dir ./
6.安全
SECURITY
訪問(wèn)密碼的查看、 設(shè)置和取消。
# 獲取密碼 127.0.0.1:6379> config get requirepass 1) "requirepass" 2) "" # 設(shè)置密碼 127.0.0.1:6379> config set requirepass "123456" OK # 重新連接 [root@sail redis]# redis-cli # 發(fā)現(xiàn)使用不了了 127.0.0.1:6379> ping (error) NOAUTH Authentication required. # 驗(yàn)證 127.0.0.1:6379> auth 123456 OK # 驗(yàn)證后可以正常使用了 127.0.0.1:6379> ping PONG
7.限制
MEMORY
# 設(shè)置能連上 redis 的最大客戶端連接數(shù)量 maxclients 10000 # redis 配置的最大內(nèi)存容量 maxmemory <bytes> # maxmemory-policy 內(nèi)存達(dá)到上限的處理策略: # volatile-lru:利用 LRU 算法移除設(shè)置過(guò)過(guò)期時(shí)間的 key。 # volatile-random:隨機(jī)移除設(shè)置過(guò)過(guò)期時(shí)間的 key。 # volatile-ttl:移除即將過(guò)期的 key,根據(jù)最近過(guò)期時(shí)間來(lái)刪除(輔以 TTL) # allkeys-lru:利用 LRU 算法移除任何 key。 # allkeys-random:隨機(jī)移除任何 key。 # noeviction:不移除任何 key,只是返回一個(gè)寫(xiě)錯(cuò)誤。 maxmemory-policy noeviction
8.僅追加模式
APPEND ONLY MODE
# 是否以 append only 模式作為持久化方式,默認(rèn)不開(kāi)啟aof模式,默認(rèn)使用的是 rdb 方式持久化,這種方式在許多應(yīng)用中已經(jīng)足夠用了 appendonly no # appendfilename AOF 持久化的文件的名稱 appendfilename "appendonly.aof" # appendfsync aof 持久化策略的配置: # no:不執(zhí)行sync,由操作系統(tǒng)保證數(shù)據(jù)同步到磁盤(pán)(這時(shí)候操作系統(tǒng)自己同步數(shù)據(jù)),速度最快。 # always:每次修改都執(zhí)行sync,以保證數(shù)據(jù)同步到磁盤(pán),消耗性能。 # everysec:每秒執(zhí)行一次sync,可能會(huì)導(dǎo)致丟失這1s數(shù)據(jù)。 appendfsync everysec
二、總體主要介紹
daemonize no
Redis 默認(rèn)不是以守護(hù)進(jìn)程的方式運(yùn)行,可以通過(guò)該配置項(xiàng)修改,使用 yes 啟用守護(hù)進(jìn)程。
pidfile /var/run/redis.pid
當(dāng) Redis 以守護(hù)進(jìn)程方式運(yùn)行時(shí),Redis 默認(rèn)會(huì)把 pid 寫(xiě)入 /var/run/redis.pid 文件,可以通過(guò) pidfile 指定。
port 6379
指定 Redis 監(jiān)聽(tīng)端口,默認(rèn)端口為 6379。
為什么選用 6379 作為默認(rèn)端口,因?yàn)?6379 在手機(jī)按鍵上 MERZ 對(duì)應(yīng)的號(hào)碼,而 MERZ 取自意大利歌女 Alessia Merz 的名字。
bind 127.0.0.1
綁定的主機(jī)地址。
timeout 300
當(dāng)客戶端閑置多長(zhǎng)時(shí)間后關(guān)閉連接,如果指定為 0,表示關(guān)閉該功能。
loglevel verbose
指定日志記錄級(jí)別,Redis總共支持四個(gè)級(jí)別:debug、verbose、notice、warning,默認(rèn)為 verbose。
- debug:記錄大量日志信息,適用于開(kāi)發(fā)、測(cè)試階段
- verbose:較多日志信息
- notice:適量日志信息,使用于生產(chǎn)環(huán)境
- warning:僅有部分重要、關(guān)鍵信息才會(huì)被記錄
logfile stdout
日志記錄方式,默認(rèn)為標(biāo)準(zhǔn)輸出,如果配置 Redis 為守護(hù)進(jìn)程方式運(yùn)行,而這里又配置為日志記錄方式為標(biāo)準(zhǔn)輸出,則日志將會(huì)發(fā)送給 /dev/null。
databases 16
設(shè)置數(shù)據(jù)庫(kù)的數(shù)量,默認(rèn)數(shù)據(jù)庫(kù)為 0,可以使用 SELECT 命令在連接上指定數(shù)據(jù)庫(kù) id。
save 900 1
save 300 10
save 60 10000
指定在多長(zhǎng)時(shí)間內(nèi),有多少次更新操作,就將數(shù)據(jù)同步到數(shù)據(jù)文件,可以多個(gè)條件配合。
Redis 默認(rèn)配置文件中提供了三個(gè)條件:
- 900 秒(15 分鐘)內(nèi)有 1 個(gè)更改
- 300 秒(5 分鐘)內(nèi)有 10 個(gè)更改
- 60 秒(1 分鐘)內(nèi)有 10000 個(gè)更改
rdbcompression yes
指定存儲(chǔ)至本地?cái)?shù)據(jù)庫(kù)時(shí)是否壓縮數(shù)據(jù),默認(rèn)為 yes,Redis 采用 LZF 壓縮,如果為了節(jié)省 CPU 時(shí)間,可以關(guān)閉該選項(xiàng),但會(huì)導(dǎo)致數(shù)據(jù)庫(kù)文件變的巨大。
dbfilename dump.rdb
指定本地?cái)?shù)據(jù)庫(kù)文件名,默認(rèn)值為 dump.rdb。
dir ./
指定本地?cái)?shù)據(jù)庫(kù)存放目錄。
slaveof
設(shè)置當(dāng)本機(jī)為 slav 服務(wù)時(shí),設(shè)置 master 服務(wù)的 IP 地址及端口,在 Redis 啟動(dòng)時(shí),它會(huì)自動(dòng)從 master 進(jìn)行數(shù)據(jù)同步。
masterauth
當(dāng) master 服務(wù)設(shè)置了密碼保護(hù)時(shí),slav 服務(wù)連接 master 的密碼。
requirepass foobared
設(shè)置Redis連接密碼,如果配置了連接密碼,客戶端在連接 Redis 時(shí)需要通過(guò) auth 命令提供密碼,默認(rèn)關(guān)閉。
maxclients 128
設(shè)置同一時(shí)間最大客戶端連接數(shù),默認(rèn)無(wú)限制。
Redis 可以同時(shí)打開(kāi)的客戶端連接數(shù)為 Redis 進(jìn)程可以打開(kāi)的最大文件描述符數(shù)。
如果設(shè)置 maxclients 0,表示不作限制。
當(dāng)客戶端連接數(shù)到達(dá)限制時(shí),Redis 會(huì)關(guān)閉新的連接并向客戶端返回 max number of clients reached 錯(cuò)誤信息。
maxmemory
指定 Redis 最大內(nèi)存限制,Redis 在啟動(dòng)時(shí)會(huì)把數(shù)據(jù)加載到內(nèi)存中。
達(dá)到最大內(nèi)存后,Redis 會(huì)先嘗試清除已到期或即將到期的 Key。
當(dāng)此方法處理后,仍然到達(dá)最大內(nèi)存設(shè)置,將無(wú)法再進(jìn)行寫(xiě)入操作,但仍然可以進(jìn)行讀取操作。
Redis 新的 vm 機(jī)制,會(huì)把 Key 存放內(nèi)存,Value 會(huì)存放在 swap 區(qū)。
appendonly no
指定是否在每次更新操作后進(jìn)行日志記錄,Redis 在默認(rèn)情況下是異步的把數(shù)據(jù)寫(xiě)入磁盤(pán)。
如果不開(kāi)啟,可能會(huì)在斷電時(shí)導(dǎo)致一段時(shí)間內(nèi)的數(shù)據(jù)丟失。
因?yàn)?redis 本身同步數(shù)據(jù)文件是按上面 save 條件來(lái)同步的,所以有的數(shù)據(jù)會(huì)在一段時(shí)間內(nèi)只存在于內(nèi)存中。
默認(rèn)為 no。
appendfilename appendonly.aof
指定更新日志文件名,默認(rèn)為 appendonly.aof。
appendfsync everysec
指定更新日志條件,共有 3 個(gè)可選值:
- no:表示等操作系統(tǒng)進(jìn)行數(shù)據(jù)緩存同步到磁盤(pán)(快)
- always:表示每次更新操作后手動(dòng)調(diào)用 fsync() 將數(shù)據(jù)寫(xiě)到磁盤(pán)(慢,安全)
- everysec:表示每秒同步一次(折衷,默認(rèn)值)
vm-enabled no
指定是否啟用虛擬內(nèi)存機(jī)制,默認(rèn)值為 no。
VM 機(jī)制將數(shù)據(jù)分頁(yè)存放,由 Redis 將訪問(wèn)量較少的頁(yè)即冷數(shù)據(jù) swap 到磁盤(pán)上,訪問(wèn)多的頁(yè)面由磁盤(pán)自動(dòng)換出到內(nèi)存中。
vm-swap-file /tmp/redis.swap
虛擬內(nèi)存文件路徑,默認(rèn)值為 /tmp/redis.swap,不可多個(gè) Redis 實(shí)例共享。
vm-max-memory 0
將所有大于 vm-max-memory 的數(shù)據(jù)存入虛擬內(nèi)存。
無(wú)論 vm-max-memory 設(shè)置多小,所有索引數(shù)據(jù)都是內(nèi)存存儲(chǔ)的(Redis 的索引數(shù)據(jù) 就是 keys)。
也就是說(shuō),當(dāng) vm-max-memory 設(shè)置為 0 的時(shí)候,其實(shí)是所有 value 都存在于磁盤(pán)。
默認(rèn)值為 0。
vm-page-size 32
Redis swap 文件分成了很多的 page,一個(gè)對(duì)象可以保存在多個(gè) page 上面,但一個(gè) page 上不能被多個(gè)對(duì)象共享。
vm-page-size 是要根據(jù)存儲(chǔ)的數(shù)據(jù)大小來(lái)設(shè)定的,作者建議如果存儲(chǔ)很多小對(duì)象。
page 大小最好設(shè)置為 32 bytes 或者 64 bytes。
如果存儲(chǔ)很大大對(duì)象,則可以使用更大的 page,如果不確定,就使用默認(rèn)值。
vm-pages 134217728
設(shè)置 swap 文件中的 page 數(shù)量。
由于頁(yè)表(一種表示頁(yè)面空閑或使用的 bitmap)是在放在內(nèi)存中的。
在磁盤(pán)上每 8 個(gè) pages 將消耗 1 byte 的內(nèi)存。
vm-max-threads 4
設(shè)置訪問(wèn) swap 文件的線程數(shù),最好不要超過(guò)機(jī)器的核數(shù)。
如果設(shè)置為 0,那么所有對(duì) swap 文件的操作都是串行的,可能會(huì)造成比較長(zhǎng)時(shí)間的延遲。
默認(rèn)值為 4。
glueoutputbuf yes
設(shè)置在向客戶端應(yīng)答時(shí),是否把較小的包合并為一個(gè)包發(fā)送,默認(rèn)為開(kāi)啟。
hash-max-zipmap-entries 64
hash-max-zipmap-value 512
指定在超過(guò)一定的數(shù)量或者最大的元素超過(guò)某一臨界值時(shí),采用一種特殊的哈希算法。
activerehashing yes
指定是否激活重置哈希,默認(rèn)為開(kāi)啟。
include /path/to/local.conf
指定包含其它的配置文件,可以在同一主機(jī)上多個(gè) Redis 實(shí)例之間使用同一份配置文件,而同時(shí)各個(gè)實(shí)例又擁有自己的特定配置文件。
總結(jié)
到此這篇關(guān)于redis.config配置文件的文章就介紹到這了,更多相關(guān)redis.config配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決redis服務(wù)啟動(dòng)失敗的問(wèn)題
今天小編就為大家分享一篇解決redis服務(wù)啟動(dòng)失敗的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05Redis報(bào)錯(cuò)UnrecognizedPropertyException: Unrecognized 
在使用SpringBoot訪問(wèn)Redis時(shí),報(bào)錯(cuò)提示識(shí)別不了屬性headPart,經(jīng)過(guò)排查,發(fā)現(xiàn)并非Serializable或getset方法問(wèn)題,而是存在一個(gè)方法getHeadPart,但無(wú)headPart屬性,解決方案是將getHeadPart改為makeHeadPart2024-10-10k8s部署redis cluster集群的實(shí)現(xiàn)
在Kubernetes中部署Redis集群面臨挑戰(zhàn),因?yàn)槊總€(gè)Redis實(shí)例都依賴于一個(gè)配置文件,該文件可以跟蹤其他集群實(shí)例及其角色。需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-06-06利用Redis實(shí)現(xiàn)訪問(wèn)次數(shù)限流的方法詳解
這篇文章主要給大家介紹了關(guān)于如何利用Redis實(shí)現(xiàn)訪問(wèn)次數(shù)限流的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-02-02