持久化
redis支持RDB和AOF兩種持久化方式
The RDB persistence performs point-in-time snapshots of your dataset at specified intervals.
RDB是一種即時快照的存儲方式,定時對數據庫進行snapshot
RDB優點:
1 RDB對於數據備份非常容易。你可以設置1天或者30天對數據進行一次備份,這樣當發生數據災難的時候能很容易恢復
2 由於RDB對數據備份時redis只做備份操作,所以備份最大化的使用了redis的性能,同時也導致了對於大的數據集,RDB備份快於AOF
RDB缺點:
1 如果你的需求只是要知道兩個時間段中redis的變化,RDB是弱於AOF的
2 由於RDB經常使用子進程fork()進行數據備份,所以如果當數據比較大的時候,數據備份會比較耗時
AOF優點:
1 你必須有一個AOF的fsync的策略:
或者是不進行fsync, 或者每秒fsync一次,或者每次query查詢的時候fsync
2 AOF只記錄修改log,當存儲的時候由於某種原因寫log失誤了,使用redis-check-aof能很好的修復
3 當redis數據太大的時候,AOF可以很好被重寫到新的redis上
AOF缺點:
1 AOF通常比RDB大
2 AOF比RDB慢
--------------------------
流水線
redis是客戶端和服務器端的通信交互TCP協議
當客戶端發送請求,服務器端接受請求並發送回復,客戶端接收回復,這個過程叫做RTT(Round Trip Time)
比如如果RTT時間是250微秒,既是服務器端每秒能處理10萬個請求,那么,我們只能認為redis每秒處理4個請求
server不需要等待client接收了消息之后再處理新request的技術叫做pipelining(流水線)。這個技術早在幾十年前就應用在了各種協議上(比如pop3),redis也很早使用了這個技術。
實驗:
$ (echo -en "PING\r\nPING\r\nPING\r\n"; sleep 1) | nc localhost 6379
當調用這個例子的時候:
server一次返回:
+PONG
+PONG
+PONG
而不是返回一次PONG,過了RTT時間再返回PONG,這個例子就說明了redis使用pipelining
注:nc命令說明請看:
http://www.cnblogs.com/faraway/archive/2008/08/30/1280070.html
---------------------------------
訂閱
redis支持訂閱(subscribe)
當一個client訂閱一個或多個變量,其他客戶端修改了變量並publish之后,這個客戶端會收到消息
例子:
Client1:
SUBSCRIBE first second
Client2:
PUBLISH second Hello
client1顯示:
message
second
Hello2
redis還支持模式訂閱(psubscribe命令)
PSUBSCRIBE f*
---------------------------------
參考文檔:
---------------------------------
作者:yjf512(軒脈刃)
出處:http://www.cnblogs.com/yjf512/
本文版權歸yjf512和cnBlog共有,歡迎轉載,但未經作者同意必須保留此段聲明