Redis開發與運維閱讀筆記(一)

  • Redis特性

(一)速度快服務器

1:存取速度快網絡

2:執行速度快數據結構

3:Redis使用了單線程架構,預防了多線程產生的競爭問題多線程

(二)基於鍵值對的數據結構服務器架構

(三)豐富的功能分佈式

1:提供鍵過時功能性能

2:提供了發佈訂閱功能線程

3:支持Lua腳本進程

4:提供了簡單的事務功能,能在必定程度保證事務特性事件

5:提供了流水線(Pipeline)功能,這樣客戶端能將一批命令一次性傳到Redis,減小網絡的開銷

(四)簡單穩定

(五)客戶端語言多,例如Java,PHP,Python,C,C++等

(六)持久化,Redis提供了兩種持久化方式:RDB和AOF

(七)主從複製,Redis提供了複製功能,實現了多個相同數據的Redis副本,複製功能是分佈式Redis的基礎

(八)高可用和分佈式,Redis從2.8版本正式提供了高可用實現Redis Sentinel,他可以保證Redis節點的故障發現和故障自動轉移.Redis從3.0版本正式提供了分佈式實現Redis Cluster,他是Redis真正的分佈式實現,提供了高可用,讀寫和容量的擴展性

  • API的理解和使用

(一)API

1.查看全部鍵:keys *

2.鍵總數:dbsize

3.檢查鍵是否存在:exists key

4.刪除鍵:del key [key . . .]

5.鍵過時:expire key seconds

6.鍵的數據結構類型:type key

(二)單線程架構

1.爲何單線程還能那麼快?

第一,純內存訪問,Redis將全部數據放在內存中,內存道德響應時長大約爲100納秒,這是Redis打到美妙萬級別訪問的重要基礎

第二,非阻塞I/O,Redis使用epoll做爲I/O多路複用技術的實現,再加上Redis自身的事件處理模型將epoll中的連接,讀寫,關閉都轉換爲事件,不在網絡I/O上浪費過多的時間

第三,單線程避免了線程切換和競態產生的消耗

2.單線程的弊端:對於每一個命令的執行時間是有要求的。若是某個命令執行過長,會形成其餘命令的堵塞,對於Redis這種高性能的服務來講是致命的。

  • 客戶端通訊協議

第一:客戶端與服務端之間的通訊協議是在TCP協議之上構建的

第二:Redis制定了RESP(REdis Serialization Protocol,Redis序列化協議)實現客戶端與服務端的正常交互

  • 持久化

說明:Redis支持RDB和AOF兩種持久化機制,持久化功能有效的避免因進程退出形成的數據丟失問題,當下次重啓時利用以前持久化的文件便可實現數據恢復。

  1. RDB持久化:是把當前進程數據生成快照保存到硬盤的過程,觸發RDB持久化過程分爲手動觸發和自動觸發。
  2. RDB的優勢:1)RDB是一個緊湊壓縮的二進制文件,表明Redis在某個時間點上的數據快照。費事適用於備份,全量複製等場景。

                                 2)Redis加在RDB恢復數據遠遠快於AOF的方式

     3.RDB的缺點:1)RDB方式數據沒辦法作到實時持久化。      由於bgsave每次運行都要執行fork操做建立子進程,屬於重量級操做,頻繁執行成本太高。

                             2)RDB文件使用特定二進制格式保存,Redis版本演進過程當中有多個格式的RDB版本,存在老闆把呢Redis服務沒法兼容新版RDB格式問題                 

相關文章
相關標籤/搜索