本文就redis3.0版本后分布式部署做一个记录
部署操作系统:Centos
redis下载地址:http://download.redis.io/releases/redis-4.0.1.tar.gz
下载完成后解压文件并编译源文件
运行命令:
[root@localhost home]#wget http://download.redis.io/releases/redis-4.0.1.tar.gz
[root@localhost home]#tar xzf redis-4.0.1.tar.gz
[root@localhost home]#cd redis-4.0.1
[root@localhost home]#make
根据官方解释,redis分布式部署至少部署6个节点,三主三备。
创建文件夹redis_cluster,把刚刚编译好的redis拷贝6份到该目录,分别命名:redis_7000,redis_7001,redis_7002,redis_7003,redis_7004,redis_7005;
如图:
(如果不是安装的带图形化的Centos可以使用命令创建文件夹并改名)
分别进入6个文件夹,修改redis.conf内容为:
port 7000
bind 192.168.182.128
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
端口为对应的文件夹的端口,bind后面跟部署redis的服务器IP地址,修改完成后修改对应文件名为redis_7000.conf
分别启动以上6个redis实例:
[root@localhost src]# ./redis-server ../redis_7000.conf
[root@localhost src]# ./redis-server ../redis_7001.conf
[root@localhost src]# ./redis-server ../redis_7002.conf
[root@localhost src]# ./redis-server ../redis_7003.conf
[root@localhost src]# ./redis-server ../redis_7004.conf
[root@localhost src]# ./redis-server ../redis_7005.conf
也可以把启动命令编辑为脚本文件,方便下次使用。
完成以上操作后6个互相没关系的redis已经启动,现在开始配置redis集群关系。
安装gem
[root@localhost src]# yum install gem
[root@localhost src]# gem install redis
[root@localhost src]# ./redis-trib.rb create –replicas 1 192.168.182.128:7000 192.168.182.128:7001 192.168.182.128:7002 192.168.182.128:7003 192.168.182.
128:7004 192.168.182.128:7005
注意:每个IP:Port之间用空格隔开,replicas前面是两个”-“,replicas后的1代表每个节点创建1个备份。
运行命令:
[root@localhost src]# ./redis-trib.rb check 192.168.182.128:7000
查看当前集群状态结果如图:
可以看到3个master将16384个槽分配了。
到此,redis的分布式环境已经部署完成,接下来看下通过Java如何访问和操作redis。
首先引入jedis相关jar包。
maven引用:
JedisPoolConfig poolConfig = new JedisPoolConfig();
// 最大连接数
poolConfig.setMaxTotal(1);
// 最大空闲数
poolConfig.setMaxIdle(1);
// 最大允许等待时间,如果超过这个时间还未获取到连接,则会报异常
// Could not get a resource from the pool
poolConfig.setMaxWaitMillis(1000);
Set nodes = new LinkedHashSet();
nodes.add(new HostAndPort("192.168.182.128", 7000));
nodes.add(new HostAndPort("192.168.182.128", 7001));
nodes.add(new HostAndPort("192.168.182.128", 7002));
nodes.add(new HostAndPort("192.168.182.128", 7003));
nodes.add(new HostAndPort("192.168.182.128", 7004));
nodes.add(new HostAndPort("192.168.182.128", 7005));
JedisCluster cluster = new JedisCluster(nodes, poolConfig);
cluster.set("testKey", "初级Java");
System.out.println(cluster.get("testKey"));
以上程序在redis集群中插入了一个key为testKey的字符串,然后从集群中获取出来并打印;
输出结果为:初级Java
以上就是关于redis分布式部署的相关记录,有什么问题欢迎各位大神多多指正。
爬坑路漫长,且爬且珍惜。