Redis樣本設定檔

來源:互聯網
上載者:User

Redis樣本設定檔
# Redis樣本設定檔


# 注意單位問題:當需要設定記憶體大小的時候,可以使用類似1k、5GB、4M這樣的常見格式:
#
# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes
#
# 單位是大小寫不敏感的,所以1GB 1Gb 1gB的寫法都是完全一樣的。


# Redis預設是不作為守護進程來啟動並執行。你可以把這個設定為"yes"讓它作為守護進程來運行。
# 注意,當作為守護進程的時候,Redis會把進程ID寫到 /var/run/redis.pid
daemonize no


# 當以守護進程方式啟動並執行時候,Redis會把進程ID預設寫到 /var/run/redis.pid。你可以在這裡修改路徑。
pidfile /var/run/redis.pid


# 接受串連的特定連接埠,預設是6379。
# 如果連接埠設定為0,Redis就不會監聽TCP通訊端。
port 6379


# 如果你想的話,你可以綁定單一介面;如果這裡沒單獨設定,那麼所有介面的串連都會被監聽。
#
# bind 127.0.0.1


# 指定用來監聽串連的unxi通訊端的路徑。這個沒有預設值,所以如果你不指定的話,Redis就不會通過unix通訊端來監聽。
#
# unixsocket /tmp/redis.sock
# unixsocketperm 755


#一個用戶端空閑多少秒後關閉串連。(0代表禁用,永不關閉)
timeout 0


# 設定伺服器調試等級。
# 可能值:
# debug (很多資訊,對開發/測試有用)
# verbose (很多精簡的有用資訊,但是不像debug等級那麼多)
# notice (適量的資訊,基本上是你生產環境中需要的程度)
# warning (只有很重要/嚴重的資訊會記錄下來)
loglevel verbose


# 指明記錄檔名。也可以使用"stdout"來強制讓Redis把日誌資訊寫到標準輸出上。
# 注意:如果Redis以守護進程方式運行,而你設定日誌顯示到標準輸出的話,那麼日誌會發送到 /dev/null
logfile stdout


# 要使用系統日誌記錄器很簡單,只要設定 "syslog-enabled" 為 "yes" 就可以了。
# 然後根據需要設定其他一些syslog參數就可以了。
# syslog-enabled no


# 指明syslog身份
# syslog-ident redis


# 指明syslog的裝置。必須是一個使用者或者是 LOCAL0 ~ LOCAL7 之一。
# syslog-facility local0


# 設定資料庫個數。預設資料庫是 DB 0,你可以通過SELECT WHERE dbid(0~'databases' - 1)來為每個串連使用不同的資料庫。
databases 16


################################ 快照 #################################


#
# 把資料庫存到磁碟上:
#
# save
#
# 會在指定秒數和資料變化次數之後把資料庫寫到磁碟上。
#
# 下面的例子將會進行把資料寫入磁碟的操作:
# 900秒(15分鐘)之後,且至少1次變更
# 300秒(5分鐘)之後,且至少10次變更
# 60秒之後,且至少10000次變更
#
# 注意:你要想不寫磁碟的話就把所有 "save" 設定注釋掉就行了。


save 900 1
save 300 10
save 60 10000


# 當匯出到 .rdb 資料庫時是否用LZF壓縮字串對象。
# 預設設定為 "yes",所以幾乎總是生效的。
# 如果你想節省CPU的話你可以把這個設定為 "no",但是如果你有可壓縮的key的話,那資料檔案就會更大了。
rdbcompression yes


# 資料庫的檔案名稱
dbfilename dump.rdb


# 工作目錄
#
# 資料庫會寫到這個目錄下,檔案名稱就是上面的 "dbfilename" 的值。
#
# 累加檔案也放這裡。
#
# 注意你這裡指定的必須是目錄,不是檔案名稱。
dir ./


################################# 同步 #################################


#
# 主從同步。通過 slaveof 配置來實現Redis執行個體的備份。
# 注意,這裡是本地從遠端複製資料。也就是說,本地可以有不同的資料庫檔案、綁定不同的IP、監聽不同的連接埠。
#
# slaveof


# 如果master設定了密碼(通過下面的 "requirepass" 選項來配置),那麼slave在開始同步之前必須進行身分識別驗證,否則它的同步請求會被拒絕。
#
# masterauth


# 當一個slave失去和master的串連,或者同步進行中中,slave的行為有兩種可能:
#
# 1) 如果 slave-serve-stale-data 設定為 "yes" (預設值),slave會繼續響應用戶端請求,可能是正常資料,也可能是還沒獲得值的空資料。
# 2) 如果 slave-serve-stale-data 設定為 "no",slave會回複"正在從master同步(SYNC with master in progress)"來處理各種請求,除了 INFO 和 SLAVEOF 命令。
#
slave-serve-stale-data yes


