轻松搭建Redis缓存高可用集群

news/2024/3/29 19:09:21/文章来源:https://blog.csdn.net/qq_22075913/article/details/129150423

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1. 安装单机Redis

安装步骤:

1.1 下载redis

官网下载3.0.0版本,之前几的版本不支持集群模式

下载地址:http://download.redis.io/releases/redis-3.0.0.tar.gz

1.2 首先需要安装gcc

yum install gcc 

在这里插入图片描述

1.3 创建目录

 cd /usr/mkdir soft

1.4 拷贝jar包并解压

[root@worker01 ~]# cp redis-3.0.0.tar.gz /usr/soft/
[root@worker01 ~]# cd /usr/soft/
[root@worker01 soft]# ls
redis-3.0.0.tar.gz
[root@worker01 soft]# tar -xf redis-3.0.0.tar.gz
[root@worker01 soft]# ls
redis-3.0.0  redis-3.0.0.tar.gz
[root@worker01 soft]# 

1.5 编译

[root@worker01 soft]# cd redis-3.0.0
[root@worker01 redis-3.0.0]# ls
00-RELEASENOTES  CONTRIBUTING  deps     Makefile   README      runtest          runtest-sentinel  src    utils
BUGS             COPYING       INSTALL  MANIFESTO  redis.conf  runtest-cluster  sentinel.conf     tests
[root@worker01 redis-3.0.0]# make

安装成功如下:

在这里插入图片描述

1.6 创建目录并拷贝redis.conf

[root@worker01 src]# mkdir -p /usr/local/redis/etc
[root@worker01 src]# mkdir -p /usr/local/redis/bin
[root@worker01 redis-3.0.0]# cp /usr/soft/redis-3.0.0/redis.conf /usr/local/redis/etc/
[root@worker01 redis-3.0.0]# 

1.7 拷贝文件到bin目录

[root@worker01 src]# mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server /usr/local/redis/bin
[root@worker01 src]# pwd
/usr/soft/redis-3.0.0/src
[root@worker01 src]# 

1.8 修改后代模式启动

[root@worker01 redis]# cd etc
[root@worker01 etc]# vi redis.conf

在这里插入图片描述

1.9 启动redis

[root@worker01 redis]# bin/redis-server etc/redis.conf

1.10 验证启动redis

[root@worker01 redis]# ps -ef|grep redis
root       8333      1  0 22:11 ?        00:00:00 bin/redis-server *:6379
root       8338   4715  0 22:12 pts/2    00:00:00 grep --color=auto redis
[root@worker01 redis]# 

1.11 进入redis客户端查看

/usr/local/redis/bin/redis-cli

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

2. Redis集群搭建

[root@worker01 local]# mkdir -p /usr/local/redis-cluster
[root@worker01 local]# cd redis-cluster
[root@worker01 redis-cluster]# mkdir 8001
[root@worker01 redis-cluster]# mkdir 8002
[root@worker01 redis-cluster]# mkdir 8003
[root@worker01 redis-cluster]# mkdir 8004
[root@worker01 redis-cluster]# mkdir 8005
[root@worker01 redis-cluster]# mkdir 8006

2.1 修改端口和虚拟主机ip等配置信息

cd /usr/local/redis-cluster/8001/
vi redis.conf
#在redis.conf修改以下内容
port 8001
bind 192.168.179.128
dir /usr/local/redis-cluster/8001/
cluster-enabled yes
cluster-config-file nodes-8001.conf
cluster-node-timeout 5000
appendonly yes

在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

2.2 拷贝配置信息

root@worker01 8001]# cd /usr/local/redis-cluster/8001
[root@worker01 8001]# cp redis.conf ../8002
[root@worker01 8001]# cp redis.conf ../8003
[root@worker01 8001]# cp redis.conf ../8004
[root@worker01 8001]# cp redis.conf ../8005
[root@worker01 8001]# cp redis.conf ../8006

2.3 替换配置文件信息

[root@worker01 ~]# cd /usr/local/redis-cluster/
[root@worker01 redis-cluster]# vi 8002/redis.conf
:%s/8001/8002/g
[root@worker01 redis-cluster]# vi 8003/redis.conf
:%s/8001/8003/g
[root@worker01 redis-cluster]# vi 8004/redis.conf
:%s/8001/8004/g
[root@worker01 redis-cluster]# vi 8005/redis.conf
:%s/8001/8005/g
[root@worker01 redis-cluster]# vi 8006/redis.conf
:%s/8001/8006/g

