天天看點

redis叢集應用背景:準備工作啟動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)。

試想在網站承受高并發通路壓力的同時,還需要從海量資料中查詢出滿足條件的資料,并快速響應,我們必然想到的是将資料進行切片,把資料根據某種規則放入多個不同的伺服器節點,來降低單節點伺服器的壓力。叢集要實作的目的是要将不同的 key 分散放置到不同的 redis 節點。

同時呢,redis開創了一種新的資料存儲思路,使用redis,我們不用在面對功能單調的資料庫時,把精力放在如何把大象放進冰箱這樣的問題上,而是利用redis靈活多變的資料結構和資料操作,為不同的大象建構不同的冰箱。希望你喜歡這個比喻

下面我們就來搭建redis叢集:

redis從3.0版本後具有叢集,在搭建叢集之前:

下載下傳redis并通過winscp(winscp是一個windows環境下使用ssh的開源圖形化sftp用戶端。同時支援scp協定。它的主要功能就是在本地與遠端計算機間安全的複制檔案)上傳到linux

redis叢集應用背景:準備工作啟動redis叢集概念叢集搭建測試叢集
redis叢集應用背景:準備工作啟動redis叢集概念叢集搭建測試叢集

下面是編譯好的檔案

redis叢集應用背景:準備工作啟動redis叢集概念叢集搭建測試叢集

1)複制redis.conf到指定目錄 cp redis.conf /usr/local/redis/bin/

2)修改配置檔案

redis叢集應用背景:準備工作啟動redis叢集概念叢集搭建測試叢集

3)後端啟用

[root@localhost bin]# ./redis-server redis.conf

redis叢集應用背景:準備工作啟動redis叢集概念叢集搭建測試叢集
redis叢集應用背景:準備工作啟動redis叢集概念叢集搭建測試叢集

redis 叢集中内置了 16384 個哈希槽,當需要在 redis 叢集中放置一個 key-value 時,redis 先對 key 使用 crc16 算法算出一個結果,然後把結果對 16384 求餘數,這樣每個 key 都會對應一個編号在 0-16383 之間的哈希槽,redis 會根據節點數量大緻均等的将哈希槽映射到不同的節點

redis叢集應用背景:準備工作啟動redis叢集概念叢集搭建測試叢集

key:a

計算a的hash值,例如值為100,100這個槽在server1上,是以a應該放到server1.

key:hello

hash值:10032,此槽在server2上。hell可以應該存在server2.

redis叢集應用背景:準備工作啟動redis叢集概念叢集搭建測試叢集

領着投票過程是叢集中所有master參與,如果半數以上master節點與master節點通信超過(cluster-node-timeout),認為目前master節點挂掉.

ps:當叢集不可用時,所有對叢集的操作做都不可用,收到((error) clusterdown the cluster is down)錯誤

叢集中有三個節點的叢集,每個節點有一主一備。需要6台虛拟機。

搭建一個僞分布式的叢集,使用6個redis執行個體來模拟。

搭建叢集需要使用到官方提供的ruby腳本。

安裝ruby

redis叢集管理工具redis-trib.rb

腳本需要的ruby包需要上傳到linux服務。

redis叢集應用背景:準備工作啟動redis叢集概念叢集搭建測試叢集
redis叢集應用背景:準備工作啟動redis叢集概念叢集搭建測試叢集

首先寫一個sh腳本檔案

redis叢集應用背景:準備工作啟動redis叢集概念叢集搭建測試叢集

添加到comond指令中

執行腳本檔案

redis叢集應用背景:準備工作啟動redis叢集概念叢集搭建測試叢集
redis叢集應用背景:準備工作啟動redis叢集概念叢集搭建測試叢集
redis叢集應用背景:準備工作啟動redis叢集概念叢集搭建測試叢集

叢集搭建成功!