redis系列2知識點概述

傑克.陳發表於2018-11-13
原文:redis 系列2 知識點概述

一.概述

  Redis 是一個開源(BSD許可)的,記憶體中的資料結構儲存系統,它可以用作資料庫、快取和訊息中介軟體。 它支援多種型別的資料結構,如 字串(strings), 雜湊(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 與範圍查詢, bitmaps, hyperloglogs 和 地理空間(geospatial) 索引半徑查詢。 Redis 內建了 複製(replication),LUA指令碼(Lua scripting), LRU驅動事件(LRU eviction),事務(transactions) 和不同級別的 磁碟持久化(persistence), 並通過 Redis哨兵(Sentinel)和自動 分割槽(Cluster)提供高可用性(high availability)。

  Redis是用ANSI C編寫的,適用於大多數POSIX系統,如Linux,* BSD,OS X,沒有外部依賴性。Linux和OS X是Redis開發和測試的兩個作業系統,我們建議使用Linux進行部署。Redis可能在Solaris衍生系統(如SmartOS)中工作,但支援是最好的努力。Windows版本沒有官方支援,但Microsoft開發並維護了Redis的Win-64埠。

 

二.  Redis 優勢

  1. 效能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。

  2.豐富的資料型別 – Redis支援二進位制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 資料型別操作。

  3.原子 – Redis的所有操作都是原子性的,同時Redis還支援對幾個操作全並後的原子性執行。

  4.豐富的特性 – Redis還支援 publish/subscribe, 通知, key 過期等等特性。

 

三.  Redis的主要知識點

  在後繼學習Redis 資料庫時,先了解主要的知識點,後面學習時,下面的知識點序號不分先後,往後再補上其它知識點,以最簡短的文字概括描述。

  1. 資料結構與物件 data structures

    Redis資料庫裡面的每個鍵值對 (key-value pair) 都是由物件(object) 組成的,其中資料庫鍵總是一個字串物件(string object)。 而資料庫鍵的值可以是字串物件,列表物件(list object), 雜湊物件(hash object)也叫雜湊, 集合物件(set object), 有序集合物件(stoted set object) 五種以及3.0版本之上的其它結構物件。

  2. 複製Replication

    在 Redis 複製的基礎上,使用和配置主從複製非常簡單,能使得從 Redis 伺服器(下文稱 slave)能精確得複製主 Redis 伺服器(下文稱 master)的內容。每次當 slave 和 master 之間的連線斷開時, slave 會自動重連到 master 上,並且無論這期間 master 發生了什麼, slave 都將嘗試讓自身成為 master 的精確副本。

  3. 持久化disk persistence

    Redis 提供了不同級別的持久化方式包括:講述RDB持久化和 AOF持久化。(1) RDB持久化方式能夠在指定的時間間隔能對你的資料進行快照儲存. (2) AOF持久化方式記錄每次對伺服器寫的操作,當伺服器重啟的時候會重新執行這些命令來恢復原始的資料,AOF命令以redis協議追加儲存每次寫的操作到檔案末尾。Redis還能對AOF檔案進行後臺重寫,使得AOF檔案的體積不至於過大。

  4. LUA指令碼

    Redis  從2.6.0 版本開始對Lua指令碼的支援,通過在伺服器中嵌入Lua 環境, Redis  客戶端可以使用Lua指令碼。命令包括:EVAL 和 EVALSHA, 可以對Lua指令碼進行求值。

  5. 驅動事件LRU eviction

    redis 伺服器是一個事件驅動程式, 伺服器需要處理兩類事件包括:檔案事件和時間事件。當Redis被當做快取來使用,當你新增資料時,讓它自動地回收舊資料是件很方便的事情。這個行為在開發者社群非常有名,因為它是流行的memcached系統的預設行為。

  6. 事務 transcation

    redis 通過MULTI 、 EXEC 、 DISCARD 和 WATCH等命令來實現事務功能, 事務提供了一種將多個命令請求打包,然後一次性,按順序的執行多個命令的機制,並且在事務執行期間,伺服器不會中斷事務而改去執行其它客戶端的命令請求,它會將事務中的所有命令都執行完畢,然後才去處理其它客戶端的命令請求。

  7. 哨兵Sentinel 

    Sentinel 是redis 高可用的解決方案,由一個或多個Sentinel 例項(instance)組成的Sentinel 系統(system) 可以監視任意多個主伺服器,以及這些主伺服器下的所有從伺服器。該系統執行以下三個任務包括:監控,提醒,自動故障遷移。

  8.  叢集Cluster

    Redis 叢集是Redis 提供分散式資料庫方案,叢集通過分片(sharding)來進行資料共享,並提供複製和故障轉移功能。

  9. 釋出與訂閱

    Redis的釋出與訂閱功能由SUBSCRIBE,PUBLISH, psubscribe等命令組成,通過執行SUBSCRIBE命令,客戶端可以訂閱一個或多個頻道,從而成為這些頻道的訂閱者(subscriber)。 每當有其它客戶端向被訂閱的頻道傳送訊息(message)時,頻道的所有訂閱者都會收到這條訊息。

 

  後面學習參考了書籍:”redis設計與實現“  以及檢視Redis官網:http://www.redis.cn/

 


相關文章