当前位置: 首页 > news >正文

redis集群简单介绍及其搭建过程

Redis集群

1、哨兵模式

哨兵可以有多个,从服务器也可以有多个,从服务器也可以有多个,在Redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态,如果master节点异常,则会实现主从切换,将某一台的slave作为master,哨兵的配置略微复杂,并且性能和高可用性等各方面表现一般,特别是主从切换的瞬间存在访问瞬断(在这个瞬间无法对外提供服务)的情况

2、高可用集群模式

小集群可以有多个(最多1000个, 1000*10万),Redis集群是一个由多个主从节点群组成的分布式服务器群,它具有复制、高可用、分片特性。Redis集群不需要哨兵也能完成节点移除和故障的转移功能。需要将每个节点设置成集群模式,这种集群模式没有中心节点,可水平扩散。Redis集群的性能和高可用性均优于之前版本的手柄模式,且集群配置十分简单。

客户端如果访问第一个小集群去实现写的功能,然后又访问第二个小集群想要实现读操作,此时Redis集群内部就会从第二个小集群定位到第一个小集群(每个集群是不一样的,因为之前是对第一个小集群进行写操作,所以此时要定位到第一个小集群来实现读操作,否则就会出现数据不一致问题)

Master至少3个(为了选举)

Redis集群搭建

1、首先需要在linux中安装redis

安装完毕后,此时我的redis-server文件在目录/usr/local/bin下

redis-7.2.5在/usr/local/目录下

2、搭建redis:

redis集群至少需要3个master节点,在这里我们搭建3个master,并且给每一个master再搭建一个slave节点,总共是6个节点。步骤如下:

 1)在/usr/local下创建文件夹redis-cluster 然后在其下面分别创建6个文件夹

  mkdir -p /usr/local/redis-clustermkdir 8001 mkdir 8002   mkdir 8003  mkdir 8004  mkdir 8005  mkdir 8006

2)将之前的redis.conf配置文件复制到 8001下 并修改相应的配置

   cp /usr/local/bin/redisconfig/redis.conf  /usr/local/redis-cluster/8001/

   (我之前安装的时候redis.con存放在/usr/local/bin/redisconfig/redis.conf 路径中)

进入到对应的redis.conf文件中修改相应配置 

vi redis.conf

修改配置

 daemonize yes (表示可以后台启动)
port 8001(分别对每个机器的端口号进行设置)
bind 192.168.67.128(必须要绑定当前机器的ip,方便redis集群定位机器,不绑定可能会出现循环查找集群节点机器的情况 我虚拟机的ip是192.i68.68.128 可以通过ifconfig命令查找当前机器的ip)
dir /usr/local/redis-cluster/8001/(指定数据文件的存放位置,必须要指定不同的目录位置,不然会丢失数据)
cluster-enabled yes(启动集群模式)
cluster-config-file nodes-8001.conf(这里800X最好和port对应上)
cluster-node-timeout 5000(超时时间)
appendonly yes(心跳检测,若此时的redis集群出现问题,则其心跳和其他集群的心跳停止,若心跳停止超过5000,则该集群将消失)

3)然后将修改后的redis.conf文件分别复制到各个文件夹下(8002 8003 8004 8005 8006),并将其中的8001改成相应的号

     cp /usr/local/redis-cluster/8001/redis.conf  /usr/local/redis-cluster/8002/cd ..(因为此时在8001文件下)cd 8002vi redis.conf(进入该文件中进行修改):%s/8001/8002/g(批量修改,将8001全部改成8002 
批量修改操作:%s/原字符串/目标字符串/g):wq(保存并退出文本编辑)

8003 8004 8005 8006 同样的方式进行修改

4)分别启动6个redis实例,然后检查是否启动成功

  /usr/local/bin/redis-server /usr/local/redis-cluster/800x/redis.confps -ef | grep redis

5)由于redis集群需要使用ruby命令,所以我们需要安装ruby

   yum install rubyyum install rubygemsgem install redis

6)进入到redis-7.2.5(我安装的redis版本是7.2.5)的src目录下执行命令创建集群

cd /usr/local/redis-7.2.5/src

创建集群

redis-cli --cluster create 192.168.67.128:8001 192.168.67.128:8002 192.168.67.128:8003 192.168.67.128:8004 192.168.67.128:8005 192.168.67.128:8006 --cluster-replicas 1

 1:表示总共的master/总共的slave ==1

