redis学习笔记 -- day03 集群搭建

一、搭建Ruby环境

redis集群管理工具redis-trib.rb依赖ruby环境,首先需要安装ruby环境。

1、安装ruby

[root@localhost bin]# yum install ruby

[root@localhost bin]# yum install rubygems

2、上传ruby和redis的接口工程redis-3.0.0.gem到Linux系统中

[root@localhost redis]# gem install redis-3.0.0.gem 

3、创建redis-cluster集群文件夹

[root@localhost /]# mkdir /usr/local/redis-cluster -p

4、进入redis安装目录,拷贝redis-trib.rb文件拷入redis-cluster中

redis-trib.rb是搭建redis集群的脚本文件

[root@localhost etc]# cp /usr/local/java/redis-3.0.0/src/redis-trib.rb /usr/local/redis-cluster/

二、搭建Resis集群

1、规划环境

redis集群最少需要3台主机,每一台主机再配置一台从机,则需要6台机器。6台机器对应的端口分别是7001~7006

2、创建7001的文件夹,并将redis/bin目录拷入7001文件夹

[root@localhost redis-cluster]# cp ../redis/bin/ ./7001 -r

3、进入7001文件夹,删除 *.rdb  *.aof  nodes.conf文件(Redis节点必须是空节点,需要删除这些文件)

4、修改redis.conf配置文件

(1)、开启守护进程


(2)、修改端口为7001


(3)、启动集群


5、复制7001,按照以上步骤进行修改配置文件


6、创建启动脚本



7、给脚本设置启动权限

[root@localhost redis-cluster]# chmod u+x start-all.sh 


8、执行脚本,启动redis,查看进程

9、创建集群
[root@localhost redis-cluster]# ./redis-trib.rb create --replicas 1 192.168.200.134:7001 192.168.200.134:7002 192.168.200.134:7003 192.168.200.134:7004 192.168.200.134:7005 192.168.200.134:7006 


三、连接集群

[root@localhost 7001]# ./redis-cli -h 192.168.200.134 -p 7001 -c
说明:如果客户端可服务端在同一台机器,-h 命令可以不执行,但是 -p 命令任何时候都要执行  -c命令为启动集群的时候必须加的命令

注意:每次存储数值,会根据算法,将数据存储到不同的节点上




四、通过java代码连接集群

1、添加依赖


2、编写配置文件

<?xml version="1.0" encoding="UTF-8"?>
<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"
	xmlns:task="http://www.springframework.org/schema/task"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
		http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 
		http://www.springframework.org/schema/mvc 
		http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd 
		http://www.springframework.org/schema/context 
		http://www.springframework.org/schema/context/spring-context-4.0.xsd 
		http://www.springframework.org/schema/aop 
		http://www.springframework.org/schema/aop/spring-aop-4.0.xsd 
		http://www.springframework.org/schema/tx 
		http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
		http://www.springframework.org/schema/task
   		http://www.springframework.org/schema/task/spring-task-4.0.xsd">

	<!-- Jedis连接池 -->
	<bean class="redis.clients.jedis.JedisPool">
		<constructor-arg name="host" value="192.168.200.134" />
		<constructor-arg name="port" value="6379" />
	</bean>

	<!-- Jedis集群 -->
	<bean class="redis.clients.jedis.JedisCluster">
		<constructor-arg name="nodes">
			<set>
				<bean class="redis.clients.jedis.HostAndPort">
					<constructor-arg name="host" value="192.168.200.134" />
					<constructor-arg name="port" value="7001" />
				</bean>
				<bean class="redis.clients.jedis.HostAndPort">
					<constructor-arg name="host" value="192.168.200.134" />
					<constructor-arg name="port" value="7002" />
				</bean>
				<bean class="redis.clients.jedis.HostAndPort">
					<constructor-arg name="host" value="192.168.200.134" />
					<constructor-arg name="port" value="7003" />
				</bean>
				<bean class="redis.clients.jedis.HostAndPort">
					<constructor-arg name="host" value="192.168.200.134" />
					<constructor-arg name="port" value="7004" />
				</bean>
				<bean class="redis.clients.jedis.HostAndPort">
					<constructor-arg name="host" value="192.168.200.134" />
					<constructor-arg name="port" value="7005" />
				</bean>
				<bean class="redis.clients.jedis.HostAndPort">
					<constructor-arg name="host" value="192.168.200.134" />
					<constructor-arg name="port" value="7006" />
				</bean>
			</set>
		</constructor-arg>
	</bean>

</beans>

3、编写测试代码

package test;

import java.util.HashSet;
import java.util.Set;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPool;

public class TestJedis {

	private String host = "192.168.200.134";
	private int port = 6379;

	/**
	 * 单机版redis
	 */
	@Test
	public void testJedis() {
		// 创建jedis实例
		Jedis jedis = new Jedis(host, port);
		// 调用jedis的api方法存储或者获取数据
		jedis.set("s1", "444");
		System.out.println(jedis.get("s1"));
		// 释放资源
		jedis.close();
	}

	/**
	 * 使用连接池
	 */
	@Test
	public void testJedisPool() {
		// 创建jedis实例
		JedisPool pool = new JedisPool(host, port);
		// 获取jedis实例
		Jedis jedis = pool.getResource();
		// 调用方法存储
		System.out.println(jedis.get("s1"));
		// 释放资源
		jedis.close();
		pool.close();
	}

	/**
	 * 集群版redis
	 */
	@Test
	public void testClusterRedis() {
		Set<HostAndPort> nodes = new HashSet<>();
		nodes.add(new HostAndPort(host, 7001));
		nodes.add(new HostAndPort(host, 7002));
		nodes.add(new HostAndPort(host, 7003));
		nodes.add(new HostAndPort(host, 7004));
		nodes.add(new HostAndPort(host, 7005));
		nodes.add(new HostAndPort(host, 7006));
		// 创建JedisCluster实例
		JedisCluster cluster = new JedisCluster(nodes);
		// 调用api
		System.out.println(cluster.get("s3"));
		// 释放资源
		cluster.close();
	}

	/**
	 * 整合spring
	 */
	@Test
	public void testSpirngJedisPool() {
		ApplicationContext app = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-redis.xml");
		JedisPool pool = app.getBean(JedisPool.class);
		// 获取jedis实例
		Jedis jedis = pool.getResource();
		// 调用方法存储
		System.out.println(jedis.get("s1"));
		// 释放资源
		jedis.close();
	}
	
	/**
	 * 测试集群
	 */
	@Test
	public void testCluster(){
		ApplicationContext app = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-redis.xml");
		JedisCluster cluster = app.getBean(JedisCluster.class);
		//调用方法
		System.out.println(cluster.get("s2"));
	}
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值