# slave根據指定的時間間隔向伺服器發送ping請求。
# 時間間隔可以通過 repl_ping_slave_period 來設定。
# 預設10秒。
#
# repl-ping-slave-period 10


# 下面的選項設定了大塊資料I/O、向master請求資料和ping響應的到期時間。
# 預設值60秒。
#
# 一個很重要的事情是:確保這個值比 repl-ping-slave-period 大,否則master和slave之間的傳輸到期時間比預想的要短。
#
# repl-timeout 60


################################## 安全 ###################################


# 要求用戶端在處理任何命令時都要驗證身份和密碼。
# 這在你信不過來訪者時很有用。
#
# 為了向後相容的話,這段應該注釋掉。而且大多數人不需要身分識別驗證(例如:它們運行在自己的伺服器上。)
#
# 警告:因為Redis太快了,所以居心不良的人可以每秒嘗試150k的密碼來試圖破解密碼。
# 這意味著你需要一個高強度的密碼,否則破解太容易了。
#
# requirepass foobared


# 命令重新命名
#
# 在共用環境下,可以為危險命令改變名字。比如,你可以為 CONFIG 改個其他不太容易猜到的名字,這樣你自己仍然可以使用,而別人卻沒法做壞事了。
#
# 例如:
#
# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
#
# 甚至也可以通過給命令賦值一個Null 字元串來完全禁用這條命令:
#
# rename-command CONFIG ""


################################### 限制 ####################################


#
# 設定最多同時串連用戶端數量。
# 預設沒有限制,這個關係到Redis進程能夠開啟的檔案描述符數量。
# 特殊值"0"表示沒有限制。
# 一旦達到這個限制,Redis會關閉所有新串連並發送錯誤"達到最大使用者數上限(max number of clients reached)"
#
# maxclients 128


# 不要用比設定的上限更多的記憶體。一旦記憶體使用量達到上限,Redis會根據選定的回收策略(參見:maxmemmory-policy)刪除key。
#
# 如果因為刪除策略問題Redis無法刪除key,或者原則設定為 "noeviction",Redis會回複需要更多記憶體的錯誤資訊給命令。
# 例如,SET,LPUSH等等。但是會繼續合理響應唯讀命令,比如:GET。
#
# 在使用Redis作為LRU緩衝,或者為執行個體設定了硬性記憶體限制的時候(使用 "noeviction" 策略)的時候,這個選項還是滿有用的。
#
# 警告:當一堆slave連上達到記憶體上限的執行個體的時候,響應slave需要的輸出緩衝所需記憶體不計算在使用記憶體當中。
# 這樣當請求一個刪除掉的key的時候就不會觸發網路問題/重新同步的事件,然後slave就會收到一堆刪除指令,直到資料庫空了為止。
#
# 簡而言之,如果你有slave連上一個master的話,那建議你把master記憶體限制設小點兒,確保有足夠的系統記憶體用作輸出緩衝。
# (如果原則設定為"noeviction"的話就不無所謂了)
#
# maxmemory


# 記憶體策略:如果達到記憶體限制了,Redis如何刪除key。你可以在下面五個策略裡面選:
#
# volatile-lru -> 根據LRU演算法產生的到期時間來刪除。
# allkeys-lru -> 根據LRU演算法刪除任何key。
# volatile-random -> 根據到期設定來隨機刪除key。
# allkeys->random -> 無差別隨機刪。
# volatile-ttl -> 根據最近到期時間來刪除(輔以TTL)
# noeviction -> 誰也不刪,直接在寫操作時返回錯誤。
#
# 注意:對所有策略來說,如果Redis找不到合適的可以刪除的key都會在寫操作時返回一個錯誤。
#
# 這裡涉及的命令:set setnx setex append
# incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd
# sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby
# zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby
# getset mset msetnx exec sort
#
# 預設值如下:
#
# maxmemory-policy volatile-lru


# LRU和最小TTL演算法的實現都不是很精確,但是很接近(為了省記憶體),所以你可以用範例做測試。
# 例如:預設Redis會檢查三個key然後取最舊的那個,你可以通過下面的配置項來設定樣本的個數。
#
# maxmemory-samples 3


############################## 純累加模式 ###############################


# 預設情況下,Redis是非同步把資料匯出到磁碟上。這種情況下,當Redis掛掉的時候,最新的資料就丟了。
# 如果不希望丟掉任何一條資料的話就該用純累加模式:一旦開啟這個模式,Redis會把每次寫入的資料在接收後都寫入 appendonly.aof 檔案。
# 每次啟動時Redis都會把這個檔案的資料讀入記憶體裡。
#
# 注意,非同步匯出的資料庫檔案和純累加檔案可以並存(你得把上面所有"save"設定都注釋掉,關掉匯出機制)。
# 如果純累加模式開啟了,那麼Redis會在啟動時載入記錄檔而忽略匯出的 dump.rdb 檔案。
#
# 重要:查看 BGREWRITEAOF 來瞭解當累加記錄檔太大了之後,怎麼在後台重新處理這個記錄檔。