7)验证集群

连接任意一个客户端即可 :./redis-cli -c-h -p(-c 表示集群模式)

 例如 /usr/local/bin/redis-cli -c -h 192.168.67.128 -p 800x

进行验证

 cluster info(查看集群信息) cluster nodes(查看节点列表)

 进行数据操作验证 (此时三个master以此使用(redirected))

set name xx  
set name1 yy 
set name2 hh
get name1

关闭集群 

/usr/local/bin/redis-cli -c -h 192.168.67.128 -p 800x shutdown

java中使用redis集群

 1、导入Jedis依赖

2、编写Java代码

import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPoolConfig;import java.io.IOException;
import java.util.HashSet;
import java.util.Set;//Redis集群
public class RedisCluster {public static void main(String [] args) throws IOException {//创建6台服务器并将其放到一个hashset中Set<HostAndPort> JedisClusterNode=new HashSet<HostAndPort>();JedisClusterNode.add(new HostAndPort("192.168.67.128",8001));JedisClusterNode.add(new HostAndPort("192.168.67.128",8002));JedisClusterNode.add(new HostAndPort("192.168.67.128",8003));JedisClusterNode.add(new HostAndPort("192.168.67.128",8004));JedisClusterNode.add(new HostAndPort("192.168.67.128",8005));JedisClusterNode.add(new HostAndPort("192.168.67.128",8006));//创建一个JedisPoolConfig连接池JedisPoolConfig config=new JedisPoolConfig();config.setMaxTotal(100);//maxTotal:资源池中最大的连接数config.setMaxIdle(10);//资源池允许最大空闲的连接数config.setTestOnBorrow(true);//向资源池借用连接时,是否做有效性检测//redis集群的访问类JedisClusterJedisCluster jedisCluster=new JedisCluster(JedisClusterNode,1000,10,config);//服务器、等待时间、重传次数、连接池//测试System.out.println(jedisCluster.set("student","Tom"));System.out.println(jedisCluster.set("age","11"));System.out.println(jedisCluster.get("student"));System.out.println(jedisCluster.get("age"));//关闭jedisCluster.close();}
}

此时redis集群中就已经有了这些数据可以进行查看,在linux中输入 get “student”查看结果

http://www.lryc.cn/news/383115.html

相关文章:

  • linux桌面运维----第五天
  • 【SQL Server数据库】简单查询
  • Docker 从入门到精通(大全)
  • 基于JSP的在线教育资源管理系统
  • 在java中代理http请求,如何避免陷入循环?
  • 国内镜像源网址
  • 合适的智能猫砂盆到底怎么挑?开放式封闭式一次说清!
  • 阿里云开启ssl证书过程记录 NGINX
  • C语言程序设计 9.37 调用随机函数为5x4的矩阵置 100以内的整数,输出该矩阵,求出每行元素之和,并把和的最大的那一行与第一行的元素对调
  • Webpack: 借助 Babel+TS+ESLint 构建现代 JS 工程环境
  • 孩子不想上学,父母应如何教育?“强迫教育”会激起孩子反抗心理
  • Python深度学习技术
  • ECharts 雷达图案例002 - 诈骗性质分析
  • 想远程控制手机,用哪个软件好?
  • 数字内容“遍地开花”,AI技术如何创新“造梦”?
  • MySQL集群如何实现读写分离
  • 一分钟剪辑1000条视频的云微客矩阵,怎么做到的?
  • 简单案例比较Lambda和方法引用的差别
  • 10 个最佳 AI 代码生成器
  • Eureka服务发现机制解析:服务实例的唯一标识
  • 操作系统实训复习笔记(基于命名管道与信号的进程间通信)
  • 数字化转型第三步:数字化业务创新与发展,提升收入和利润
  • SSM爱心捐赠物资维护系统-计算机毕业设计源码09536
  • ​中国9大流域地图SHP数据
  • android Switch/case with R.id.XXXX in android doesn‘t work 错误: 需要常量表达式解决方案
  • vue3-openlayers marker 光晕扩散(光环扩散)(postrender 事件和 render 方法)
  • 新型防勒索病毒方案分享无需依靠病毒库
  • 《Mybatis-Plus》系列文章目录
  • 在Matplotlib中,`xlim()` 函数用于设置x轴的显示范围,原因和作用如下:
  • win7使用vue-cli创建vue3工程