Redis配置詳解-客戶端緩衝區 http://blog.csdn.net/jiangguilong2000/article/details/38436941 redis
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 app
1) "client-output-buffer-limit" 性能
2) "normal 0 0 0 slave 268435456 67108864 60 pubsub 33554432 8388608 60"</span> ui
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實例過早的驅逐鍵或禁止更新。
spa
因爲生命週期的相對性,一個客戶端不須要下降性能就可能致使這種現象。由於RAM讀取和網絡讀取存在着很大的速度差別,過多的客戶端緩衝區極可能耗盡Redis內存,即便是在高性能的客戶端和網絡鏈接中。例如,考慮下(萬惡的)KEYS指令,這個指令觸發後,Redis將會把整個鍵的名空間拷貝給客戶端緩衝區。若是咱們的數據庫有不少鍵,這極可能致使驅逐。.net
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 ---該地址就是主的地址