1.首先配置單機版的redis這個比較簡單直接將redis的壓縮包解壓 進入redis目錄 make && make install prefix=/usr/local/redis即可
在usr下創建redis目錄,將redis.tar.gz 複製到該目錄並解壓如下圖----輸入make 及make install PREFIX=/usr/local/redis prefix後爲執行安裝的目錄
進入 /usr/local/redis/bin 目錄啓動redis服務
方法一:前端啓動 ./redis-server 如圖啓動成功
重新開啓一個命令行窗口進入redis安裝bin目錄,開啓redis客戶端 ./redis-cli 試試 成功!
啓動方法二 後端啓動:將redis源碼包中的redis.conf複製到/usr/local/redis/bin/目錄下更改redis.conf配置如下圖
啓動redis 執行 ./redis-server redis.conf 開啓客戶端 ./redis-cli
2.配置redis集羣
首先redis集羣需要ruby rubygems等環境
安裝ruby之前需要安裝 openssl zlib等若linux沒有安裝gcc需要先安裝gcc
2.1安裝openssl ---下載openssl-1.0.1j.tar.gz,解壓到/usr/openssl/目錄下進入解壓目錄 執行./config -fPIC 如下圖
執行 make 和 make install命令 ok(注意 openssl的安裝可以參考一些教程 如果openssl 沒用被正確安裝 ruby的安裝也會失敗)
2.2 安裝zlib ---同樣下載zlib.tar.gz 解壓到/usr/zlib/目錄進入解壓目錄 執行 ./configure 命令如下圖
執行 make 和make install 命令 ok!
2.3安裝ruby 下載ruby-2.25.tar.gz解壓到/usr/ruby/目錄下 執行 ./configure --with-openssl-dir=/local/usr/ssl命令 如下圖
執行 make 和make install 命令完成後 進入ext/openssl目錄執行 ruby ./extconf.rb如下圖
執行make---報錯 No rule to make target '/include/ruby.h'
修改Makefile 文件 添加 top_srcdir = ../..如下圖
再次執行make命令
執行make install 命令
成功
進入ruby 解壓目錄/ext/zlib 目錄 執行 ruby ./extconf.rb 命令‘如下圖
執行make和 make install 命令
成功
2.4安裝rubygems---下載rubygems-2.6.7tgz文件 解壓到/usr/rubygems/目錄進入該解壓目錄執行 ruby ./setup.ruby命令如下圖
2.5安裝 redis-3.0.0.gem 如下圖 /home/wl/Desktop/redis-3.0.0.gem 爲我的 redis-3.0.0.gem 文件目錄
至此 環境就搭建好了
這裏我用同一臺服務器不同的端口表示不同的redis服務器
在/usr/local下創建redis-cluster目錄,其下創建redis01 redis02 redis03 redis04.....redis06總共6個redis服務 其中3個主節點 3個從節點,如下
將redis安裝目錄bin文件夾拷貝到每個redis01 redis02 ...redis06目錄內,同時將redis源碼目錄src下的redis-trib.rb拷貝到redis-cluster目錄下 ---注意將bin目錄下的dump.rdb 和 .aof後綴的文件刪除
修改每個redis01 redis02....目錄下的redis.conf配置文件:
port XXXX
cluster-enabled yes
啓動每一個redis服務 ./redis-server redis.conf
在這裏創建一個startup.sh腳本
添加可執行權限 chmod +x startup.sh
執行./startup.sh -----查看是否啓動 ps aux | grep redis
執行redis-trib.rb,此腳本是ruby腳本,它依賴ruby環境。
./redis-trib.rb create --replicas 1 192.168.10.194:7001 192.168.10.194:7002 192.168.10.194:7003 192.168.10.194:7004 192.168.10.194:7005 192.168.10.194:7006
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.10.194:7001
192.168.10.194:7002
192.168.10.194:7003
Adding replica 192.168.10.194:7004 to 192.168.10.194:7001
Adding replica 192.168.10.194:7005 to 192.168.10.194:7002
Adding replica 192.168.10.194:7006 to 192.168.10.194:7003
M: 262e96dce35a01710966df9921eabf54915254b4 192.168.10.194:7001
slots:0-5460 (5461 slots) master
M: 42febf223bb0b2f0904acabb82941ef99b97b50d 192.168.10.194:7002
slots:5461-10922 (5462 slots) master
M: 5dbbbd1a6acf0485ac664b3ac75abd8bbe6c7b82 192.168.10.194:7003
slots:10923-16383 (5461 slots) master
S: 8b648839330800f30598c68064296a16a5f6e74c 192.168.10.194:7004
replicates 262e96dce35a01710966df9921eabf54915254b4
S: e1c5b278e4933376f73409368837f409945d449f 192.168.10.194:7005
replicates 42febf223bb0b2f0904acabb82941ef99b97b50d
S: ffd0be0f461a3f530538ea71db5007de36413613 192.168.10.194:7006
replicates 5dbbbd1a6acf0485ac664b3ac75abd8bbe6c7b82
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join...
>>> Performing Cluster Check (using node 192.168.10.194:7001)
M: 262e96dce35a01710966df9921eabf54915254b4 192.168.10.194:7001
slots:0-5460 (5461 slots) master
M: 42febf223bb0b2f0904acabb82941ef99b97b50d 192.168.10.194:7002
slots:5461-10922 (5462 slots) master
M: 5dbbbd1a6acf0485ac664b3ac75abd8bbe6c7b82 192.168.10.194:7003
slots:10923-16383 (5461 slots) master
M: 8b648839330800f30598c68064296a16a5f6e74c 192.168.10.194:7004
slots: (0 slots) master
replicates 262e96dce35a01710966df9921eabf54915254b4
M: e1c5b278e4933376f73409368837f409945d449f 192.168.10.194:7005
slots: (0 slots) master
replicates 42febf223bb0b2f0904acabb82941ef99b97b50d
M: ffd0be0f461a3f530538ea71db5007de36413613 192.168.10.194:7006
slots: (0 slots) master
replicates 5dbbbd1a6acf0485ac664b3ac75abd8bbe6c7b82
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
成功
注意:
如果執行時報如下錯誤:
[ERR]Node XXXXXX is not empty. Either the node already knows other nodes (check withCLUSTER NODES) or contains some key in database 0
解決方法是刪除生成的配置文件nodes.conf,如果不行則說明現在創建的結點包括了舊集羣的結點信息,需要刪除redis的持久化文件後再重啓redis,比如:appendonly.aof、dump.rdb
客戶端以集羣方式登陸:
java代碼測試,首先導入redis.jar包
@Test
public void testRedisCluster() {
JedisPoolConfig config = new JedisPoolConfig();
// 最大連接數
config.setMaxTotal(30);
// 最大連接空閒數
config.setMaxIdle(2);
// 集羣結點
Set<HostAndPort> jedisClusterNode = new HashSet<HostAndPort>();
jedisClusterNode.add(new HostAndPort("192.168.10.194", 7001));
jedisClusterNode.add(new HostAndPort("192.168.10.194", 7002));
jedisClusterNode.add(new HostAndPort("192.168.10.194", 7003));
jedisClusterNode.add(new HostAndPort("192.168.10.194", 7004));
jedisClusterNode.add(new HostAndPort("192.168.10.194", 7005));
jedisClusterNode.add(new HostAndPort("192.168.10.194", 7006));
JedisCluster jc = new JedisCluster(jedisClusterNode, config);
// JedisCluster jcd = new JedisCluster(jedisClusterNode);
jc.set("name", "zhangsan");
String value = jc.get("name");
System.out.println(value);
}
通過客戶端查看一下
成功redis 集羣搭建完畢 關於 redis集羣主節點 從節點 的增加 和刪除會在另外一篇文章中說明
ruby-2.25.tar.gz 官網下載地址 ruby-2.2.5.tar.gz 下載地址
openssl-1.0.2b.tar.gz 官網下載地址 openssl-1.0.2j.tar.gz 下載地址
zlib-1.2.8.tar.gz 官網下載地址 zlib-1.2.8.tar.gz 下載地址
rubygems-2.6.7.tgz 官網下載地址 rubygems-2.6.7.tgz下載地址