標籤:
Redis配置詳解-用戶端緩衝區 http://blog.csdn.net/jiangguilong2000/article/details/38436941
Redis異常及使用總結 http://blog.csdn.net/jiangguilong2000/article/details/45025355
用戶端緩衝區 output buffer
大概已經知道Redis是一個記憶體資料庫,這意味著所有的資料都由RAM直接管理和提供的。因此Redis有著卓越的交付效能,Redis可以以亞毫秒級的延遲處理幾萬、幾十萬的請求。
Redis,如同它的名字和設計,是一個行動服務器,用戶端(通常)通過網路連接Redis。這種情況下,用戶端請求返回用戶端的時間將顯著長於Redis CPU從RAM讀取資料的時間。這意味著如果沒有用戶端緩衝區的話,Redis的主要差異與在該段時間對服務的響應有關。
用戶端緩衝區組成了服務客戶請求所需的記憶體空間,Redis的每個串連都配有自己的緩衝區空間。處理請求後,Redis把響應資料複製到用戶端緩衝區,然後繼續處理下一個請求,與此同時,請求用戶端通過網路連接讀取資料。Redis用戶端緩衝區配置在redis.conf檔案:
config get client-output-buffer-limit
1) "client-output-buffer-limit"
2) "normal 0 0 0 slave 268435456 67108864 60 pubsub 33554432 8388608 60"</span>
output buffer是Redis為client分配的緩衝區(這裡的"client"可能是真正的client,也可能是slave或monitor),若為某個用戶端分配的output buffer超過了預留大小,Redis可能會根據配置策略關閉與該端的串連。
例如,若Redis被用作message queue,訂購訊息的consumer處理速度跟不上發布訊息的producer時,就會發生對應的output buffer超限的情況。
該配置項格式如下:
client-output-buffer-limit <class> <hard limit> <soft limit> <soft seconds>
<class>:目前支援3種用戶端:
1) normal => normal clients;
2) slave clients and MONITOR clients;
3) pubsub => clients subcribed to at least one pubsub channel or pattern
<hard limit>:若output buffer大小超過該值,Redis會立即關閉與對應client的串連
<soft limit> <soft seconds>:若output buffer大小超過soft limit且這種情況的期間超過soft seconds,則Redis會關閉與對應client的串連。
預設的配置如下:
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終止串連時,這些值提供保護——不需要客戶讀取回複——當緩衝區尺寸達到a)軟式節流並且保持狀態直到逾時b)硬限制。將這些數值都設為0意味著關閉保護。
不過,和複製緩衝區不同的是用戶端緩衝區來自Redis資料記憶體空間。可以通過maxmemory指令設定Redis的總記憶體值,達到極限後,Redis將應用其配置的驅逐策略(由maxmemory-policy 指令定義)。因此,低效能的客戶或大量的同時串連可能會因為資料集尺寸和用戶端緩衝區達到記憶體限制導致Redis執行個體過早的驅逐鍵或禁止更新。
由於生命週期的相對性,一個用戶端不需要降低效能就可能導致這種現象。因為RAM讀取和網路讀取存在著很大的速度差異,過多的用戶端緩衝區很可能耗盡Redis記憶體,即使是在高效能的用戶端和網路連接中。例如,考慮下(萬惡的)KEYS指令,這個指令觸發後,Redis將會把整個鍵的名空間拷貝給用戶端緩衝區。如果我們的資料庫有很多鍵,這很可能導致驅逐。
Redis主從配置
主要是針對單點的,全域的redis進行主從配置,並用aof方式進行累加式更新請求資料
在主的redis配置的最後,redis.conf 添加
include /data/redis/6379/instance.conf
然後在平級的instance.conf 中的內容
appendonly yes --預設會產生appendonly.aof 儲存資料
maxclients 180000
save ""
在從的redis配置的最後,redis.conf 添加
include /data/redis/6379/instance.conf
然後在平級的instance.conf 中的內容
appendonly yes --預設會產生appendonly.aof 儲存資料
save ""
slaveof 10.104.5.98 6379 ---該地址就是主的地址
Redis配置詳解-用戶端緩衝區 output buffer