持久化
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,過了RTT時間再傳回PONG,這個例子就說明了redis使用pipelining
注:nc指令說明請看:
---------------------------------
訂閱
redis支援訂閱(subscribe)
當一個client訂閱一個或多個變量,其他用戶端修改了變量并publish之後,這個用戶端會收到消息
例子:
Client1:
SUBSCRIBE first second
Client2:
PUBLISH second Hello
client1顯示:
message
second
Hello2
redis還支援模式訂閱(psubscribe指令)
PSUBSCRIBE f*
本文轉自軒脈刃部落格園部落格,原文連結:http://www.cnblogs.com/yjf512/archive/2012/02/21/2361747.html,如需轉載請自行聯系原作者