redis的那些事


持久化 

redis支持RDBAOF兩種持久化方式

 

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 你必須有一個AOFfsync的策略:

或者是不進行fsync 或者每秒fsync一次,或者每次query查詢的時候fsync

2 AOF只記錄修改log,當存儲的時候由於某種原因寫log失誤了,使用redis-check-aof能很好的修復

3 redis數據太大的時候,AOF可以很好被重寫到新的redis

 

AOF缺點:

1 AOF通常比RDB

2 AOFRDB

 

 --------------------------

流水線

 

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共有,歡迎轉載,但未經作者同意必須保留此段聲明 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM