天天看點

redis的那些事

持久化 

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,如需轉載請自行聯系原作者