主從搭建
redis的主從搭建很是簡單,打開配置文件6379.conf,只須要將主節點的protected-mode設置爲no,而後在從節點配置中加入:slaveof <masterip> <masterport>,啓動便可
集羣
redis集羣的TCP端口
每一個redis集羣節點都須要兩個TCP端口,用戶端口和集羣間節點通訊的端口,如6379和16379,集羣間節點通訊端口爲用戶端口加上10000
redis集羣數據分片
redis集羣數據分片是經過哈希槽來實現的,redis集羣中有16384個哈希槽,
redis集羣的主從模式
爲了提升集羣的可用性,一般會爲集羣中每一個節點都配置一個從節點,這樣在集羣中任務節點down機以後,從節點會頂替原來的主節點成爲新的主節點,保證集羣的正常運行
集羣的一致性保證
redis集羣沒法保證強一致性。某些狀況下,redis集羣會丟失客戶端提交的寫操做。丟失的緣由:
一、redis採用異步複製。
當接收到用戶的寫請求以後,redis會開啓一個異步線程將寫請求異步同步到集羣中的其餘節點上,並當即返回處理結果。由於返回給用戶處理結果的時候異步同步數據並無完成,若是一個節點在完成同步的時候down機,並無將數據複製到從節點上,就會致使數據的不一致
二、某個節點down機以後遲遲沒有選舉出主節點,會致使同步到該節點上的數據丟失。若是主節點down機,該節點拒絕提供寫服務
redis集羣搭建
一、建立目錄:mkdir /usr/local/redis-cluster
二、建立集羣節點:mkdir -p 9001/data 9002/data 9003/data 9004/data 9005/data 9006/data
三、將已經安裝好的redis實例的src目錄下的運行腳本考到bin目錄下:cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server redis-trib.rb /usr/local/redis-cluster/bin
四、複製一個redis實例到9001:cp /usr/local/redis/* 9001
五、進入9001並修改redis.conf文件:
port 9001
daemonize yes
bind 192.168.40.130
dir /usr/local/redis-cluster/9001/data/
pidfile /var/run/redis_9001.pid
cluster-enabled yes
cluster-config-file nodes9001.conf
cluster-node-timeout 15000
appendonly yes
六、將該實例複製到其餘的文件夾下並修改配置
七、啓動6個節點
/usr/local/bin/redis-server /usr/local/redis-cluster/9001/redis.conf
/usr/local/bin/redis-server /usr/local/redis-cluster/9002/redis.conf
/usr/local/bin/redis-server /usr/local/redis-cluster/9003/redis.conf
/usr/local/bin/redis-server /usr/local/redis-cluster/9004/redis.conf
/usr/local/bin/redis-server /usr/local/redis-cluster/9005/redis.conf
/usr/local/bin/redis-server /usr/local/redis-cluster/9006/redis.conf
八、安裝集羣所需軟件:
yum install ruby
yum install rubygems
gem install redis
九、建立集羣:
/usr/local/redis-cluster/bin/redis-trib.rb create --replicas 1 192.168.119.131:9001 192.168.119.131:9002 192.168.119.131:9003 192.168.119.131:9004 192.168.119.131:9005 192.168.119.131:9006
十、隨便連上一個節點測試:
/usr/local/redis-cluster/bin/redis-cli -c -h 192.168.119.131 -p 9001
cluster info
cluster nodes
十一、搭建完成