appendonly no


# 純累加檔案名稱字(預設:"appendonly.aof")
# appendfilename appendonly.aof


# fsync() 請求作業系統馬上把資料寫到磁碟上,不要再等了。
# 有些作業系統會真的把資料馬上刷到磁碟上;有些則要磨蹭一下,但是會儘快去做。
#
# Redis支援三種不同的模式:
#
# no:不要立刻刷,只有在作業系統需要刷的時候再刷。比較快。
# always:每次寫操作都立刻寫入到aof檔案。慢,但是最安全。
# everysec:每秒寫一次。折衷方案。
#
# 預設的 "everysec" 通常來說能在速度和資料安全性之間取得比較好的平衡。
# 如果你真的理解了這個意味著什麼,那麼設定"no"可以獲得更好的效能表現(如果丟資料的話,則只能拿到一個不是很新的快照);
# 或者相反的,你選擇 "always" 來犧牲速度確保資料安全、完整。
#
# 如果拿不準,就用 "everysec"


# appendfsync always
appendfsync everysec
# appendfsync no


# 如果AOF的同步原則設定成 "always" 或者 "everysec",那麼背景儲存進程(後台儲存或寫入AOF日誌)會產生很多磁碟I/O開銷。
# 某些Linux的配置下會使Redis因為 fsync() 而阻塞很久。
# 注意,目前對這個情況還沒有完美修正,甚至不同線程的 fsync() 會阻塞我們的 write(2) 請求。
#
# 為了緩解這個問題,可以用下面這個選項。它可以在 BGSAVE 或 BGREWRITEAOF 處理時阻止 fsync()。
#
# 這就意味著如果有子進程在進行儲存操作,那麼Redis就處於"不可同步"的狀態。
# 這實際上是說,在最差的情況下可能會丟掉30秒鐘的日誌資料。(預設Linux設定)
#
# 如果你有延遲的問題那就把這個設為 "yes",否則就保持 "no",這是儲存持久資料的最安全的方式。
no-appendfsync-on-rewrite no


# 自動重寫AOF檔案
#
# 如果AOF記錄檔大到指定百分比,Redis能夠通過 BGREWRITEAOF 自動重寫AOF記錄檔。
#
# 工作原理:Redis記住上次重寫時AOF日誌的大小(或者重啟後沒有寫操作的話,那就直接用此時的AOF檔案),
# 基準尺寸和當前尺寸做比較。如果當前尺寸超過指定比例,就會觸發重寫操作。
#
# 你還需要指定被重寫日誌的最小尺寸,這樣避免了達到約定百分比但尺寸仍然很小的情況還要重寫。
#
# 指定百分比為0會禁用AOF自動重寫特性。


auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb


################################## 慢查詢日誌 ###################################


# Redis慢查詢日誌可以記錄超過指定時間的查詢。已耗用時間不包括各種I/O時間。
# 例如:串連用戶端,發送響應資料等。只計算命令啟動並執行實際時間(這是唯一一種命令運行線程阻塞而無法同時為其他請求服務的情境)
#
# 你可以為慢查詢日誌配置兩個參數:一個是超標時間,單位為微妙,記錄超過個時間的命令。
# 另一個是慢查詢日誌長度。當一個新的命令被寫進日誌的時候,最老的那個記錄會被刪掉。
#
# 下面的時間單位是微秒,所以1000000就是1秒。注意,負數時間會禁用慢查詢日誌,而0則會強制記錄所有命令。
slowlog-log-slower-than 10000


# 這個長度沒有限制。只要有足夠的記憶體就行。你可以通過 SLOWLOG RESET 來釋放記憶體。(譯者註:日誌居然是在記憶體裡的Orz)
slowlog-max-len 128


################################ 虛擬記憶體 ###############################


### 警告!虛擬記憶體在Redis 2.4是反對的。
### 非常不鼓勵使用虛擬記憶體!!


# 虛擬記憶體可以使Redis在記憶體不夠的情況下仍然可以將所有資料序列儲存在記憶體裡。
# 為了做到這一點,高頻key會調到記憶體裡,而低頻key會轉到分頁檔裡,就像作業系統使用記憶體頁一樣。
#
# 要使用虛擬記憶體,只要把 "vm-enabled" 設定為 "yes",並根據需要設定下面三個虛擬記憶體參數就可以了。


vm-enabled no
# vm-enabled yes


