redis集群搭建
Posted 巅峰小学生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis集群搭建相关的知识,希望对你有一定的参考价值。
redis集群搭建(伪集群)
说明
redis-cluster是redis3.0才有的东西,集群的理解就是将redis部署在不同的服务器上从而组成一个redis群,而伪集群就是不将redis部署在不同的服务器上,意思就是将所有的redis部署在同一台服务器上,将其配置成不同的端口来组成的集群(不管是伪集群还是真正的集群配置都是大同小异)
redis安装需要gcc编译器
redis文件方式启动需要在redis.conf中修改其启动方式参数
集群搭建
搭建集群准备工作
注意:虽然是伪集群,但和真集群的配置方式是一样的,只是现在在同一天服务器上配置而已。
需要做的事情:
-
创建一个redis-cluster文件夹用于存放redis(伪集群才需要这一步)
-
将redis复制n份(这次模拟使用6份来去做,3个是准节点,另外3个是备份节点,端口号7001-7006),到该文件夹中,并开启集群功能和设置不同的端口号(伪集群才需要这一步)
【步骤1】创建redis-cluster文件夹,将原redis开启集群功能
>>创建redis-cluster文件夹(目前实践目录在usr/local做)
命令:mkdir redis-cluster
>>进入原redis bin目录将其开启集群功能
命令:rm -rf dump.rdb 删除该文件
【步骤2】将其开启了集群功能的redis复制多分到redis-cluster文件夹中,并为其设置不同的端口号(这次模拟使用6份来去做,3个是准节点,另外3个是备份节点,端口号7001-7006)
>>将原redis复制多分到redis-cluster文件夹中
>>修改每一份redis的端口号(这里从redis02开始,redis01在开启集群功能是已将其port修改成了7001)
【步骤3-启动脚本(不是必要)】编写脚本文件,使用脚本文件来去启动这6个redis服务
>>在redis-cluster文件夹下创建一个startall.sh脚本文件,并编写其启动脚本(其实就是写linux命令),加入以下命令
脚本:
cd redis01/bin/
./redis-server redis.conf
cd ../..
cd redis02/bin/
./redis-server redis.conf
cd ../..
cd redis03/bin/
./redis-server redis.conf
cd ../..
cd redis04/bin/
./redis-server redis.conf
cd ../..
cd redis05/bin/
./redis-server redis.conf
cd ../..
cd redis06/bin/
./redis-server redis.conf
cd ../..
>>创建并编写好后是运行不了该文件的,还需要为改文件添加运行权限
>>运行该文件并查看是否运行成功
【步骤4-停止脚本(不是必要)】
cd redis01/bin/
./redis-cli -p 7001 shutdown
cd ../..
cd redis02/bin/
./redis-cli -p 7002 shutdown
cd ../..
cd redis03/bin/
./redis-cli -p 7003 shutdown
cd ../..
cd redis04/bin/
./redis-cli -p 7004 shutdown
cd ../..
cd redis05/bin/
./redis-cli -p 7005 shutdown
cd ../..
cd redis06/bin/
./redis-cli -p 7006 shutdown
cd ../..
集群环境配置
ruby基本介绍
【步骤1】使用ruby脚本搭建集群。需要ruby的运行环境。安装ruby
yum install ruby
yum install rubygems
如果yum安装报错,可能是网络问题,要确定当前虚拟机是否能上网,nat和host-only模式网络配置请参考linux笔记
【步骤2】安装ruby脚本运行使用的包(将其redis-3.0.0.gem上传到linux上在做下面操作)。
gem install redis-3.0.0.gem
cd /usr/local/redis-src/redis-3.0.0/src (注意,该文件在redis源里面)
将其复制到集群文件夹根目录中
如下:
【步骤3】执行ruby脚本
第一步:首先启动每个redis实例
第二步:使用ruby脚本搭建集群,执行ruby脚本搭建集群
以下是当前测试虚拟机ip
./redis-trib.rb create --replicas 1 192.168.25.134:7001 192.168.25.134:7002 192.168.25.134:7003 192.168.25.134:7004 192.168.25.134:7005 192.168.25.134:7006 |
-
执行结果如下:
》》执行ruby脚本
》》输入yes后确认就会开始根据ruby脚本来去搭建redis-cluster
集群的连接和数据的存取(内置客户端)
-
使用随便一个redis来去测试集群的连接,这里选用redis01的客户端进行连接测试
-
注意:可以看出插入数据的时候并不是直接插入到7006这个redis中的,而是跳到了7002中插入,因为7006在这次配置中是作为从节点存在的,而从节点只作数据的备份
集群信息查看
-
命令:cluster info
-
命令:cluster nodes
Jedis测试集群-集群的连接和数据的存取
/** * Jedis集群连接 * 注意:如果测试不成功请尝试关闭虚拟机防火墙 * @throws Exception */ @Test public void testConnCluster() throws Exception{ // 创建一个JedisCluster对象 Set<HostAndPort> set = new HashSet<>(); //填写redis集群的各个redis信息 set.add( new HostAndPort("192.168.25.134", 7001) ); set.add( new HostAndPort("192.168.25.134", 7002) ); set.add( new HostAndPort("192.168.25.134", 7003) ); set.add( new HostAndPort("192.168.25.134", 7004) ); set.add( new HostAndPort("192.168.25.134", 7005) ); set.add( new HostAndPort("192.168.25.134", 7006) ); JedisCluster jedisCluster = new JedisCluster(set);
// 使用jedisCluster操作Redis,jedisCluster自带连接池且该对象可以是单例的(表示在系统关闭前才关闭也可以) jedisCluster.set("name1", "zhangsan"); String name = jedisCluster.get("name1"); System.out.println(name);
jedisCluster.close(); } |
以上是关于redis集群搭建的主要内容,如果未能解决你的问题,请参考以下文章