CentOS7下Redis集群搭建
一、引言
工作中经常会用到Redis,下面在CentOs7上,搭建一个Redis集群。
二、安装Redis
1、查询系统版本
不同的系统版本,Linux的命令有所差别。
cat /etc/centos-release
2、下载Redis
Redis官网地址:https://redis.io/download
在哪个目录下,执行wget操作,文件就会下载到哪个目录。
cd /home/frank/redis/
wget http://download.redis.io/releases/redis-5.0.4.tar.gz
3、解压
tar -xzvf redis-5.0.4.tar.gz
4、安装C语言环境
因为Redis使用C语言写的,CentOS自带C语言环境,执行以下命令会更新C语言环境
yum install gcc-c++
5、编译Redis源码
cd redis-5.0.4
make
6、安装Redis
默认安装在当前目录下,可以使用PREFIX参数更改安装位置
cd redis-5.0.4
make install PREFIX=/home/frank/redis/reids
7、将解压缩包下的Redis配置文件redis.conf拷贝到安装目录的bin目录下。(每一个Redis对应着一个配置文件)
cp ./redis.conf ../redis/bin
8、进入到安装目录,启动Redis
./redis-server ./redis.conf
9、测试
建一个Maven工程,添加如下依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.0.1</version>
</dependency>
public static void main( String[] args ) {
//方式一
Jedis jedis = new Jedis("192.168.2.230",6379);
jedis.set("hello","world");
String value = jedis.get("hello");
System.out.println(value);
jedis.close();
//方式二:线程池
JedisPool pool = new JedisPool("192.168.2.230",6379);
Jedis jedis = pool.getResource();
String value = jedis.get("hello");
System.out.println(value);
jedis.close();
}
运行上面代码,可能报下面的错,这是因为系统的防火墙没有关闭
Centos7关闭防火墙
systemctl stop firewalld.service
禁止firewall开机启动
systemctl disable firewalld.service
关闭防火墙后,重新运行后,结果如下:
10、关闭Redis
三、搭建Redis集群(伪集群)
搭建集群最少也得需要3台主机,如果每台主机再配置一台从机的话,则最少需要6台机器,准备6个redis
1、准备6个Redis,并逐一修改其配置文件
为了方便记忆,6个Redis的安装目录分别从6661-6666
2、逐一修改其配置文件
修改每个Redis绑定的Ip地址
修改每个Redis的端口地址,分别从6661-6666
把每个Redis的集群设置打开
把每个Redis改为后台运行
逐一启动Redis
查看Redis的运行状态
ps -ef|grep redis
3、将6个Redis加入一个集群
./redis-trib.rb create --replicas 1 192.168.2.230:6661 192.168.2.230:6662 192.168.2.230:6663
192.168.2.230:6664 192.168.2.230:6665 192.168.2.230:6666
运行上面命令后,出现如下报错,说明缺少Ruby环境。
4、安装Ruby
yum install ruby
yum install rubygems
再次执行上面集群命令
5、测试
public static void main( String[] args )
{
//集群
Set<HostAndPort> nodes = new HashSet<>();
nodes.add(new HostAndPort("192.168.2.230",6661));
nodes.add(new HostAndPort("192.168.2.230",6662));
nodes.add(new HostAndPort("192.168.2.230",6663));
nodes.add(new HostAndPort("192.168.2.230",6664));
nodes.add(new HostAndPort("192.168.2.230",6665));
nodes.add(new HostAndPort("192.168.2.230",6666));
JedisCluster cluster = new JedisCluster(nodes);
cluster.set("cluster","我们六个人");
String value = cluster.get("cluster");
System.out.println(value);
还没有评论,来说两句吧...