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/
相關文章
- JVM知識點掃盲系列(2)JVM
- Redis知識點Redis
- ES6知識點概述
- redis相關知識點Redis
- Java集合 - 集合知識點總結概述Java
- Redis常考的知識點Redis
- Redis知識點筆記總結Redis筆記
- Redis 面試必備知識點Redis面試
- Redis 基礎知識點總結Redis
- HTML5學習重點知識:JavaScript概述HTMLJavaScript
- Redis知識點&面試題總結Redis面試題
- struts2知識點整理
- java 多型知識點2Java多型
- IdentityServer4系列 | 初識基礎知識點IDEServer
- java後端知識概述Java後端
- Spring入門系列:淺析知識點Spring
- Redis基礎知識(學習筆記9--Redis命令(2))Redis筆記
- 面試系列之View相關知識點面試View
- Docker 基礎知識 - Docker 概述Docker
- 《Redis設計與實現》知識點目錄Redis
- Spring系列之初識Spring Spring概述Spring
- 知識圖譜學習記錄--知識圖譜概述
- Redis知識總結Redis
- redis知識之HyperLogLogRedis
- Redis基礎知識Redis
- 知識點
- Java基礎知識之概述(一)Java
- 玩轉javascript---知識點彙總(2)JavaScript
- 資料庫知識點(2)——行轉列資料庫
- Pandas知識點彙總(2)——布林索引索引
- stm32 DMA2D知識點
- [Redis知識體系] 一文全面總結Redis知識體系Redis
- SpringBoot系列-前置知識Spring Boot
- Redis的相關知識Redis
- rabbitmq 知識點MQ
- SQL知識點(+)SQL
- 前端知識點前端
- Android 知識點Android