linux系统中搭建redis集群

环境:在window操作系统下使用vmware虚拟机打开linux系统搭建redis集群
镜像:CentOS 6.6
所需软件:redis-3.0.0.tar.gz
ruby
redis-3.0.0.gem

将redis通过xftp传到linux中进行解压安装
tar -zxvf redis-3.0.0.tar.gz
复制一份redis.conf
vi redis.conf
将diaemond no 改为 yes (允许redis服务器在后台运行,否则必须打开一个终端用来开启服务器)

步骤:
打开linux系统终端(可以使用xshell等工具打开)
(有些安装的步骤需要输入yes或y,这里先说明一下,不再赘述)
1.输入yum install ruby (安装ruby脚本语言)
2.yum install rubygems
3.将redis-3.0.0.gem文件通过xftp工具传到linux的root目录下
4.输入命令gen install redis-3.0.0.gem
5. cd /usr/local/ (进入/usr/local目录)
6. mkdir redis-cluster (创建一个目录用来存放redis集群)
7. 进入redis/bin目录,确认bin目录中没有rdb文件,否则会创建集群失败。有rdb就要删除掉,使用命令rm -rf *.rdb
8. cp -r redis/bin/ redis-cluster/redis01 (将redis的bin目录所有东西复制到redis-cluster下并命名为redis01)
9. cd redis-cluster
10. vi redis01/redis.conf (进入redis.conf的编辑模式,按i,把端口号改成7001,搜索找到cluster-enabled yes,将前面的注释的#号去掉,保存退出wq)
11. 将redis01复制6份
cp -r redis01 redis02
cp -r redis01 redis03
cp -r redis01 redis04
cp -r redis01 redis05
cp -r redis01 redis06
12.将每个redis中的redis.conf里的端口号改一下
vi redis02/redis.conf 的端口号改成port 7002
…以此类推,一直改到7006
13.vi redis-cluster-start-all.sh (写一个启动的脚本用来一次性启动全部redis)
写入:
cd redis01
./redis-server redis.conf
cd …
cd redis02
./redis-server redis.conf
cd …
cd redis03
./redis-server redis.conf
cd …
cd redis04
./redis-server redis.conf
cd …
cd redis05
./redis-server redis.conf
cd …
cd redis06
./redis-server redis.conf
cd …

保存退出wq

13.chmod +x redis-cluster-start-all.sh (给sh文件加入权限,否则无法启动)
14. ./redis-cluster-start-all.sh 启动
15. ps aux|grep redis 查看启动状态
16. 此时redis集群并没有真正启动,还需要做一些事情
17. cd …
18. cd redis-3.0.0/
19. cd src
20. ll *.rb
21. 会出现一个redis-trib.rb 此文件是专门使用ruby来搭建redis集群的
22. cp *.rb /usr/local/redis-cluster (将此文件拷贝到/usr/local/redis-cluster下)
23. cd /usr/local/redis-cluster
24. 使用ruby搭建集群
输入 ./redis-trib.rb create --replicas 1 192.168.25.129:7001 192.168.25.129:7002 192.168.25.129:7003 192.168.25.129:7004 192.168.25.129:7005 192.168.25.129:7006
注意:这里的ip需要根据你自己的服务器ip地址进行设置,这里我设置的自己的ip
25.等待几个ok之后,提示输入yes,然后成功搭建redis集群了。
在这里插入图片描述
26.测试一下
cd redis01
./redis-cli -h 192.168.25.129 -p 7004 -c (-c是通过集群连接)
set key1 abc
–>ok
get key1
–>“abc”

在这里插入图片描述

使用eclipse连接redis集群进行测试
1、引入jedis客户端依赖

	<dependency>
			<groupId>redis.clients</groupId>
			<artifactId>jedis</artifactId>
			<version>2.7.2</version>
		</dependency>
<dependency>

2、测试类:

	@Test
	public void testJedisCluster(){
		Set<HostAndPort> nodes=new HashSet<>();
		nodes.add(new HostAndPort("192.168.25.129", 7001));
		nodes.add(new HostAndPort("192.168.25.129", 7002));
		nodes.add(new HostAndPort("192.168.25.129", 7003));
		nodes.add(new HostAndPort("192.168.25.129", 7004));
		nodes.add(new HostAndPort("192.168.25.129", 7005));
		nodes.add(new HostAndPort("192.168.25.129", 7006));
		JedisCluster jedisCluster=new JedisCluster(nodes);
		jedisCluster.set("key6", "testJedisCluster");
		String string = jedisCluster.get("key6");
		System.out.println(string);
	}


输出:
在这里插入图片描述

连接正常。

三、使用spring整合redis集群

1、导入spring相关的依赖
2、加入配置文件applicationContext-rediscluster.xml

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
		http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
		http://www.springframework.org/schema/mvc 
		http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd 
		http://www.springframework.org/schema/context 
		http://www.springframework.org/schema/context/spring-context-3.2.xsd 
		http://www.springframework.org/schema/aop 
		http://www.springframework.org/schema/aop/spring-aop-3.2.xsd 
		http://www.springframework.org/schema/tx 
		http://www.springframework.org/schema/tx/spring-tx-3.2.xsd ">
		
	<bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">
		<constructor-arg>
			<set>
				<bean class="redis.clients.jedis.HostAndPort">
					<constructor-arg name="host" value="192.168.25.129"></constructor-arg>
					<constructor-arg name="port" value="7001"></constructor-arg>
				</bean>
				<bean class="redis.clients.jedis.HostAndPort">
					<constructor-arg name="host" value="192.168.25.129"></constructor-arg>
					<constructor-arg name="port" value="7002"></constructor-arg>
				</bean>
				<bean class="redis.clients.jedis.HostAndPort">
					<constructor-arg name="host" value="192.168.25.129"></constructor-arg>
					<constructor-arg name="port" value="7003"></constructor-arg>
				</bean>
				<bean class="redis.clients.jedis.HostAndPort">
					<constructor-arg name="host" value="192.168.25.129"></constructor-arg>
					<constructor-arg name="port" value="7004"></constructor-arg>
				</bean>
				<bean class="redis.clients.jedis.HostAndPort">
					<constructor-arg name="host" value="192.168.25.129"></constructor-arg>
					<constructor-arg name="port" value="7005"></constructor-arg>
				</bean>
				<bean class="redis.clients.jedis.HostAndPort">
					<constructor-arg name="host" value="192.168.25.129"></constructor-arg>
					<constructor-arg name="port" value="7006"></constructor-arg>
				</bean>
			</set>
		</constructor-arg>
	</bean>	
</beans>

测试类:

@Test
	public void testJedisCluster2(){
		ApplicationContext app=new ClassPathXmlApplicationContext("classpath:applicationContext-rediscluster.xml");
		JedisCluster jedisCluster=(JedisCluster)app.getBean("jedisCluster");
		jedisCluster.set("key7", "hello jedisCluster");
		String string = jedisCluster.get("key7");
		System.out.println(string);
	}

输出:
在这里插入图片描述

连接正常

注意:redis集群是3.0版本加入的特性,3.0以前版本不能使用redis集群。
redis是用C语言编写的,数据存储在内存中,单线程安全,key-value结构,读取速度非常的快,应用场景诸如排行榜,评论,点赞,订单等频繁操作数据库导致性能下降,此时可以使用redis进行存储。

redis有五种数据结构
1、字符串
2、hash散列
3、list列表
4、set集合
5、zset

list列表采用双向链表结构,对于两端新增和删除速度很快,查询时两边快,中间数据较慢。
set集合底层是hash,用的比较少
zet底层也是hash,但是会给每个key增加一个分数,用来排序。性能很好,但是会消耗一定的内存,为了提示性能,这些内存消耗还是很值的。

猜你喜欢

转载自blog.csdn.net/weixin_42982636/article/details/84730028