# 這是分頁檔的路徑。估計你猜到了,分頁檔不能在多個Redis執行個體之間共用,所以確保每個Redis執行個體使用一個獨立分頁檔。
#
# 最好的儲存分頁檔(被隨機訪問)的介質是固態硬碟(SSD)。
#
# *** 警告 *** 如果你使用共用主機,那麼預設的分頁檔放到 /tmp 下是不安全的。
# 建立一個Redis使用者可寫的目錄,並配置Redis在這裡建立分頁檔。
vm-swap-file /tmp/redis.swap


# "vm-max-memory" 配置虛擬記憶體可用的最大記憶體容量。
# 如果分頁檔還有空間的話,所有超標部分都會放到分頁檔裡。
#
# "vm-max-memory" 設定為0表示系統會用掉所有可用記憶體。
# 這預設值不咋地,只是把你能用的記憶體全用掉了,留點餘量會更好。
# 例如,設定為剩餘記憶體的60%-80%。
vm-max-memory 0


# Redis分頁檔是分成多個資料頁的。
# 一個可儲存物件可以被儲存在多個連續頁裡,但是一個資料頁無法被多個對象共用。
# 所以,如果你的資料頁太大,那麼小對象就會浪費掉很多空間。
# 如果資料頁太小,那用於儲存的交換空間就會更少(假定你設定相同的資料頁數量)
#
# 如果你使用很多小對象,建議分頁尺寸為64或32個位元組。
# 如果你使用很多大對象,那就用大一些的尺寸。
# 如果不確定,那就用預設值 :)
vm-page-size 32


# 分頁檔裡資料頁總數。
# 根據記憶體中分頁表(已用/未用的資料頁分布情況),磁碟上每8個資料頁會消耗記憶體裡1個位元組。
#
# 交換區容量 = vm-page-size * vm-pages
#
# 根據預設的32位元組的資料頁尺寸和134217728的資料頁數來算,Redis的資料頁檔案會佔4GB,而記憶體裡的分頁表會消耗16MB記憶體。
#
# 為你的應驗程式設定最小且夠用的數字比較好,下面這個預設值在大多數情況下都是偏大的。
vm-pages 134217728


# 同時可啟動並執行虛擬記憶體I/O線程數。
# 這些線程可以完成從分頁檔進行資料讀寫的操作,也可以處理資料在記憶體與磁碟間的互動和編碼/解碼處理。
# 多一些線程可以一定程度上提高處理效率,雖然I/O操作本身依賴於物理裝置的限制,不會因為更多的線程而提高單次讀寫操作的效率。
#
# 特殊值0會關閉線程級I/O,並會開啟阻塞虛擬記憶體機制。
vm-max-threads 4


############################### 進階配置 ###############################


# 當有大量資料時,適合用雜湊編碼(需要更多的記憶體),元素數量上限不能超過給定限制。
# 你可以通過下面的選項來設定這些限制:
hash-max-zipmap-entries 512
hash-max-zipmap-value 64


# 與雜湊相類似,資料元素較少的情況下,可以用另一種方式來編碼從而節省大量空間。
# 這種方式只有在符合下面限制的時候才可以用:
list-max-ziplist-entries 512
list-max-ziplist-value 64


# 還有這樣一種特殊編碼的情況:資料全是64位無符號整型數字構成的字串。
# 下面這個配置項就是用來限制這種情況下使用這種編碼的最大上限的。
set-max-intset-entries 512


# 與第一、第二種情況相似,有序序列也可以用一種特別的編碼方式來處理,可節省大量空間。
# 這種編碼只適合長度和元素都符合下面限制的有序序列:
zset-max-ziplist-entries 128
zset-max-ziplist-value 64


# 雜湊重新整理,每100個CPU毫秒會拿出1個毫秒來重新整理Redis的主雜湊表(頂級索引值映射表)。
# redis所用的雜湊表實現(見dict.c)採用延遲雜湊重新整理機制:你對一個雜湊表操作越多,雜湊重新整理操作就越頻繁;
# 反之,如果伺服器非常不活躍那麼也就是用點記憶體儲存雜湊表而已。
#
# 預設是每秒鐘進行10次雜湊表重新整理,用來重新整理字典,然後儘快釋放記憶體。
#
# 建議:
# 如果你對延遲比較在意的話就用 "activerehashing no",每個請求延遲2毫秒不太好嘛。
# 如果你不太在意延遲而希望儘快釋放記憶體的話就設定 "activerehashing yes"。
activerehashing yes


################################## 包含 ###################################


# 包含一個或多個其他設定檔。
# 這在你有標準配置模板但是每個redis伺服器又需要個性設定的時候很有用。
# 包含檔案特性允許你引人其他設定檔,所以好好利用吧。
#
# include /path/to/local.conf
# include /path/to/other.conf

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.