1.什麼是Redis Redis是用C語言開發的一個開源的高性能鍵值對(key-value)資料庫。它通過提供多種鍵值數據類型來適應不同場景下的存儲需求,目前為止Redis支持的鍵值數據類型如 下:字元串類型, 散列類型, 列表類型, 集合類型, 有序集合類型。 2.Redis 安裝 redis 是 ...
1.什麼是Redis
Redis是用C語言開發的一個開源的高性能鍵值對(key-value)資料庫。它通過提供多種鍵值數據類型來適應不同場景下的存儲需求,目前為止Redis支持的鍵值數據類型如
下:字元串類型, 散列類型, 列表類型, 集合類型, 有序集合類型。
2.Redis 安裝
redis 是C 語言開發, 安裝redis需要先將官網下載的源碼進行編譯,編譯依賴gcc環境,如果沒有gcc環境,需要安裝gcc:yum install gcc-c++
註: redis3.0 版本 增加 redis 集群功能。
下載地址: http://download.redis.io/releases/redis-3.0.0.tar.gz
1) 我這裡先將下載好的包上傳到伺服器 /usr/local/src/redis 下
2) 解壓 tar -zxvf redis-3.0.0.tar.gz (z: 標識解壓格式,x:解壓縮,v:顯示解壓進度,f:解壓文件)
3) 進入解壓後的目錄進行編譯
cd /redis-3.0.0
make
4) 安裝到指定目錄 我這裡安裝到/usr/local/redis
make PREFIX=/usr/local/redis insatll 註意大寫
5) 複製配置文件到安裝目錄,
redis編譯後會有一個預設的配置文件, 安裝目錄中沒有, 我們如果做配置需要把redis預設的配置文件拷貝到redis的安裝目錄下
cp /usr/local/src/redis/redis-3.0.0/redis.conf /usr/local/redis/bin
3.Redis啟動
1) 前端模式啟動
在安裝目錄bin下, 直接運行 ./redis-server 將以前端模式啟動,前端模式啟動的缺點是ssh命令視窗關閉則redis-server程式結束
這裡我們可以看到redis預設埠為 6379, 此時在命令行下麵的游標會一直閃爍, 如果此時按下CTRL+C 會關閉服務
2) 後端模式啟動
需要將複製過來的redis配置文件 redis.conf 做修改
[root@localhost bin]# vi redis.conf 在 37行 daemonize 改為 yes 以後端模式啟動(輸入i 進入編輯模式, 修改好以後按一下ESC,輸入":wq" 保存並退出)
[root@localhost bin]# ./redis-server redis.conf
這裡可以看到redis 啟動了, 下麵咱們測試一下,
[root@localhost bin]# ./redis-cli 執行命令 進入redis 命令號客戶端
輸入ping
標識我們的服務啟動成功沒有問題。
4. 集群搭建
1) 說明
1> 集群中每個redis服務作為一個redis節點, 各個節點之間彼此互聯(PING-->PONG 機制)
2> 節點的fail是通過集群中超過半數的節點檢測失效時才生效.
3> 客戶端與redis節點直連,不需要中間proxy層.客戶端不需要連接集群所有節點,連接集群中任何一個可用節點即可
4> redis-cluster把所有的物理節點映射到[0-16383]slot上,cluster 負責維護node<->slot<->value
Redis 集群中內置了 16384 個哈希槽,當需要在 Redis 集群中放置一個 key-value 時,redis 先對 key 使用 crc16 演算法算出一個結果,然後把結果對 16384 求餘數,這樣每個 key 都會對應一個編號在 0-16383 之間的哈希槽,redis 會根據節點數量大致均等的將哈希槽映射到不同的節點
2) 配置redis集群需要一個ruby 環境
redis集群管理工具redis-trib.rb依賴ruby環境,首先需要安裝ruby環境:
安裝ruby
yum install ruby
yum install rubygems
我們需要使用redis創建集群的腳本在redis的源碼包src中
這個腳本運行需要一個redis-3.0.0.gem 運行環境包,
我這裡將這個包放到/usr/local/src/redis 和redis源碼文件在一個目錄下,
然後 安裝執行 gem install /usr/local/redis-3.0.0.gem
3) redis 集群因為內置存在的投票容錯機制,即上述說明中的第二點,超過半數的節點檢測失效時才生效, 所以我們的redis集群至少有三個節點 ,
這三個節點作為主節點, 當然我們還需要需要三個從節點, 這樣我們需要弄出6個redis, 我這裡只裝了一個虛擬機作為伺服器, 那我這裡先創建6個redis實例來模擬。
創建redis實例, 這裡簡要說明一下, 我這裡在/usr/local 下麵創建一個文件下redis-cluster 文件夾
mkdir redis-cluster
cd /usr/local/redis/bin
cp -r bin ../redis-cluster/redis01
cd /usr/local/redis-cluster/redis01
刪除文件夾中dump.rdb 文件刪除
修改配置文件
埠改為 7001,
cluster-enabled yes 的註釋放開 預設是註釋掉的, 指定要做集群,
之後就複製這個redis01 分別命名redis02,redis03,***redis06 同時修改埠分別為7002,7003,****7006 保存
創建實例完成後, 把ruby腳本redis-trib.rb (在redis源碼src路徑下的) 複製到redis-cluster 目錄下
在創建redis集群之前啟動這6個redis實例
在/usr/local/redis-cluster 目錄下執行
./redis-trib.rb create --replicas 1 IP地址:7001 IP地址:7002 IP地址:7003 IP地址:7004 IP地址:7005 IP地址:7006
提示輸入 yes
4) 測試redis集群
因為redis集群是相互連接的, 我沒不需要一個個連接, 只需要連接redis實例中的一個就可以 執行以下命令
[root@localhost redis-cluster]# redis01/redis-cli -h IP地址 -p 7001 -c
其中-c表示以集群方式連接redis,-h指定ip地址,-p指定埠號