2.4 启动redis-server

[root@worker01 redis-cluster]# /usr/local/redis/bin/redis-server /usr/local/redis-cluster/8001/redis.conf
[root@worker01 redis-cluster]# /usr/local/redis/bin/redis-server /usr/local/redis-cluster/8002/redis.conf
[root@worker01 redis-cluster]# /usr/local/redis/bin/redis-server /usr/local/redis-cluster/8003/redis.conf
[root@worker01 redis-cluster]# /usr/local/redis/bin/redis-server /usr/local/redis-cluster/8004/redis.conf
[root@worker01 redis-cluster]# /usr/local/redis/bin/redis-server /usr/local/redis-cluster/8005/redis.conf
[root@worker01 redis-cluster]# /usr/local/redis/bin/redis-server /usr/local/redis-cluster/8006/redis.conf

在这里插入图片描述

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

yum install ruby
yum install rubygems
#本地安装
gem install -l redis-3.0.0.gem

在这里插入图片描述

在redis3的安装目录下执行redis-trib.rb 命令创建整个redis的集群

cd /usr/soft/redis-3.0.0/src
./redis-trib.rb create --replicas 1 192.168.179.128:8001 192.168.179.128:8002 192.168.179.128:8003 192.168.179.128:8004 192.168.179.128:8005 192.168.179.128:8006

在这里插入图片描述

验证集群

在这里插入图片描述

[root@worker01 src]# /usr/local/redis/bin/redis-cli -c -h 192.168.179.128 -p 8001
127.0.0.1:8001> cluster info
127.0.0.1:8001> cluster nodes

在这里插入图片描述

192.168.179.128:8001> set name zhuge
-> Redirected to slot [5798] located at 192.168.179.128:8002
OK
192.168.179.128:8002> get name
"zhuge"
192.168.179.128:8002> set name1 zhuge2
-> Redirected to slot [12933] located at 192.168.179.128:8003
OK
192.168.179.128:8003> get name1
"zhuge2"
192.168.179.128:8003> set name2 zhuge3
-> Redirected to slot [742] located at 192.168.179.128:8001
OK
192.168.179.128:8001> get name2
"zhuge3"
192.168.179.128:8001> get name1
-> Redirected to slot [12933] located at 192.168.179.128:8003
"zhuge2"
192.168.179.128:8003>

在这里插入图片描述

3. Java操作Redis集群

借助redis的java客户端redis可以操作以上集群

  <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.9.0</version></dependency>
