redis集群
文章目录
- redis集群
- 一、集群简介
- 现状问题
- 集群架构
- 集群作用
- 二、Cluster集群结构搭建
- 搭建方式
- Cluster配置
- 三、配置redis集群实例
- 1.安装配置redis
- 2.安装配置工具
- 3.启动每一个节点并执行集群构建脚本
- 4.测试一下
- 四、使用idea连接redis集群
一、集群简介
现状问题
业务发展过程中遇到的峰值瓶颈
- redis提供的服务OPS可以达到10万/秒,当前业务OPS已经达到10万/秒
- 内存单机容量达到256G,当前业务需求内存容量1T
- 使用集群的方式快速解决上述问题
集群架构
- 集群就是使用网络将若干台计算机联通起来,并提供统一的管理方式,使其对外呈现单机的服务效果
集群作用
- 分散单台服务器的访问压力
- 分散单台服务器的存储压力,实现可拓展性
- 降低单台服务器宕机带来的业务灾难
二、Cluster集群结构搭建
搭建方式
- 原生命令(单条命令)
- 创建服务器(3主3从)
- 建立通信(Meet)
- 分槽(slot)
- 搭建主从(master-slave)
- 工具安装(批处理)
Cluster配置
- 配置节点
cluster-enableed yes|no
- cluster配置文件名,该文件属于自动生成,仅用于快速查找文件并查询文件内容
cluster-config-file <filename>
- 节点服务响应超时时间,用于判断该节点是否下线或切换从节点
cluster-node-timeout <millseconds>
- master连接slave最小数量
cluster-migration-barrier <count>
三、配置redis集群实例
所需软件:Redis、Ruby语言环境、redis的Ruby驱动redis-xxxx.gem
1.安装配置redis
①创建文件夹
- 百度直接下载redis压缩包
- 创建一个redis集群的文件夹
- 将下载后的redis压缩包解压至redis集群的文件夹,并复制5份,一共6份,作为三主三从集群
②修改端口
- 分别打开这6个redis的redis.windows.conf文件,修改port为6379、6380、6381、6382、6383和6384。
③配置密码
- 分别设置
requirepass 123456
和masterauth 123456
④修改cluster配置
- 将
cluster-enabled yes
前面#号删掉 - 将
cluster-config-file nodes-6379.conf
前面#号删掉,对应端口命名 - 将
cluster-node-timeout 15000
前面的#号删掉 - 将
appendonly no
设置为appendonly yes
解释:
如果cluster-enabled 不为yes, 那么在使用JedisCluster集群代码获取的时候,会报错。
cluster-node-timeout 调整为 15000,那么在创建集群的时候,不会超时。 cluster-config-file
nodes-6379.conf 是为该节点的配置信息,这里使用 nodes-端口.conf命名方法。服务启动后会在目录生成该文件。
⑤新建一个启动startRedis.bat文件
title Redis-6379
redis-server redis.windows.conf
⑥分发redis.windows.conf配置文件和startRedis.bat文件
- 将这两个文件分发至另外5个文件夹
- 修改redis.windows.conf里面的
port
对应端口 - 修改redis.windows.conf里面的
cluster-config-file nodes-6379.conf
对应端口 - 修改startRedis.bat文件的title对应端口
2.安装配置工具
在redis集群的文件夹下新建一个工具文件夹
①下载安装1、rubyinstaller-3.0.1-1-x64.exe
- 傻瓜式安装,挑选好安装路径即可,一直下一步
②下载安装Rubygems
- 下载解压之后,打开cmd至该目录下
D:\redis\redis集群\工具\安装路径\rubygems\rubygems-3.2.17>
- 执行
ruby setup.rb
- 执行
gem install redis
3.启动每一个节点并执行集群构建脚本
①启动redis
- 分别启动6个startRedis.bat文件
发现对应的appendonly.aof文件和nodes-端口.conf都已经生成。 - 打开一个端口文件目录下打开cmd
D:\redis\redis集群\Redis-x64-5.0.10-6379-6379>
- 执行
redis-cli --cluster create 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 --cluster-replicas 1 -a 123456
- 在出现 Can I set the above configuration? (type ‘yes’ to accept): 请确定并输入 yes 。
看到执行成功的提示语句。
解释下:
cluster-replicas是指以集群的方式
1 是指数据库数量
4.测试一下
在随便6个文件夹下打开cmd运行redis-cli -h 127.0.0.1 -p 6379 -c -a 123456
输入dbsize
查询 记录总数
输入cluster info
可以从客户端的查看集群的信息
输入cluster nodes
查询每个节点的信息,可以查看主从关系
输入info replication
可以查询该端口的角色和地址等信息
解释一下
使用Redis客户端Redis-cli.exe来查看数据记录数,以及集群相关信息 命令 redis-cli –c –h ”地址” –p
“端口号” ; c 表示集群 -a 认证
四、使用idea连接redis集群
测试代码如下:
package com.hkd.test1;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPoolConfig;
import java.util.LinkedHashSet;
import java.util.Set;
public class test1 {
public static void main(String[] args) {
Set<HostAndPort> nodes=new LinkedHashSet<>();
//一般选用slaveof从IP+端口进行增删改查,不用master
/*nodes.add(new HostAndPort("127.0.0.1",6379));
nodes.add(new HostAndPort("127.0.0.1",6380));
nodes.add(new HostAndPort("127.0.0.1",6381));*/
nodes.add(new HostAndPort("127.0.0.1",6382));
nodes.add(new HostAndPort("127.0.0.1",6383));
nodes.add(new HostAndPort("127.0.0.1",6384));
//Jedis连接池配置
JedisPoolConfig jedisPoolConfig=new JedisPoolConfig();
//最大空闲连接数,默认8个
jedisPoolConfig.setMaxIdle(500);
//最大连接数,默认8个
jedisPoolConfig.setMaxTotal(500);
//设置最小空闲连接数,默认0
jedisPoolConfig.setMinIdle(0);
// 获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间, 默认-1
jedisPoolConfig.setMaxWaitMillis(2000);//设置2秒
//对拿到的connection进行validateObject校验
jedisPoolConfig.setTestOnBorrow(true);
//未设置auth Password
//JedisCluster jedis = new JedisCluster(nodes, jedisPoolConfig);
//设置auth Password
JedisCluster jedis = new JedisCluster(nodes, 5000, 3000, 10, "123456", new JedisPoolConfig());
jedis.set("mykey", "测试");
System.out.println(jedis.get("mykey"));
}
}