前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >redis集群的搭建和jedis的使用

redis集群的搭建和jedis的使用

作者头像
用户5927264
发布2019-07-31 18:48:03
9710
发布2019-07-31 18:48:03
举报
文章被收录于专栏:OSChinaOSChina

1 集群搭建

代码语言:javascript
复制
`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架构图
1
1

redis-cluster投票:容错

2
2

架构细节:

(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 会根据节点数量大致均等的将哈希槽映射到不同的节点

3
3

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

代码语言:javascript
复制
yum install ruby
yum install rubygems

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

代码语言:javascript
复制
[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脚本搭建集群。

代码语言:javascript
复制
./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

创建关闭集群的脚本:

代码语言:javascript
复制
[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 
代码语言:javascript
复制
[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的操作

代码语言:javascript
复制
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();
	}
	
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 集群搭建
  • 2 jedis的操作
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档