package com.itheima.redis;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;public class RedisCluster {public static void main(String[] args) throws IOException {Set<HostAndPort> jedisclusterNode=new HashSet<HostAndPort>();jedisclusterNode.add(new HostAndPort("192.168.179.128",8001));jedisclusterNode.add(new HostAndPort("192.168.179.128",8002));jedisclusterNode.add(new HostAndPort("192.168.179.128",8003));jedisclusterNode.add(new HostAndPort("192.168.179.128",8004));jedisclusterNode.add(new HostAndPort("192.168.179.128",8005));jedisclusterNode.add(new HostAndPort("192.168.179.128",8006));JedisPoolConfig config=new JedisPoolConfig();config.setMaxTotal(100);config.setMaxIdle(10);config.setTestOnBorrow(true);JedisCluster jedisCluster=new JedisCluster(jedisclusterNode,6000,10,config);System.out.println(jedisCluster.set("student","aaron"));System.out.println(jedisCluster.set("age","18"));System.out.println(jedisCluster.get("student"));System.out.println(jedisCluster.get("age"));//jedisCluster.close();}
}

运行java程序查看

在这里插入图片描述

命令行测试

在这里插入图片描述

关闭8001 redis服务并查看

[root@worker01 src]# /usr/local/redis/bin/redis-cli -c -h 192.168.179.128 -p 8001 shutdown
[root@worker01 src]# ps -ef|grep redis

在这里插入图片描述
由图可知8001 已经设置为 master fail, 8004重新变成主节点

[root@worker01 src]# /usr/local/redis/bin/redis-cli -c -h 192.168.179.128 -p 8002
192.168.179.128:8002> cluster nodes

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_72634.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GitHub标星30K+的Java面试八股文长啥样?

2023年的互联网行业竞争越来越严峻&#xff0c;面试也是越来越难&#xff0c;一直以来我都想整理一套完美的面试宝典&#xff0c;奈何难抽出时间&#xff0c;这套1000道的Java面试手册我整理了整整1个月&#xff0c;上传到Git上目前star数达到了30K 一、32 道 MySQL 面试题 1&…

DACS: Domain Adaptation via Cross-domain Mixed Sampling 学习笔记

DACS介绍方法Naive MixingDACSClassMix![在这里插入图片描述](https://img-blog.csdnimg.cn/ca4f83a2711e49f3b754ca90d774cd50.png)算法流程实验结果反思介绍 近年来&#xff0c;基于卷积神经网络的语义分割模型在众多应用中表现出了显著的性能。然而当应用于新的领域时&…

乐友商城学习笔记(一)

SpringCloud 什么是SpringCloud 在SpringBoot基础上构建的微服务框架固定步骤 1.引入组件的启动器2.覆盖默认配置3.在引导类上添加相应的注解 eureka 注册中心&#xff0c;服务的注册与发现服务端 1.引入服务器启动器&#xff1a;eureka-server2.添加了配置 spring.applicati…

leetcode 21~30 学习经历

leetcode 21~30 学习经历21. 合并两个有序链表22. 括号生成23. 合并K个升序链表24. 两两交换链表中的节点25. K 个一组翻转链表26. 删除有序数组中的重复项27. 移除元素28. 找出字符串中第一个匹配项的下标29. 两数相除30. 串联所有单词的子串小结21. 合并两个有序链表 将两个升…

opencv-StereoBM算法流程(二)

OpenCV BM对于处理非畸变的立体图像, 主要有以下 3 个步骤:1. 预处理滤波: 使图像亮度归一化并加强图像纹理2. 立体匹配: 沿着水平极线用 SAD 窗口进行匹配搜索3. 再滤波: 去除坏的匹配点.匹配之后, 如果左右视差检查使能了 disp12MaxDiff > 0, 还有使用cv::validateDispari…

复习知识点三:做人不能半途而废,就算躺平也要躺最舒服的那张床

目录 运算符​编辑 键盘录入: 练习:键盘输入数字并求和 练习: 算术运算符 隐式转换(自动类型提升) 强制转换 练习1: 字符串的 "" 操作 ​编辑 练习 1: 练习2: 练习3: 自增自减运算符 赋值运算符 关系运算符(比较运算符)的分类 练习: 逻辑运算符 短路逻辑运…

qt qchart学习

Qt Charts主要由QChartView、QChart、QLegend图例、坐标轴(由QAbstractAxis子类实现)、**数据源(由QAbstractSeries子类实现)**等组成使用QChart的前期准备1. Qt5.9及以上版本&#xff1b;2. .pro文件中添加QT charts3. 在使用QChart的各个控件之前&#xff0c;引用头文件并必…

Vulnhub靶场----4、DC-4

文章目录一、环境搭建二、渗透流程三、思路总结一、环境搭建 DC-4下载地址&#xff1a;https://download.vulnhub.com/dc/DC-4.zip kali&#xff1a;192.168.144.148 DC-4&#xff1a;192.168.144.152 二、渗透流程 端口扫描&#xff1a;nmap -T5 -p- -sV -sT -A 192.168.144.1…

OSI模型和网络协议简介

文章目录一、OSI七层模型1.1什么是OSI七层模型&#xff1f;1.2这个网络模型究竟是干什么呢&#xff1f;二、TCP/IP协议三、常见协议四、物联网通信协议以及MQTT4.1 物联网七大通信协议4.2 MQTT特性一、OSI七层模型 1.1什么是OSI七层模型&#xff1f; 我们需要了解互联网的本质…

MySQL进阶篇之MySQL索引

今天主要学习MySQL索引&#xff0c;不过主要是使用Linux系统使用MySQL&#xff0c;主要是先在Linux环境下按照MySQL&#xff0c;然后演示索引的相关操作&#xff0c;介绍了索引的底层结构&#xff0c;索引的分类及语法&#xff0c;索引的性能分析&#xff0c;索引的使用规则&am…

《爆肝整理》保姆级系列教程python接口自动化(二十一)--unittest简介(详解)

简介 前边的随笔主要介绍的requests模块的有关知识个内容&#xff0c;接下来看一下python的单元测试框架unittest。熟悉 或者了解java 的小伙伴应该都清楚常见的单元测试框架 Junit 和 TestNG&#xff0c;这个招聘的需求上也是经常见到的。python 里面也有单元 测试框架-unitt…

数据结构_ 堆结构与堆排序(c++ 实现 + 完整代码 )

堆结构与堆排序 文章目录堆结构与堆排序引入堆堆结构所满足的数学特性准备代码----------- 往堆中插入元素----------- 删除堆顶堆排序构建完整代码及测试动态分配版本非动态版本引入堆 二叉树 具有左孩子与右孩子的最普通的二叉树。 满二叉树 特殊的二叉树&#xff1a;每个节…

HTML课堂笔记

HTML 课堂笔记 文章目录相关概念code我的第一个html页面基本标签相关概念 1、什么是HTML&#xff1f; Hyper Text Markup Language 超文本标记语言 超文本&#xff1f;超级文本&#xff0c;例如流媒体&#xff0c;声音、视频、图片等。 标记语言&#xff1f;这种语言是由大量…

【Git】使用Git上传项目到远程仓库Gitee码云步骤详解

电脑里存放了很多项目&#xff0c;有的备份&#xff0c;有的没备份&#xff0c;如果不仔细分类管理的话&#xff0c;时间一长&#xff0c;到时看到那就会觉得非常杂乱&#xff0c;很难整理&#xff0c;这里有一个叫源代码托管&#xff0c;用过它的都知道&#xff0c;方便管理和…

【7/101】101次面试之测试技术面试题

01、什么是兼容性测试&#xff1f;兼容性测试侧重哪些方面&#xff1f;答&#xff1a;兼容性测试是一种软件测试类型&#xff0c;它的主要目的是确保一个应用程序在不同的操作系统、不同的浏览器、不同的设备、不同的网络环境等各种环境下能够正常运行&#xff0c;并且不会产生…

【并发编程十八】线程局部存储(TLS)

【并发编程十八】线程局部存储(TLS&#xff09;一、定义二、线程局部存储的实现1、windows系统2、linux系统3、c11三、windows系统1、线程局部存储是分块的&#xff08;TLS_MINIMUM_AVAILABLE&#xff09;2、获得索引3、通过索引&#xff1a;存储数据、取出数据4、释放索引和内…

UI自动化测试、接口测试等自动化测试策略

今天跟大家介绍UI测试、接口测试、单元测试主要内容&#xff0c;以及每种测试花费时间讨论。 UI测试【Selenium】 UI测试是最接近软件真实用户使用行为的测试类型。通常是模拟真实用户使用软件的行为&#xff0c;即模拟用户在软件界面上的各种操作&#xff0c;并验证这些操作对…

从0探索NLP——神经网络

从0探索NLP——神经网络 1.前言 一提人工智能&#xff0c;最能想到的就是神经网络&#xff0c;但其实神经网络只是深度学习的主要实现方式。 现在主流的NLP相关任务、模型大都是基于深度学习也就是构建神经网络实现的&#xff0c;所以这里讲解一下神经网络以及简单的神经网络…

Anaconda和PyCharm的一些安装问题和命令

今天更新了Windows上的Anaconda到2.3.2&#xff0c;PyCharm到2022.3。 ——发现是纯纯的犯贱orz。出了一堆问题。在这里记录一下供后来者参考。 Anaconda安装 将.\anaconda3\Scripts 和.\anaconda3\Library\bin添加到系统环境变量中。 新建环境的目录在.\anaconda3\envs下 N…

【黑盒模糊测试】路由器固件漏洞挖掘实战--AFL++ qemu_mode

前言 很久之前就想写AFL++的qemu_mode了,只是模糊测试专题的文章有些过于耗费时间,加上工作原因导致一直搁置。最近需要出差会用到黑盒模糊测试,所以就当做复习一遍,我记得Fuzzing 101也有一个qemu_mode的练习,有空的话下一篇文章更新吧~ 编写不易,如果能够帮助到你,希望…