1、開頭說明
#這裡沒什麼好說的,要注意的是後面需要使用內存大小時,可以指定單位,通常是以k,gb,m的形式出現,且單位不區分大小寫。
2、INCLUDES
我們知道Redis只有一個設定文件,如果多個人進行開發維護,那麼就需要多個這樣的設定文件,這時候多個設定檔就可以在此透過include /path/to/local.conf 配置進來,而原本的redis.conf 設定檔就作為一個總閘。
ps:如果用過struts2 開發的同學,在專案組中多人開發的情況下,通常會有多個struts2.xml 文件,這時候也會透過類別時的配置引入進來。
另外需要注意的時,如果將此配置寫在redis.conf 檔案的開頭,那麼後面的配置會覆蓋引入檔案的配置,如果想以引入檔案的配置為主,那麼需要將include配置寫在redis.conf 檔案的末尾。
3、MODULES
#redis3.0的爆炸功能是新增了集群,而redis4.0就是在3.0的基礎上新增了許多功能,其中這裡的自訂模組配置就是其中之一。透過這裡的 loadmodule 配置將引入自訂模組來新增一些功能。
4、NETWORK
ps:這裡的設定較長,我只截取了一部分,然後下同。
①、bind:綁定redis伺服器網路卡IP,預設為127.0.0.1,即本地回環位址。這樣的話,存取redis服務只能透過本機的客戶端連接,而無法透過遠端連線。如果bind選項為空的話,那會接受所有來自於可用網路介面的連線。
②、port:指定redis運行的端口,預設是6379。由於Redis是單執行緒模型,因此單機開多個Redis進程的時候會修改連接埠。
③、timeout:設定客戶端連線時的逾時時間,單位為秒。當客戶端在這段時間內沒有發出任何指令,那麼關閉該連線。預設值為0,表示不關閉。
④、tcp-keepalive :單位是秒,表示將週期性的使用SO_KEEPALIVE檢測客戶端是否仍處於健康狀態,避免伺服器一直阻塞,官方給出的建議值是300s,如果設定為0 ,則不會週期性的檢測。
5、GENERAL
#具體配置詳解:
①、daemonize:設定為yes表示指定Redis以守護程式的方式啟動(後台啟動)。預設值為no
②、pidfile:配置PID檔案路徑,當redis作為守護程式運行的時候,它會把pid 預設寫到/var/redis/run/redis_6379.pid 檔案裡面
③、loglevel :定義日誌等級。預設值為notice,有以下4種取值:
debug(記錄大量日誌信息,適用於開發、測試階段)
verbose(較多日誌資訊)
notice(適量日誌訊息,使用於生產環境)
warning(只有部分重要、關鍵資訊才會被記錄)
④、logfile :設定log檔案位址,預設列印在命令列終端機的視窗上
⑤、databases:設定資料庫的數目。預設的資料庫是DB 0 ,可以在每個連線上使用select
6、SNAPSHOTTING
這裡的設定主要用來做持久化操作。
①、save:這裡是用來配置觸發 Redis的持久化條件,也就是什麼時候將記憶體中的資料儲存到硬碟。預設如下配置:
save 900 1:表示900 秒内如果至少有 1 个 key 的值变化,则保存 save 300 10:表示300 秒内如果至少有 10 个 key 的值变化,则保存 save 60 10000:表示60 秒内如果至少有 10000 个 key 的值变化,则保存
當然如果你只是用Redis的快取功能,不需要持久化,那麼你可以註解掉所有的 save 行來停用儲存功能。可以直接一個空字串來實現停用:save ""
②、stop-writes-on-bgsave-error :預設值為yes。當啟用了RDB且最後一次後台儲存資料失敗,Redis是否停止接收資料。這會讓使用者意識到資料沒有正確持久化到磁碟上,否則沒有人會注意到災難(disaster)發生了。如果Redis重啟了,那麼又可以重新開始接收資料了
③、rdbcompression ;默认值是yes。对于存储到磁盘中的快照,可以设置是否进行压缩存储。如果是的话,redis会采用LZF算法进行压缩。如果你不想消耗CPU来进行压缩的话,可以设置为关闭此功能,但是存储在磁盘上的快照会比较大。
④、rdbchecksum :默认值是yes。在存储快照后,我们还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加大约10%的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能。
⑤、dbfilename :设置快照的文件名,默认是 dump.rdb
⑥、dir:设置快照文件的存放路径,这个配置项一定是个目录,而不能是文件名。使用上面的 dbfilename 作为保存的文件名。
7、REPLICATION
①、slave-serve-stale-data:默认值为yes。当一个 slave 与 master 失去联系,或者复制正在进行的时候,slave 可能会有两种表现:
1) 如果为 yes ,slave 仍然会应答客户端请求,但返回的数据可能是过时,或者数据可能是空的在第一次同步的时候
2) 如果为 no ,在你执行除了 info he salveof 之外的其他命令时,slave 都将返回一个 "SYNC with master in progress" 的错误
②、slave-read-only:配置Redis的Slave实例是否接受写操作,即Slave是否为只读Redis。默认值为yes。
③、repl-diskless-sync:主从数据复制是否使用无硬盘复制功能。默认值为no。
④、repl-diskless-sync-delay:当启用无硬盘备份,服务器等待一段时间后才会通过套接字向从站传送RDB文件,这个等待时间是可配置的。 这一点很重要,因为一旦传送开始,就不可能再为一个新到达的从站服务。从站则要排队等待下一次RDB传送。因此服务器等待一段 时间以期更多的从站到达。延迟时间以秒为单位,默认为5秒。要关掉这一功能,只需将它设置为0秒,传送会立即启动。默认值为5。
⑤、repl-disable-tcp-nodelay:同步之后是否禁用从站上的TCP_NODELAY 如果你选择yes,redis会使用较少量的TCP包和带宽向从站发送数据。但这会导致在从站增加一点数据的延时。
Linux内核默认配置情况下最多40毫秒的延时。如果选择no,从站的数据延时不会那么多,但备份需要的带宽相对较多。默认情况下我们将潜在因素优化,但在高负载情况下或者在主从站都跳的情况下,把它切换为yes是个好主意。默认值为no。
8、SECURITY
①、rename-command:命令重命名,对于一些危险命令例如:
flushdb(清空数据库)
flushall(清空所有记录)
config(客户端连接后可配置服务器)
keys(客户端连接后可查看所有存在的键)
作为服务端redis-server,常常需要禁用以上命令来使得服务器更加安全,禁用的具体做法是是:
rename-command FLUSHALL ""
也可以保留命令但是不能轻易使用,重命名这个命令即可:
rename-command FLUSHALL abcdefg
这样,重启服务器后则需要使用新命令来执行操作,否则服务器会报错unknown command。
9、CLIENTS
①、maxclients :设置客户端最大并发连接数,默认无限制,Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件。 描述符数-32(redis server自身会使用一些),如果设置 maxclients为0 。表示不作限制。当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max number of clients reached错误信息
10、MEMORY MANAGEMENT
①、maxmemory:设置客户端最大并发连接数,默认无限制,Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件。描述符数-32(redis server自身会使用一些),如果设置 maxclients为0 。表示不作限制。当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max number of clients reached错误信息。
②、maxmemory-policy :当内存使用达到最大值时,redis使用的清楚策略。有以下几种可以选择:
1)volatile-lru 利用LRU演算法移除設定過期時間的key (LRU:最近使用Least Recently Used )
2)allkeys-lru 利用LRU演算法移除任何key
3)volatile-random 移除設定過期時間的隨機key
4)allkeys-random 移除隨機ke
5)volatile-ttl 移除即將過期的key(minor TTL)
6)noeviction noeviction 不移除任何key,只回傳一個寫錯誤,預設選項
③、maxmemory-samples :LRU 和minimal TTL 演算法都不是精確的演算法,但是相對精確的演算法(為了節省記憶體)。隨意你可以選擇樣本大小進行檢,redis預設選擇3個樣本進行檢測,你可以透過maxmemory-samples進行設定樣本數。
11、APPEND ONLY MODE
①、appendonly:預設redis使用的是rdb方式持久化,這種方式在許多應用中已經足夠用了。但是redis如果中途宕機,會導致可能有幾分鐘的資料遺失,根據save來策略進行持久化,Append Only File是另一種持久化方式, 可以提供更好的持久化特性。 Redis會把每次寫入的資料在接收後都寫入appendonly.aof文件,每次啟動時Redis都會先把這個文件的資料讀入記憶體裡,先忽略RDB檔。預設值為no。
②、appendfilename :aof檔名,預設為"appendonly.aof"
③、appendfsync:aof持久化策略的設定;no表示不執行fsync,由作業系統保證資料同步到磁碟,速度最快;always表示每次寫入都執行fsync,以確保資料同步到磁碟;everysec表示每秒執行一次fsync,可能會導致遺失這1s資料
④、no-appendfsync -on-rewrite:在aof重寫或寫入rdb檔案的時候,會執行大量IO,此時對於everysec和always的aof模式來說,執行fsync會造成阻塞過長時間,no-appendfsync-on-rewrite字段設定為預設為no。
如果對延遲要求很高的應用,這個欄位可以設定為yes,否則還是設定為no,這樣對持久化特性來說這是更安全的選擇。 設定為yes表示rewrite期間對新寫入操作不fsync,暫時存在記憶體中,等rewrite完成後再寫入,預設為no,建議yes。 Linux的預設fsync策略是30秒。可能遺失30秒資料。預設值為no。
⑤、auto-aof-rewrite-percentage:預設值為100。 aof自動重寫配置,噹噹前aof檔案大小超過上一次重寫的aof檔案大小的百分之多少進行重寫,即當aof檔案成長到一定大小的時候,Redis能夠調用bgrewriteaof對日誌檔案進行重寫。當前AOF檔案大小是上次日誌重寫得到AOF檔案大小的二倍(設定為100)時,自動啟動新的日誌重寫過程。
⑥、auto-aof-rewrite-min-size:64mb。設定允許重寫的最小aof檔案大小,避免了達到約定百分比但尺寸仍然很小的情況還要重寫。
⑦、aof-load-truncated:aof檔案可能在尾部是不完整的,當redis啟動的時候,aof檔案的資料被載入記憶體。重啟可能發生在redis所在的主機作業系統宕機後,尤其在ext4檔案系統沒有加上data=ordered選項,出現這種現象 redis宕機或異常終止不會造成尾部不完整現象,可以選擇讓redis退出,或導入盡可能多的數據。
如果選擇的是yes,當截斷的aof檔案被匯入的時候,會自動發布一個log給客戶端然後load。如果是no,使用者必須手動redis-check-aof修復AOF檔才可以。預設值為 yes。
12、LUA SCRIPTING
#①、lua-time-limit:一個lua腳本執行的最大時間,單位為ms 。預設值為5000.
13、REDIS CLUSTER
①、cluster-enabled:叢集開關,預設為不開啟集群模式。
②、cluster-config-file:叢集設定檔的名稱,每個節點都有一個叢集相關的設定文件,持久化保存叢集的資訊。 這個檔案並不需要手動配置,這個設定檔有Redis產生並更新,每個Redis叢集節點需要一個單獨的設定檔。請確保與實例運行的系統中設定檔名稱不衝突。預設配置為nodes-6379.conf。
③、cluster-node-timeout :可以設定值為15000。節點互連逾時的閥值,叢集節點超時毫秒數
④、cluster-slave-validity-factor :可以設定值為10。在進行故障轉移的時候,全部slave都會請求申請為master,但是有些slave可能與master斷開連接一段時間了, 導致資料過於陳舊,這樣的slave不應該被提升為master。這個參數就是用來判斷slave節點與master斷線的時間是否過長。
判斷方法是:比較slave斷開連接的時間和(node-timeout * slave-validity-factor) repl-ping-slave-period 如果節點超時時間為三十秒, 並且slave-validity- factor為10,假設預設的repl-ping-slave-period是10秒,即如果超過310秒slave將不會嘗試進行故障轉移
⑤、cluster-migration-barrier :可以配置值為1 。 master的slave數量大於該值,slave才能遷移到其他孤立master上,如這個參數若被設為2,那麼只有當一個主節點擁有2 個可工作的從節點時,它的一個從節點會嘗試遷移。
⑥、cluster-require-full-coverage:預設情況下,叢集全部的slot有節點負責,叢集狀態才為ok,才能提供服務。 設定為no,可以在slot沒有全部分配的時候提供服務。不建議打開該配置,這樣會造成分區的時候,小分區的master一直在接受寫入請求,而造成很長時間資料不一致。
更多redis知識請關注redis資料庫教學欄位。
以上是redis的設定檔介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!