您好,登錄后才能下訂單哦!
wget http://download.redis.io/releases/redis-3.0.0.tar.gz && tar zxvf redis-3.0.0.tar.gz && cd redis-3.0.0 && make PREFIX=/usr/local/redis MALLOC=libc install
mkdir -p /usr/local/redis/run
mkdir -p /usr/local/redis/logs
mkdir -p /usr/local/redis/rdb
mkdir -p /usr/local/redis/etc
mkdir -p /usr/local/redis/nodes
1、###redis集群配置文件,根據實例端口區分
#Redis默認不是以守護進程的方式運行,可以通過該配置項修改,使用yes啟用守護進程
daemonize yes
#當 Redis 以守護進程的方式運行的時候,Redis 默認會把 pid 文件放在/var/run/redis.pid,當運行多個 redis 服務時,需要指定不同的 pid 文件和端口
pidfile /usr/local/redis/run/redis_6381.pid
#配置redis端口
port 6381
tcp-backlog 511
#客戶端連接的超時時間,單位為秒,超時后會關閉連接
timeout 300
tcp-keepalive 0
#日志記錄等級,4個可選值debug、verbose、notice、warning
loglevel notice
#配置 log 文件地址,默認打印在命令行終端的窗口上,也可設為/dev/null屏蔽日志
logfile "/usr/local/redis/logs/6381.log"
#設置數據庫的個數,可以使用 SELECT 命令來切換數據庫
databases 16
#設置 Redis 進行數據庫鏡像的頻率。保存數據到disk的策略 900秒之內有1個keys發生變化時
save 900 1
#設置 Redis 進行數據庫鏡像的頻率。保存數據到disk的策略 30秒之內有10個keys發生變化時
save 300 10
#設置 Redis 進行數據庫鏡像的頻率。保存數據到disk的策略 60秒之內有10000個keys發生變化時
save 60 10000
stop-writes-on-bgsave-error yes
#在進行鏡像備份時,是否進行壓縮
rdbcompression yes
rdbchecksum yes
#鏡像備份文件的文件名
dbfilename dump6381.rdb
#數據庫鏡像備份的文件放置的路徑,默認值為 ./
dir /usr/local/redis/rdb
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
#限制同時連接的客戶數量,當連接數超過這個值時,redis 將不再接收其他連接請求,客戶端嘗試連接時將收到 error 信息
maxclients 10000
#最大可使用內存。如果超過,Redis會試圖刪除EXPIRE集合中的keys
maxmemory 1G
#volatile-lru使用LRU算法來刪除過期的set,allkeys-lru刪除任何遵循LRU算法的key,volatile-ttl刪除最近即將過期的key,volatile-random ->隨機地刪除過期set中的key
maxmemory-policy volatile-ttl
#對于處理redis內存來說,LRU和minor TTL算法不是精確的,而是近似的(估計的)算法。所以我們會檢查某些樣本#來達到內存檢查的目的。默認的樣本數是3,你可以修改它。
maxmemory-samples 3
#默認情況下,Redis會異步的把數據保存到硬盤。如果你的應用場景允許因為系統崩潰等極端情況而導致最新數據丟失#的話,那這種做法已經很ok了。否則你應該打開‘append only’模式,開啟這種模式后,Redis會在#appendonly.aof文件中添加每一個寫操作,這個文件會在Redis啟動時被讀取來在內存中重新構建數據集。
appendonly no
appendfilename "appendonly6381.aof"
#no:不fsync,只是通知OS可以flush數據了具體是否flush取決于OS性能更好; always: 每次寫入append only 日志文件后都會fsync性能差,但很安全;everysec: 沒間隔1秒進行一次fsync折中.
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
cluster-enabled yes
cluster-config-file /usr/local/redis/nodes/6381.conf
cluster-node-timeout 5000
slowlog-log-slower-than 10000
slowlog-max-len 1024
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
2、啟動redis實例
/usr/local/redis/bin/redis-server /usr/local/redis/etc/6380.conf &
3、復制redis-trib.rb
cp /root/redis-3.0.0/src/redis-trib.rb /usr/local/redis/bin
4、啟動集群
/usr/local/redis/bin/redis-trib.rb create 10.144.8.86:7000 10.144.8.86:7001 10.144.8.86:7002
如果是6個實例,create 后加參數--replicas 1會產生3個主節點,3個slave節點
執行上面的命令的時候會報錯,因為是執行的ruby的腳本,需要ruby的環境
錯誤內容:/usr/bin/env: ruby: No such file or directory
所以需要安裝ruby的環境,這里推薦使用yum install ruby安裝
yum install ruby
然后再執行第6步的創建集群命令,還會報錯,提示缺少rubygems組件,使用yum安裝
錯誤內容:
./redis-trib.rb:24:in `require': no such file to load -- rubygems (LoadError)
from ./redis-trib.rb:24
yum install rubygems
6.3再次執行第6步的命令,還會報錯,提示不能加載redis,是因為缺少redis和ruby的接口,使用gem 安裝
錯誤內容:
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- redis (LoadError)
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from ./redis-trib.rb:25
使用gem 安裝 :gem install redis
5、通過redis-trib.rb工具的check子命令來查看集群信息
/usr/local/redis/bin/redis-trib.rb check 127.0.0.1:6379
6、通過redis客戶端實現對Redis Cluster的讀寫。當前,redis客戶端同樣實現了對集群的支持,但使用方法略有不同,即在啟動的時候需要添加一個-c參數。
/usr/local/redis/bin/redis-cli -c -h 127.0.0.1 -p 6379
http://blog.csdn.net/xu470438000/article/details/42972123
http://blog.csdn.net/myrainblues/article/details/25881535
Redis集群添加節點
1:首先把需要添加的節點啟動
2:執行以下命令,將這個新節點添加到集群中
cd /usr/local/redis3.0/src/
./redis-trib.rb add-node 127.0.0.1:7006 127.0.0.1:7000
3:執行命令redis-cli -c -p 7000 cluster nodes,查看剛才新增的節點
4:增加了新的節點之后,這個新的節點可以成為主節點或者是從節點
4.1 把這個節點變成主節點,使用redis-trib程序,將集群中的某些哈希槽移動到新節點里面, 這個新節點就成為真正的主節點了。
執行下面的命令對集群中的哈希槽進行移動
cd /usr/local/redis3.0/src
./redis-trib.rb reshard 127.0.0.1:7000
系統會提示我們要移動多少哈希槽,這里移動1000個
然后還需要指定把這些哈希槽轉移到哪個節點上,
輸入我們剛才新增的節點的ID
f32dc088c881a6b930474fc5b52832ba2ff71899
然后需要我們指定轉移哪幾個幾點的哈希槽
輸入all 表示從所有的主節點中隨機轉移,湊夠1000個哈希槽
然后再輸入yes,redis集群就開始分配哈希槽了。
至此,一個新的主節點就添加完成了,執行命令查看現在的集群中節點的狀態
redis-cli -c -p 7000 cluster nodes
4.2:把這個節點變成從節點
前面我們已經把這個新節點添加到集群中了,現在我們要讓新節點成為127.0.0.1:7001的從節點,只需要執行下面的命令就可以了,命令后面的節點ID就是127.0.0.1:7001的節點ID
redis-cli -c -p 7006 cluster replicate 0b00721a509444db793d28448d8f02168b94bd38
使用下面命令來確認一下127.0.0.1:7006是否已經成為127.0.0.1:7001的從節點
redis-cli -p 7000 cluster nodes | grep slave | grep 0b00721a509444db793d28448d8f02168b94bd38
看到下面圖片中的情況就表示添加成功
Redis集群刪除節點
1:如果刪除的節點是主節點,這里我們刪除127.0.0.1:7006節點,這個節點有1000個哈希槽
首先要把節點中的哈希槽轉移到其他節點中,執行下面的命令
cd /usr/local/redis3.0/src
./redis-trib.rb reshard 127.0.0.1:7000
系統會提示我們要移動多少哈希槽,這里移動1000個,因為127.0.0.1:7006節點有1000個哈希槽
然后系統提示我們輸入要接收這些哈希槽的節點的ID,這里使用127.0.0.1:7001的節點ID
然后要我們選擇從那些節點中轉出哈希槽,這里一定要輸入127.0.0.1:7006這個節點的ID,最后輸入 done 表示輸入完畢
最后一步,使用下面的命令把這個節點刪除
cd /usr/local/redis3.0/src/
./redis-trib.rb del-node 127.0.0.1:7006 127.0.0.1:7006
2:如果節點是從節點的,直接使用下面的命令刪除即可。
cd /usr/local/redis3.0/src/
./redis-trib.rb del-node 127.0.0.1:7006 127.0.0.1:7006
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。