专栏首页OSChinaredis集群的搭建和jedis的使用

redis集群的搭建和jedis的使用

1 集群搭建

`1.创建磁盘 
mkdir redis-cluster

2.复制redis文件
cp redis/bin redis-cluster/redis01 -r

3.进入redis01文件目录
cd redis-cluster/redis01

4.删除dump.rdb 和 appendonly.aof文件
rm -f dump.rdb

5 编辑redis.conf 文件
vim redis.conf
改 port 端口为:7001
打开cluster-enabled yes 

6 复制多份redis01文件 并改redis.conf文件的port端口为 7002  。。。。

7 启动redis多个服务器
./redis-all.sh

8 查看redis启动情况
ps aux|grep redis

9. 进入redis源码目录,复制到redis集群中去
/root/redis-3.0.0/src
cp redis-trib.rb  /usr/local/redis-cluster/

10.安装rb 运行环境
10.1、使用ruby脚本搭建集群。需要ruby的运行环境。
安装ruby
yum install ruby
yum install rubygems

10.2 按alt+p 打开文件传输列表 把redis-3.0.0.gem 传入服务器

cp redis-3.0.0.gem /usr/local/redis-cluster/

cd /usr/local/redis-cluster/

10.3 安装 redis-3.0.0.gem
 gem install redis-3.0.0.gem 

10.4 启动reids-trib.rb 文件
./redis-trib.rb create --replicas 1 192.168.36.30:7001 192.168.36.30:7002 192.168.36.30:7003 192.168.36.30:7004 192.168.36.30:7005 192.168.36.30:7006

10.5 然后点击yes

11. 测试redis集群的使用

redis01/redis-cli -p 7004 -c

set a 123
get a
  1. Redis集群的搭建 5.1. redis-cluster架构图

redis-cluster投票:容错

架构细节:

(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.

(2)节点的fail是通过集群中超过半数的节点检测失效时才生效.

(3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可

(4)redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->value

Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点

5.2. Redis集群的搭建 Redis集群中至少应该有三个节点。要保证集群的高可用,需要每个节点有一个备份机。 Redis集群至少需要6台服务器。 搭建伪分布式。可以使用一台虚拟机运行6个redis实例。需要修改redis的端口号7001-7006 5.2.1. 集群搭建环境 1、使用ruby脚本搭建集群。需要ruby的运行环境。 安装ruby

yum install ruby
yum install rubygems

2、安装ruby脚本运行使用的包。

[root@localhost ~]# gem install redis-3.0.0.gem 
Successfully installed redis-3.0.0
1 gem installed
Installing ri documentation for redis-3.0.0...
Installing RDoc documentation for redis-3.0.0...
[root@localhost ~]# 

[root@localhost ~]# cd redis-3.0.0/src
[root@localhost src]# ll *.rb
-rwxrwxr-x. 1 root root 48141 Apr  1  2015 redis-trib.rb

5.2.2. 搭建步骤 需要6台redis服务器。搭建伪分布式。 需要6个redis实例。 需要运行在不同的端口7001-7006

第一步:创建6个redis实例,每个实例运行在不同的端口。需要修改redis.conf配置文件。配置文件中还需要把cluster-enabled yes前的注释去掉。

第二步:启动每个redis实例。 第三步:使用ruby脚本搭建集群。

./redis-trib.rb create --replicas 1 192.168.25.153:7001 192.168.25.153:7002 192.168.25.153:7003 192.168.25.153:7004 192.168.25.153:7005 192.168.25.153:7006

创建关闭集群的脚本:

[root@localhost redis-cluster]# vim shutdow-all.sh
redis01/redis-cli -p 7001 shutdown
redis01/redis-cli -p 7002 shutdown
redis01/redis-cli -p 7003 shutdown
redis01/redis-cli -p 7004 shutdown
redis01/redis-cli -p 7005 shutdown
redis01/redis-cli -p 7006 shutdown
[root@localhost redis-cluster]# chmod u+x shutdow-all.sh 
[root@localhost redis-cluster]# ./redis-trib.rb create --replicas 1 192.168.25.153:7001 192.168.25.153:7002 192.168.25.153:7003 192.168.25.153:7004 192.168.25.153:7005  192.168.25.153:7006

2 jedis的操作

package com.shi.page;

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

import org.junit.Test;

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

public class JedisTest {
	
	//jedis连接redis的基本使用
	@Test
	public void testJedis()throws Exception{
		//1创建一个jedis对象,参数 host,port
		Jedis jedis=new Jedis("192.168.36.30",6379);
		//2直接使用jedis操作reids,所有jedis操作都对应一个方法
		jedis.set("abc", "zhangsan");
		String abc=jedis.get("abc");
		System.out.println("abc="+abc);
		//3 关闭连接
		jedis.close();
	}
	
	//使用JedisPool连接池来连接redis
	@Test
	public void testJedisPool()throws Exception{
		//1 创建一个连接池对象,俩个参数host,port
		JedisPool jedisPool=new JedisPool("192.168.36.30",6379);
		//2 从连接池获得一个连接,就是一个jedis对象
		Jedis jedis=jedisPool.getResource();
		//3 使用jedis操作redis
		jedis.set("shi", "shiye");
		String shi=jedis.get("shi");
		System.out.println("shi="+shi);
		//4 关闭连接,每次使用完毕之后关闭连接,连接迟回收资源
		jedis.close();
		//5 关闭连接池
		jedisPool.close();
	}
	
	//使用jedisCluster连接redis集群
	@Test
	public void testJedisCluster()throws Exception{
		/*1 创建一个jedisCluster对象,有一个参数nodes是一个set类型,
			set中包含若干个hostAndPort对像*/
		Set<HostAndPort> nodes=new HashSet<HostAndPort>();
			nodes.add(new HostAndPort("192.168.36.30", 7001));
			nodes.add(new HostAndPort("192.168.36.30", 7002));
			nodes.add(new HostAndPort("192.168.36.30", 7003));
			nodes.add(new HostAndPort("192.168.36.30", 7004));
			nodes.add(new HostAndPort("192.168.36.30", 7005));
			nodes.add(new HostAndPort("192.168.36.30", 7006));
		JedisCluster jedisCluster=new JedisCluster(nodes);
		
		//2 直接使用jedisCluster对象操作reids
		jedisCluster.set("test", "123");
		String test=jedisCluster.get("test");
		System.out.println("test="+test);
		
		//3 关闭jedisCluster对像
		jedisCluster.close();
	}
	
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • FreeMarker数据格式

    用户5927264
  • 线上问题排查

    用户5927264
  • Shiro 整合 Spring 第一次

    4.1 在applicationContext-shiro.xml文件中配置 凭证匹配器

    用户5927264
  • JMeter访问redis缓存

    第二次工业革命在20世纪初, 基于劳动分工的电力驱动时代, 人类大量使用流水线的电气化时代, 20世纪70年代 电子技术,工业机器人的使用提升了生产效率...

    louiezhou001
  • Docker -v 对挂载的目录没有权限 Permission denied

    可以通过docker inspect命令,查看容器“Mounts”那一部分,我们可以得到这个问题的答案。

    hbbliyong
  • ubuntu redis 集群安装,超简单多图细腻操作

    lvgo
  • Linux下Redis开机自启(Centos)

    Coxhuang
  • PHP+Redis 商品超卖

    码缘
  • Linux下 php7安装redis的方法

    以上所述是小编给大家介绍的Linux下 php7安装redis的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家...

    砸漏
  • Linux下 php7安装redis的办法

    ??? 进入安装目录打开 cd redis-stable/src/redis-cli

    砸漏

扫码关注云+社区

领取腾讯云代金券