Redis使用入門(一)【配置檔案】
redis.windows.conf內容如下:
# 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
# 單位是不區分大小寫的,你寫 1K 5GB 4M 也行
################################## INCLUDES ###################################
# 假如說你有一個可用於所有的 redis server 的標準配置模板,
# 但針對某些 server 又需要一些個性化的設定,
# 你可以使用 include 來包含一些其他的配置檔案,這對你來說是非常有用的。
#
# 但是要注意哦,include 是不能被 config rewrite 命令改寫的
# 由於 redis 總是以最後的加工線作為一個配置指令值,所以你最好是把 include 放在這個檔案的最前面,
# 以避免在執行時覆蓋配置的改變,相反,你就把它放在後面(外國人真囉嗦)。
#
# include .\path\to\local.conf
# include c:\path\to\other.conf
################################ 常用 #####################################
#在Windows上,以程序和pidfile還不受支援。
#但是,您可以執行Redis的作為Windows服務,並指定一個日誌檔案,日誌檔案將包含PID。
# 預設情況下 redis 不是作為守護程序執行的,如果你想讓它在後臺執行,你就把它改成 yes。
# 當redis作為守護程序執行的時候,它會寫一個 pid 到 /var/run/redis.pid 檔案裡面。
#daemonize no
# 當redis作為守護程序執行的時候,它會把 pid 預設寫到 /var/run/redis.pid 檔案裡面,
# 但是你可以在這裡自己制定它的檔案位置。
#pidfile /var/run/redis.pid
#指定Redis監聽埠,預設埠為6379,作者在自己的一篇博文中解釋了為什麼選用6379作為預設埠,因為6379在手機按鍵上MERZ對應的號碼,而MERZ取自義大利歌女Alessia Merz的名字
port 6379
# TCP 監聽的最大容納數量
# 在高併發的環境下,你需要把這個值調高以避免客戶端連線緩慢的問題。
# Linux 核心會一聲不響的把這個值縮小成 /proc/sys/net/core/somaxconn 對應的值,
# 所以你要修改這兩個值才能達到你的預期。
tcp-backlog 511
# 預設情況下,redis 在 server 上所有有效的網路介面上監聽客戶端連線。
# 你如果只想讓它在一個網路介面上監聽,那你就繫結一個IP或者多個IP。
#
# 示例,多個IP用空格隔開:
#繫結的主機地址
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1
# 指定 unix socket 的路徑。
#
# unixsocket /tmp/redis.sock
# unixsocketperm 700
#指定在一個 client 空閒多少秒之後關閉連線(0 就是不管它)
#設定客戶端連線時的超時時間,單位為秒。當客戶端在這段時間內沒有發出任何指令,那麼關閉該連線
timeout 0
# tcp 心跳包。
#
# 如果設定為非零,則在與客戶端缺乏通訊的時候使用 SO_KEEPALIVE 傳送 tcp acks 給客戶端。
# 這個之所有有用,主要由兩個原因:
#
# 1) 防止死的 peers
# 2) Take the connection alive from the point of view of network
# equipment in the middle.
#推薦一個合理的值就是60秒
#指定TCP連線是否為長連線,"偵探"訊號有server端維護。預設為0.表示禁用
tcp-keepalive 0
# 定義日誌級別。
# 可以是下面的這些值:
# debug (適用於開發或測試階段)
# verbose (many rarely useful info, but not a mess like the debug level)
# notice (適用於生產環境)
# warning (僅僅一些重要的訊息被記錄)
#log 等級分為4 級,debug,verbose, notice, 和warning。生產環境下一般開啟notice
loglevel notice
# 指定日誌檔案的位置
# 日誌記錄方式,預設為標準輸出,如果配置Redis為守護程序方式執行,而這裡又配置為日誌記錄方式為標準輸出,則日誌將會發送給/dev/null
logfile /Worksoftware/Redis3DI/logs/redis.log
# 要想把日誌記錄到系統日誌,就把它改成 yes,
# 也可以可選擇性的更新其他的syslog 引數以達到你的要求
# syslog-enabled no
# 設定 syslog 的 identity。
# syslog-ident redis
# 設定 syslog 的 facility,必須是 USER 或者是 LOCAL0-LOCAL7 之間的值。
# syslog-facility local0
# 設定資料庫的數目。
# 預設資料庫是 DB 0,你可以在每個連線上使用 select <dbid> 命令選擇一個不同的資料庫,
# 但是 dbid 必須是一個介於 0 到 databasees - 1 之間的值
#設定資料庫的個數,可以使用SELECT 命令來切換資料庫。預設使用的資料庫是0號庫。預設16個庫
databases 16
################################ 快照 ################################
#
# 存 DB 到磁碟:
#
# 格式:save <間隔時間(秒)> <寫入次數>
#
# 根據給定的時間間隔和寫入次數將資料儲存到磁碟
#
# 下面的例子的意思是:
# 900 秒內如果至少有 1 個 key 的值變化,則儲存
# 300 秒內如果至少有 10 個 key 的值變化,則儲存
# 60 秒內如果至少有 10000 個 key 的值變化,則儲存
#
# 注意:你可以註釋掉所有的 save 行來停用儲存功能。
# 也可以直接一個空字串來實現停用:
# save ""
#儲存資料快照的頻率,即將資料持久化到dump.rdb檔案中的頻度。用來描述"在多少秒期間至少多少個變更操作"觸發snapshot資料儲存動作
#預設設定,意思是:
#if(在60 秒之內有10000 個keys 發生變化時){
#進行映象備份
#}else if(在300 秒之內有10 個keys 發生了變化){
#進行映象備份
#}else if(在900 秒之內有1 個keys 發生了變化){
#進行映象備份
#}
#分別表示900秒(15分鐘)內有1個更改,300秒(5分鐘)內有10個更改以及60秒內有10000個更改。
#指定在多長時間內,有多少次更新操作,就將資料同步到資料檔案,可以多個條件配合
save 900 1
save 300 10
save 60 10000
# 預設情況下,如果 redis 最後一次的後臺儲存失敗,redis 將停止接受寫操作,
# 這樣以一種強硬的方式讓使用者知道資料不能正確的持久化到磁碟,
# 否則就會沒人注意到災難的發生。
# 如果後臺儲存程序重新啟動工作了,redis 也將自動的允許寫操作。
# 然而你要是安裝了靠譜的監控,你可能不希望 redis 這樣做,那你就改成 no 好了。
#當持久化出現錯誤時,是否依然繼續進行工作,是否終止所有的客戶端write請求。
#預設設定"yes"表示終止,一旦snapshot資料儲存故障,那麼此server為只讀服務。
#如果為"no",那麼此次snapshot將失敗,但下一次snapshot不會受到影響,不過如果出現故障,資料只能恢復到"最近一個成功點"
stop-writes-on-bgsave-error yes
# 是否在 dump .rdb 資料庫的時候使用 LZF 壓縮字串
# 預設都設為 yes
# 如果你希望儲存子程序節省點 cpu ,你就設定它為 no ,
# 不過這個資料集可能就會比較大
#在進行資料映象備份時,是否啟用rdb檔案壓縮手段,預設為yes。
#壓縮可能需要額外的cpu開支,不過這能夠有效的減小rdb檔案的大,有利於儲存/備份/傳輸/資料恢復
rdbcompression yes
# 是否校驗rdb檔案
#是否進行校驗和,是否對rdb檔案使用CRC64校驗和,預設為"yes",
#那麼每個rdb檔案內容的末尾都會追加CRC校驗和,利於第三方校驗工具檢測檔案完整性
rdbchecksum yes
#映象備份檔案的檔名,預設為 dump.rdb
dbfilename dump.rdb
# 工作目錄
# 例如上面的 dbfilename 只指定了檔名,
# 但是它會寫入到這個目錄下。這個配置項一定是個目錄,而不能是檔名。
#資料庫映象備份的檔案rdb/AOF檔案放置的路徑。這裡的路徑跟檔名要分開配置是因為Redis
#在進行備份時,先會將當前資料庫的狀態寫入到一個臨時檔案中,等備份完成時,
#再把該臨時檔案替換為上面所指定的檔案,而這裡的臨時檔案和上面所配置的備份檔案都會放在這個指定的路徑當中
dir /Worksoftware/Redis3DI/data/
#dir ./
################################# 主從複製 #################################
#設定當本機為slav服務時,設定master服務的IP地址及埠,在Redis啟動時,它會自動從master進行資料同步
# 主從複製。使用 slaveof 來讓一個 redis 例項成為另一個reids 例項的副本。
# 注意這個只需要在 slave 上配置。
#設定該資料庫為其他資料庫的從資料庫,併為其指定master資訊。
# slaveof <masterip> <masterport>
# 如果 master 需要密碼認證,就在這裡設定
#當主資料庫連線需要密碼驗證時,在這裡指定
# masterauth <master-password>
# 當一個 slave 與 master 失去聯絡,或者複製正在進行的時候,
# slave 可能會有兩種表現:
# 1) 如果為 yes ,slave 仍然會應答客戶端請求,但返回的資料可能是過時,
# 或者資料可能是空的在第一次同步的時候
# 2) 如果為 no ,在你執行除了 info he salveof 之外的其他命令時,
# slave 都將返回一個 "SYNC with master in progress" 的錯誤,
#
#當主master伺服器掛機或主從複製在進行時,是否依然可以允許客戶訪問可能過期的資料。
#在"yes"情況下,slave繼續向客戶端提供只讀服務,有可能此時的資料已經過期;
#在"no"情況下,任何向此server傳送的資料請求服務(包括客戶端和此server的slave)都將被告知"error"
slave-serve-stale-data yes
# 你可以配置一個 slave 實體是否接受寫入操作。
# 通過寫入操作來儲存一些短暫的資料對於一個 slave 例項來說可能是有用的,
# 因為相對從 master 重新同步數而言,據資料寫入到 slave 會更容易被刪除。
# 但是如果客戶端因為一個錯誤的配置寫入,也可能會導致一些問題。
# 從 redis 2.6 版起,預設 slaves 都是隻讀的。
# 注意:只讀的 slaves 沒有被設計成在 internet 上暴露給不受信任的客戶端。
# 它僅僅是一個針對誤用例項的一個保護層。
#slave是否為"只讀",強烈建議為"yes"
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
# Slaves 在一個預定義的時間間隔內傳送 ping 命令到 server 。
# 你可以改變這個時間間隔。預設為 10 秒。
# slave向指定的master傳送ping訊息的時間間隔(秒),預設為10
# repl-ping-slave-period 10
# 設定主從複製過期時間
#這個值一定要比 repl-ping-slave-period 大
#slave與master通訊中,最大空閒時間,預設60秒.超時將導致連線關閉
# repl-timeout 60
#slave與master的連線,是否禁用TCP nodelay選項。"yes"表示禁用,那麼socket通訊中資料將會以packet方式傳送(packet大小受到socket buffer限制)。
#可以提高socket通訊的效率(tcp互動次數),但是小資料將會被buffer,不會被立即傳送,對於接受者可能存在延遲。
#"no"表示開啟tcp nodelay選項,任何資料都會被立即傳送,及時性較好,但是效率較低,建議設為no
repl-disable-tcp-nodelay no
# 設定主從複製容量大小。這個 backlog 是一個用來在 slaves 被斷開連線時
# 存放 slave 資料的 buffer,所以當一個 slave 想要重新連線,通常不希望全部重新同步,
# 只是部分同步就夠了,僅僅傳遞 slave 在斷開連線時丟失的這部分資料。
# 這個值越大,salve 可以斷開連線的時間就越長。
# backlog只分配一次並且至少需要一個slave連線
# repl-backlog-size 1mb
# 在某些時候,master 不再連線 slaves,backlog 將被釋放。
# 如果設定為 0 ,意味著絕不釋放 backlog 。
# repl-backlog-ttl 3600
# 當 master 不能正常工作的時候,Redis Sentinel 會從 slaves 中選出一個新的 master,
# 這個值越小,就越會被優先選中,但是如果是 0 , 那是意味著這個 slave 不可能被選中。
# 預設優先順序為 100。
#適用Sentinel模組(unstable,M-S叢集管理和監控),需要額外的配置檔案支援。slave的權重值,預設100.當master失效後,Sentinel將會從slave列表中找到權重值最低(>0)的slave,並提升為master。如果權重值為0,表示此slave為"觀察者",不參與master選舉
slave-priority 100
# min-slaves-to-write 3
# min-slaves-max-lag 10
#
# Setting one or the other to 0 disables the feature.
#
# By default min-slaves-to-write is set to 0 (feature disabled) and
# min-slaves-max-lag is set to 10.
################################## 安全 ###################################
#設定Redis連線密碼,如果配置了連線密碼,客戶端在連線Redis時需要通過AUTH <password>命令提供密碼,預設關閉
# requirepass foobared
#設定客戶端連線後進行任何其他指定前需要使用的密碼。警告:因為redis 速度相當快,所以在一臺比較好的伺服器下,
#一個外部的使用者可以在一秒鐘進行150K 次的密碼嘗試,這意味著你需要指定非常非常強大的密碼來防止暴力破解。
requirepass 123456
# 重新命名指令,對於一些與"server"控制有關的指令,可能不希望遠端客戶端(非管理員使用者)連結隨意使用,那麼就可以把這些指令重新命名為"難以閱讀"的其他字串
# rename-command CONFIG ""
#
# Please note that changing the name of commands that are logged into the
# AOF file or transmitted to slaves may cause problems.
################################### 限制 ####################################
#設定同一時間最大客戶端連線數,預設無限制,Redis可以同時開啟的客戶端連線數為Redis程序可以開啟的最大檔案描述符數,如果設定 maxclients 0,表示不作限制。當客戶端連線數到達限制時,Redis會關閉新的連線並向客戶端返回max number of clients reached錯誤資訊
# 一旦達到最大限制,redis 將關閉所有的新連線
# 併發送一個‘max number of clients reached’的錯誤。
#限制同時連線的客戶數量。當連線數超過這個值時,redis 將不再接收其他連線請求,客戶端嘗試連線時將收到error 資訊。預設為10000,要考慮系統檔案描述符限制,不宜過大,浪費檔案描述符,具體多少根據具體情況而定
# maxclients 10000
# persistence-available [(yes)|no]
#指定Redis最大記憶體限制,Redis在啟動時會把資料載入到記憶體中,達到最大記憶體後,Redis會先嚐試清除已到期或即將到期的Key,當此方法處理 後,仍然到達最大記憶體設定,將無法再進行寫入操作,但仍然可以進行讀取操作。Redis新的vm機制,會把Key存放記憶體,Value會存放在swap區
#redis-cache所能使用的最大記憶體(bytes),預設為0,表示"無限制",最終由OS實體記憶體大小決定(如果實體記憶體不足,有可能會使用swap)。
#此值儘量不要超過機器的實體記憶體尺寸,從效能和實施的角度考慮,可以為實體記憶體3/4。此配置需要和"maxmemory-policy"配合使用,當redis中記憶體資料達到maxmemory時,觸發"清除策略"。
#在"記憶體不足"時,任何write操作(比如set,lpush等)都會觸發"清除策略"的執行。在實際環境中,建議redis的所有物理機器的硬體配置保持一致(記憶體一致),同時確保master/slave中"maxmemory""policy"配置一致。
#當記憶體滿了的時候,如果還接收到set 命令,redis 將先嚐試剔除設定過expire 資訊的key,而不管該key 的過期時間還沒有到達。在刪除時,
#將按照過期時間進行刪除,最早將要被過期的key 將最先被刪除。如果帶有expire 資訊的key 都刪光了,記憶體還不夠用,那麼將返回錯誤。這樣,redis 將不再接收寫請求,只接收get 請求。
#maxmemory 的設定比較適合於把redis 當作於類似memcached的快取來使用。
# maxmemory <bytes>
# 最大記憶體策略,你有 5 個選擇。
#記憶體不足"時,資料清除策略,預設為"volatile-lru"。
#volatile-lru ->對"過期集合"中的資料採取LRU(近期最少使用)演算法.如果對key使用"expire"指令指定了過期時間,那麼此key將會被新增到"過期集合"中。將已經過期/LRU的資料優先移除.如果"過期集合"中全部移除仍不能滿足記憶體需求,將OOM.
#allkeys-lru ->對所有的資料,採用LRU演算法
#volatile-random ->對"過期集合"中的資料採取"隨即選取"演算法,並移除選中的K-V,直到"記憶體足夠"為止. 如果如果"過期集合"中全部移除全部移除仍不能滿足,將OOM
#allkeys-random ->對所有的資料,採取"隨機選取"演算法,並移除選中的K-V,直到"記憶體足夠"為止
#volatile-ttl ->對"過期集合"中的資料採取TTL演算法(最小存活時間),移除即將過期的資料.
#noeviction ->不做任何干擾操作,直接返回OOM異常
#另外,如果資料的過期不會對"應用系統"帶來異常,且系統中write操作比較密集,建議採取"allkeys-lru"
# maxmemory-policy volatile-lru
# 預設值3,上面LRU和最小TTL策略並非嚴謹的策略,而是大約估算的方式,因此可以選擇取樣值以便檢查
# maxmemory-samples 3
############################## 追加模式 ###############################
#預設情況下,redis 會在後臺非同步的把資料庫映象備份到磁碟,但是該備份是非常耗時的,
#而且備份也不能很頻繁。所以redis 提供了另外一種更加高效的資料庫備份及災難恢復方式。
#開啟append only 模式之後,redis 會把所接收到的每一次寫操作請求都追加到appendonly.aof檔案中,
#當redis 重新啟動時,會從該檔案恢復出之前的狀態。但是這樣會造成appendonly.aof 檔案過大,
#所以redis 還支援了BGREWRITEAOF 指令,對appendonly.aof 進行重新整理。如果不經常進行資料遷移操作,
#推薦生產環境下的做法為關閉映象,開啟appendonly.aof,同時可以選擇在訪問較少的時間每天對appendonly.aof 進行重寫一次。
appendonly no
#aof檔名字,預設為appendonly.aof
appendfilename "appendonly.aof"
#fsync模式有三種:
#no:讓OS託管,這樣更快,但是如果出現問題,可能會丟失更多的資料。
#always:每次write都刷到log,慢,但是對資料來說最安全。
#everysec:每秒一次flush(預設),這是一種折衷的做法,使速度和資料安全之間取得適當的平衡。
# appendfsync always
# appendfsync no
#設定對appendonly.aof 檔案進行同步的頻率。always 表示每次有寫操作都進行同步,everysec 表示對寫操作進行累積,每秒同步一次。
#no不主動fsync,由OS自己來完成。這個需要根據實際業務場景進行配置
appendfsync everysec
#AOF設定
#當fsync為always或者everysec時,一個bgsave或者AOF rewrite執行緒正在耗費大量I/0,redis可能會在fsync上阻塞很久。發生之後就無法fix,即使是另一個執行緒跑fsync,也會阻塞我們同步的write方法。
#如下方法可以解決這個問題:當bgsave()或bgrewriteaof()在跑,主程序的fsync()就無法呼叫。也就是當子程序在save,那段時間相當於redis是appendaof no的。也就是有可能會丟失最多30s的log。
#所以如果你有lag問題,把下邊改成yes,否則就用no。yes意思是暫停aof,拒絕主程序的這次fsync。no是redis是排隊的,不會被prevent了,但主程序是阻塞的。
#在aof rewrite期間,是否對aof新記錄的append暫緩使用檔案同步策略,主要考慮磁碟IO開支和請求阻塞時間。
#預設為no,表示"不暫緩",新的aof記錄仍然會被立即同步
no-appendfsync-on-rewrite no
#自動重寫AOF
#當Aof log增長超過指定比例時,重寫log file, 設定為0表示不自動重寫Aof 日誌,百分比(percentage)設定為0時,禁用自動重寫功能,
#重寫是為了使aof體積保持最小,而確保儲存最完整的資料,。
auto-aof-rewrite-percentage 100
#觸發aof rewrite的最小檔案尺寸
auto-aof-rewrite-min-size 64mb
#容錯
#AOF檔案可能在尾部是不完整的(上次system關閉有問題,尤其是mount ext4檔案系統時沒有加上data=ordered選項。
#只會發生在os死時,redis自己死不會不完整)。那redis重啟時load進記憶體的時候就有問題了。
#發生的時候,可以選擇redis啟動報錯,或者load儘量多正常的資料。
#如果aof-load-truncated是yes,會自動釋出一個log給客戶端然後load(預設)。
#如果是no,使用者必須手動redis-check-aof修復AOF檔案才可以。
aof-load-truncated yes
################################ LUA 指令碼 ###############################
#以毫秒為單位的最大指令碼執行時間。
#如果達到了這個值,指令碼還沒執行完Redis會記錄並返回錯誤。
#當一個指令碼超過了最大時限時只有SCRIPT KILL和SHUTDOWN NOSAVE可以用。第一個可以殺沒有調write命令的東西。要是已經呼叫了write,就只能用第二個命令殺。
#設定為0時執行時間無限制。
#lua指令碼執行的最大時間
lua-time-limit 5000
################################ REDIS 叢集 ###############################
#此處暫不介紹(暫時用不上)。
# 啟用或停用叢集
# cluster-enabled yes
# cluster-config-file nodes-6379.conf
# cluster-node-timeout 15000
################################## 慢日誌 ###################################
#Redis的慢日誌是一個記錄超過規定的執行時間查詢的系統。執行時間不包括I/O操作,如與客戶端通訊,回覆等,只是實際執行該命令所需要的時間。
#執行緒阻塞不能服務其他請求的時間長度,以微秒計時,1s=1000*1000微秒。設定為負值時禁用慢日誌,設定為0是記錄所有請求。
slowlog-log-slower-than 10000
#長度沒有限制,但是會消耗記憶體。可以通過SLOWLOG RESET回收舊日誌的記憶體。
slowlog-max-len 128
################################ 延遲監控 ##############################
#收集執行時不同命令的耗時,可以通過LATENCY命令列印這些圖表。
#計時單位為毫秒,系統只記錄比latency-monitor-threshold值大的記錄。如果配置為0表示關閉監控(預設)。
#也可以通過命令“CONFIG SET latency-monitor-threshold <milliseconds>”來動態開始此功能。
latency-monitor-threshold 0
############################# 事件通知 ##############################
#可以通知pub/sub(釋出/訂閱)客戶端關於key空間的變化。
#比如:如果開著開關,一個client在db0上key=“foo”上進行了DEL操作,兩個訊息將會通過 pub/sub 釋出
# PUBLISH [email protected]__:foo del
# PUBLISH [email protected]__:del foo
# 每一種通知由一個字母表示:
# K Keyspace events, published with [email protected]<db>__ prefix.
# E Keyevent events, published with [email protected]<db>__ prefix.
# g Generic commands (non-type specific) like DEL, EXPIRE, RENAME, ...
# $ String commands
# l List commands
# s Set commands
# h Hash commands
# z Sorted set commands
# x Expired events (events generated every time a key expires)
# e Evicted events (events generated when a key is evicted for maxmemory)
# A Alias for g$lshzxe, so that the "AKE" string means all the events.
#引數由以上字母組成,若配置為空字串,表示不開啟此功能。
#例如,可能會如下配置:
# notify-keyspace-events Elg
# notify-keyspace-events Ex
#大部分人不需要這個功能,並且還需要一定開銷,所以預設關閉。
notify-keyspace-events ""
############################### 高階配置 ###############################
#雜湊表中元素(條目)總個數不超過設定數量時,採用線性緊湊格式儲存來節省空間
hash-max-ziplist-entries 512
#雜湊表中每個value的長度不超過多少位元組時,採用線性緊湊格式儲存來節省空間
hash-max-ziplist-value 64
#list資料型別多少節點以下會採用去指標的緊湊儲存格式
#對於list型別,將會採取ziplist,linkedlist兩種編碼型別。
list-max-ziplist-entries 512
#list資料型別節點值大小小於多少位元組會採用緊湊儲存格式
list-max-ziplist-value 64
#set資料型別內部資料如果全部是數值型,且包含多少節點以下會採用緊湊格式儲存
#intset中允許儲存的最大條目個數,如果達到閥值,intset將會被重構為hashtable
set-max-intset-entries 512
# 與hash和list相似,有序集合也可以用一種特別的編碼方式來節省大量空間。
# 這種編碼只適合長度和元素都小於下面限制的有序集合:
#zset為有序集合,有2中編碼型別:ziplist,skiplist。因為"排序"將會消耗額外的效能,當zset中資料較多時,將會被重構為skiplist。
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
#指定是否啟用重置雜湊,預設為開啟(後面在介紹Redis的雜湊演算法時具體介紹)
# 啟用雜湊重新整理,每100個CPU毫秒會拿出1個毫秒來重新整理Redis的主雜湊表(頂級鍵值對映表)。
# redis所用的雜湊表實現(見dict.c)採用延遲雜湊重新整理機制:你對一個雜湊表操作越多,雜湊重新整理
# 操作就越頻繁;反之,如果伺服器是空閒的,那麼雜湊重新整理就不會完成,雜湊表就會佔用更多的一些
# 記憶體而已。
# 預設是每秒鐘進行10次雜湊表重新整理,用來重新整理字典,然後儘快釋放記憶體。
# 建議:
# 如果你對延遲比較在意,不能夠接受Redis時不時的對請求有2毫秒的延遲的話,就用
# "activerehashing no",如果不太在意延遲而希望儘快釋放記憶體就設定"activerehashing yes"
#是否開啟頂層資料結構的rehash功能,如果記憶體允許,請開啟。rehash能夠很大程度上提高K-V存取的效率\
activerehashing yes
# 客戶端的輸出緩衝區的限制,可用於強制斷開那些因為某種原因從伺服器讀取資料的速度不夠快的客戶端,
# (一個常見的原因是一個釋出/訂閱客戶端消費訊息的速度無法趕上生產它們的速度)
# 可以對三種不同的客戶端設定不同的限制:
# normal -> 正常客戶端
# slave -> slave和 MONITOR 客戶端
# pubsub -> 至少訂閱了一個pubsub channel或pattern的客戶端
# 下面是每個client-output-buffer-limit語法:
# client-output-buffer-limit <class><hard limit> <soft limit> <soft seconds>
# 一旦達到硬限制客戶端會立即被斷開,或者達到軟限制並持續達到指定的秒數(連續的)。
# 例如,如果硬限制為32兆位元組和軟限制為16兆位元組/10秒,客戶端將會立即斷開
# 如果輸出緩衝區的大小達到32兆位元組,或客戶端達到16兆位元組並連續超過了限制10秒,就將斷開連線。
# 預設normal客戶端不做限制,因為他們在不主動請求時不接收資料(以推的方式),只有非同步客戶端
# 可能會出現請求資料的速度比它可以讀取的速度快的場景。
# pubsub和slave客戶端會有一個預設值,因為訂閱者和slaves以推的方式來接收資料
# 把硬限制和軟限制都設定為0來禁用該功能
#客戶端buffer控制。在客戶端與server進行的互動中,每個連線都會與一個buffer關聯,此buffer用來佇列化等待被client接受的響應資訊。
#如果client不能及時的消費響應資訊,那麼buffer將會被不斷積壓而給server帶來記憶體壓力.如果buffer中積壓的資料達到閥值,將會導致連線被關閉,buffer被移除。
#buffer控制型別包括:normal -> 普通連線;slave ->與slave之間的連線;pubsub ->pub/sub型別連線,此型別的連線,往往會產生此種問題;因為pub端會密集的釋出訊息,但是sub端可能消費不足.
#指令格式:client-output-buffer-limit <class> <hard> <soft> <seconds>",其中hard表示buffer最大值,一旦達到閥值將立即關閉連線;
#soft表示"容忍值",它和seconds配合,如果buffer值超過soft且持續時間達到了seconds,也將立即關閉連線,如果超過了soft但是在seconds之後,buffer資料小於了soft,連線將會被保留.
#其中hard和soft都設定為0,則表示禁用buffer控制.通常hard值大於soft.
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
#Redis server執行後臺任務的頻率,預設為10,此值越大表示redis對"間歇性task"的執行次數越頻繁(次數/秒)。"間歇性task"包括"過期集合"檢測、關閉"空閒超時"的連線等,此值必須大於0且小於500。此值過小就意味著更多的cpu週期消耗,後臺task被輪詢的次數更頻繁。
#此值過大意味著"記憶體敏感"性較差。建議採用預設值。
# Redis呼叫內部函式來執行許多後臺任務,如關閉客戶端超時的連線,清除未被請求過的過期Key等等。
# 不是所有的任務都以相同的頻率執行,但Redis依照指定的“hz”值來執行檢查任務。
# 預設情況下,“hz”的被設定為10。提高該值將在Redis空閒時使用更多的CPU時,但同時當有多個key
# 同時到期會使Redis的反應更靈敏,以及超時可以更精確地處理。
# 範圍是1到500之間,但是值超過100通常不是一個好主意。
# 大多數使用者應該使用10這個預設值,只有在非常低的延遲要求時有必要提高到100。
hz 10
aof-rewrite-incremental-fsync yes
################################## INCLUDES ###################################
# 指定包含其它的配置檔案,可以在同一主機上多個Redis例項之間使用同一份配置檔案,而同時各個例項又擁有自己的特定配置檔案
# 額外載入配置檔案。
# include /path/to/local.conf
# include /path/to/other.conf
如圖:
指定的日誌路徑
管理工具
相關推薦
Redis使用入門(一)【配置檔案】
redis.windows.conf內容如下: # redis 配置檔案示例 # 當你需要為某個配置項指定記憶體大小的時候,必須要帶上單位, # 通常的格式就是 1k 5gb 4m 等醬紫: # # 1k => 1000 bytes # 1kb =&
Mybatis教程2【配置檔案】
MyBatis 的配置檔案包含了會深深影響 MyBatis 行為的設定(settings)和屬性(properties)資訊。文件
JBOSS4.2啟動時報錯【配置檔案不可讀】
一、問題 二、原因分析 &n
python-ConfigParser模組【讀寫配置檔案】
以下的文章就是對python 讀寫配置檔案的具體方案的介紹 1,函式介紹 1.1.讀取配置檔案 -read(filename) 直接讀取ini檔案內容 -sections() 得到所有的section,並以列表的形式返回 -options(section) 得到
Hive程式設計(十一)【其他檔案格式和壓縮方法】
11.1 確定安裝編解碼器 # hive -e "set io.compression.codecs" io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec, org.apache.ha
webpack4.0命令列模式下【不用配置檔案】打包教程【傻瓜教程】
解決問題 解決webpack4.0預設是從src目錄下尋找index.js然後輸出到dist目錄中的main.js。很多同學用命令列在這裡會踩很多坑。今天我來徹底解決這個問題。很簡單。 初始化 新建一個目錄 mkdir wpdemo 進入
ClickHouse學習系列之三【配置檔案說明】
背景 最近花了些時間看了下ClickHouse文件,發現它在OLAP方面表現很優異,而且相對也比較輕量和簡單,所以準備入門瞭解下該資料庫系統。在介紹了安裝和使用者許可權管理之後,本文對其配置檔案做下相關的介紹說明。 說明 Cl
【springboot讀取配置檔案】@ConfigurationProperties、@PropertySource和@Value
### 概念: - @ConfigurationProperties : 是springboot的註解,用於把主配置檔案中配置屬性設定到對於的Bean屬性上 - @PropertySource :是spring的註解,用於載入指定的屬性配置檔案到Spring的Environment中,可以和 @V
Redis入門一
com 最長 array ber 有序列表 ati ash object -s 摘要: Redis支持的數據類型: Binary-safe strings: 字符串 Lists:有序列表;底層維護的是一個鏈表結構,包含字符串元素的集合,有順序、根據插入順序而定 Sets :
Spring Data Redis入門示例:程序配置(五)
dex port scl lis fault gre source inf 操作 單機配置 redis.properties配置 #redis的服務器地址 redis.host=127.0.0.1 #redis的服務端口 redis.port=6379 #客戶端超時時間
[分享]ECC加密演算法入門介紹 【演算法乾貨】
前言 同RSA(Ron Rivest,Adi Shamir,Len Adleman三位天才的名字)一樣,ECC(Elliptic Curves Cryptography,橢圓曲線密碼編碼學)也屬於公開金鑰演算法。目前,國內詳細介紹ECC的公開文獻並不多(反正我沒有找到)。有一些簡介,也是
Nginx入門筆記之————配置檔案結構
Nginx入門筆記之————配置檔案結構 ... #全域性塊 events { #events塊 ... } http #http塊 { ... #http全域性塊 server #
SNMP原始碼分析之(一)配置檔案部分
snmpd.conf想必不陌生。在程序啟動過程中會去讀取配置檔案中各個配置。其中幾個引數需要先知道是幹什麼的: token:配置檔案的每行的開頭,例如 group MyROGroup v1 readSec 這行token的引數是group。
redis安裝,修改配置檔案,多例項部署 redis-server
redis 安裝 解壓: [[email protected] software]# tar -xvf redis-3.2.11.tar.gz 進入redis根目錄: [[email protected] software]# cd redis-3.2.11/ 編譯安裝: [[
SpringBoot入門十 ,獲取配置檔案資訊
SpringBoot獲取配置檔案的資訊有很多,這裡介紹比較常用的三種方式 預設獲取的都是application.properties檔案中的資訊 1.application.properties配置檔案內容如下: server.port=80 spring.mvc.view.prefix=/js
redis 進階(配置檔案和持久化)
一、redis.conf 配置詳解 Redis預設不是以守護程序的方式執行,可以通過該配置項修改,使用yes啟用守護程序 daemonize no 當Redis以守護程序方式執行時,Redis預設會把pid寫入/var/run/redis.pid檔案,可
hive篇 -----【.hiverc檔案】
當hive CLI啟動時,在hive > 提示符出現之前會優先執行檔案.hiverc,Hive會自動在${HIVE_HOME}/bin目錄下尋找名為.hiverc檔案,由此可以在這個檔案中設定配置一些常用的引數。由於它是隱藏檔案,我們可以用Linux的ls
區塊鏈開發入門教程【加精】
區塊鏈的重要性已經毋庸置疑,但對大多數躍躍欲試的開發者而言,去中心化思想、 非對稱加密、共識演算法等技術點的理解和運用,都是入門區塊鏈開發的挑戰。合適 的區塊鏈開發教程可以極大地縮短區塊鏈開發的學習週期,因此,本文彙總整理了以太坊、 比特幣、EOS和Tendermint這四種流行的區塊鏈的開發教程,推薦給有意
45 【配置中心】
關於配置中心,左耳朵耗子同學寫了一整篇完整的部落格:https://time.geekbang.org/column/article/5819 個人覺得這個部落格寫得並不完整,很多地方沒有交代清楚,主要背景,問題和解決方案,和自己的部落格質量差的有點遠。他的部落格是酷殼:https://co
Python入門基礎【第一天】
一、Python簡介 Python是一種計算機程式設計語言。是一種動態的、面向物件的指令碼語言,最初被設計用於編寫自動化指令碼(shell),隨著版本的不斷更新和語言新功能的新增,越來越多被用於獨立的、大型專案的開發。 Python的創始人為Guido van Rossum。1989年聖誕節期間,