目錄
-
-
- 一、前言
- 二、介紹
- 三、redis安裝
- 四、redis-cli,Redis指令行界面
-
- 4.1、redis-cli介紹
- 4.2、redis-cli使用
- 五、指令大全
- 六、redis叢集教程
-
- 6.1、Redis叢集介紹
- 6.2、搭建并使用Redis叢集
-
- 6.2.1、建立并運作6個Redis 執行個體
- 6.2.2、搭建叢集
- 6.2.3、使用叢集
-
一、前言
redis官網.
二、介紹
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安裝
下載下傳、解壓、編譯Redis
$ wget http://download.redis.io/releases/redis-5.0.5.tar.gz
$ tar xzf redis-5.0.5.tar.gz
$ cd redis-5.0.5
$ make
進入到解壓後的 src 目錄,通過如下指令啟動Redis:
$ src/redis-server
四、redis-cli,Redis指令行界面
4.1、redis-cli介紹
-
介紹:
redis-cli 是Redis指令行界面,這是一個簡單的程式,可以将指令直接發送到Redis,并直接從終端讀取伺服器發送的回複。
-
兩種主要模式
它有兩種主要模式:互動式模式,其中存在一個REPL(讀取評估列印循環),使用者可以在其中鍵入指令并獲得答複;另一種模式是将指令作為的參數發送redis-cli,執行并列印在标準輸出上。
-
優勢:
1、在互動模式下,redis-cli具有基本的行編輯功能,以提供良好的鍵入體驗。
2、您可以使用一些選項來啟動程式,以使其進入特殊模式,這樣redis-cli絕對可以完成更複雜的任務,例如模拟從伺服器并列印從主伺服器接收的複制流,檢查Redis伺服器的延遲并顯示統計資料,甚至顯示延遲樣本和頻率以及其他許多東西的ASCII頻譜圖。
4.2、redis-cli使用
安裝redis就自帶的功能,您可以使用内置的用戶端與Redis進行互動:
$ src/redis-cli
redis> set foo bar
OK
redis> get foo
"bar"
五、指令大全
Redis指令十分豐富,包括的指令組有Cluster、Connection、Geo、Hashes、HyperLogLog、Keys、Lists、Pub/Sub、Scripting、Server、Sets、Sorted Sets、Strings、Transactions一共14個redis指令組兩百多個redis指令,Redis中文指令大全。
連結: Redis中文指令大全查詢界面.
六、redis叢集教程
6.1、Redis叢集介紹
redis叢集主要應用于分布式架構中
本文簡單介紹redis叢集,深入了解請閱讀Redis 叢集規範.
本教程試圖提供最終使用者一個簡單的關于叢集和一緻性特征的描述
本教程使用于Redis3.0(包括3.0)以上版本
-
Redis叢集介紹
1、Redis 叢集是一個提供在多個Redis間節點間共享資料的程式集。
2、Redis叢集并不支援處理多個keys的指令,因為這需要在不同的節點間移動資料,進而達不到像Redis那樣的性能,在高負載的情況下可能會導緻不可預料的錯誤.
3、Redis 叢集通過分區來提供一定程度的可用性,在實際環境中當某個節點當機或者不可達的情況下繼續處理指令. Redis 叢集的優勢:
自動分割資料到不同的節點上。
整個叢集的部分節點失敗或者不可達的情況下能夠繼續處理指令。
-
Redis 叢集的資料分片
1、Redis 叢集沒有使用一緻性hash, 而是引入了 哈希槽的概念.
2、Redis 叢集有16384個哈希槽,每個key通過CRC16校驗後對16384
-
Redis 叢集的主從複制模型
為了使在部分節點失敗或者大部分節點無法通信的情況下叢集仍然可用,是以叢集使用了主從複制模型,每個節點都會有N-1個複制品.
-
Redis 一緻性保證
Redis 并不能保證資料的強一緻性. 這意味這在實際中叢集在特定的條件下可能會丢失寫操作.
第一個原因是因為叢集是用了異步複制. 寫操作過程:
用戶端向主節點B寫入一條指令.
主節點B向用戶端回複指令狀态.
主節點将寫操作複制給他得從節點 B1, B2 和 B3.
6.2、搭建并使用Redis叢集
6.2.1、建立并運作6個Redis 執行個體
由于叢集至少需要6個節點(3主3從模式),這裡使用7000 7001 7002 7003 7004 7005六個端口
1、建立叢集檔案夾,這裡的檔案夾是在步驟三、redis安裝中解壓的路徑redis-5.0.5下建立:
cd redis-5.0.5
mkdir cluster-test
cd cluster-test
mkdir 7000 7001 7002 7003 7004 7005
2、拷貝redis-server可執行檔案到叢集檔案夾下
cd cluster-test
cp /root/redis-5.0.5/src/redis-server ./
3、下面示例一個節點(7000)的配置及啟動。其他節點修改port為對應節點的端口号就行,操作一樣
構造不同節點的配置檔案:
cd 7000
cp /root/redis-5.0.5/redis.conf ./
vi redis.conf #修改port 為7000(下面是一個最少選項的叢集的配置檔案)
port 7001
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
備注:檔案中的 cluster-enabled 選項用于開執行個體的叢集模式, 而 cluster-conf-file 選項則設定了儲存節點配置檔案的路徑, 預設值為 nodes.conf.節點配置檔案無須人為修改, 它由 Redis 叢集在啟動時建立, 并在有需要時自動進行更新。
4、運作 Redis 執行個體
../redis-server ./redis.conf
六個執行個體一樣的啟動
5、可以檢查一下是否啟動成功:
ps -el | grep redis
6.2.2、搭建叢集
現在我們已經有了六個正在運作中的 Redis 執行個體, 接下來我們需要使用這些執行個體來建立叢集, 并為每個節點編寫配置檔案。
通過使用 Redis 叢集指令行工具 redis-cli , 編寫節點配置檔案的工作可以非常容易地完成: redis-cli 位于 Redis 源碼的 src 檔案夾中, 這個程式通過向執行個體發送特殊指令來完成建立新叢集, 檢查叢集, 或者對叢集進行重新分片(reshared)等工作。
cd /root/redis-5.0.5/src/redis-server/src
./redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1
這表示叢集中的 16384 個槽都有至少一個主節點在處理, 叢集運作正常。
6.2.3、使用叢集
cd /root/redis-5.0.5/src/redis-server/src
./redis-cli -c -p 7000