redis分片java实践、redis哨兵机制实现、redis集群搭建
redis分片java实践
linux安装redis
https://mp.csdn.net/mp_blog/creation/editor/134864302复制redis.conf配置文件成redis1.conf、redis2.conf、redis3.conf
修改redis的端口信息和存pid文件的路径。存pid文件的路径只要不同就行了,没什么特别要求。


指定配置文件启动redis
redis-server redis1.conf
redis-server redis2.conf
redis-server redis3.conf

查看进程,看看启动起来了嘛
ps -ef | grep redis
java整合redis实现分片
public class redisShares {public static void main(String[] args) {share();}public static void share(){List<JedisShardInfo> shares=new ArrayList<>();shares.add(new JedisShardInfo("152.136.167.51",7000));shares.add(new JedisShardInfo("152.136.167.51",7001));shares.add(new JedisShardInfo("152.136.167.51",7002));ShardedJedis jedis = new ShardedJedis(shares);jedis.setnx("xxx","6666");System.out.println(jedis.get("xxx"));}}
进入不同的redis客户端,可以查到上面存的数据被分开存储了。



redis哨兵机制实现
1.主从节点挂载
在初始的redis环境下:拷贝redis.conf文件
(1)复制三份redis.conf并修改端口分别为7000、7001、7002

(2)修改pid文件的路径

(3) 在存redis.conf配置文件的路径下,启动redis服务
redis-server redis.conf

(4)查看redis启动了吗
ps -ef | grep redis

(5)挂载从节点到主节点上
redis-cli -p 7001
#slaveof 主节点的ip 主结点的端口
slaveof 127.0.0.1 7000
exitredis-cli -p 7002
slaveof 127.0.0.1 7000
exit
(6)进入主节点客户端查看挂载上了嘛
redis-cli -p 7000
info replication

可以看到另外两个节点已经挂载上去了。
2. 配置哨兵
哨兵是一个单独的进程,用来监控主从节点,做故障转移。
sentinel.conf是哨兵配置的默认配置文件,我们将这个文件复制一份(防止改错)
要设置几个哨兵就复制几份配置文件,完成下面的配置。
修改sentinel.conf
(1)哨兵进程的端口,如果设置多个哨兵,端口要不一致

(2)开启守护进程,运行后台启动,不占用窗口

(3)哨兵的日志文件

(4)设置主节点信息
设置主从结构中的主节点的ip和端口,1代表有1个哨兵认为主节点不可用了就换主节点。
注意:这个ip和上面主从节点挂载使用的ip必须一致,不能一个是服务器ip,一个是127.0.0.1或者localhost

(5)设置心跳时间

当哨兵发出ping后节点多久没有回应就被判定为挂掉了。阈值设置。
(6)配置同步
此配置值在发生故障时,最多可以有几个slave同时对新的master进行同步,这个数字越小完成故障处理的时间越短

(7)关闭保护模式
如果启动保护模式而且没有密码或者没有设置bind,只能接收本机的访问(保护模式是一种保护,但是bind和密码优先级更高)

3.启动哨兵进行
复制sentinel配置文件,修改哨兵端口。启动三个哨兵。
redis-sentinel sentinel1.conf
redis-sentinel sentinel2.conf
redis-sentinel sentinel3.conf

进入哨兵客户端,查看哨兵的信息,可以看到有两个从节点 ,三个哨兵
模拟主节点宕机

我们再次进入哨兵进程查看,发现已经更换主节点
redis-cli -p 27000
INFO sentinel

如果此时将宕机的结点再启动,就可以看到它变成了从节点。

redis集群搭建
1.集群配置文件修改
创建文件夹cluster,创建文件夹7000 7001 7002 7003 7004 7005
复制redis.conf配置文件,到每个文件夹中。
修改7000中的配置文件:
(1)注释掉允许访问的ip地址

(2)关闭保护模式:运行别的主机访问

(3)修改redis启动的客户端端口

(4)开启保护模式,运行后台启动

(5)修改pid文件地址,改到和redis.conf同一个文件夹下就可以

(6)修改持久化文件地址,改到redis.conf所在文件夹

(7)设定内存优化策略

(8)关闭aof模式

(9)开启集群

(10)开启集群配置文件

(11)修改集群超时时间

注意:每个配置文件除了(3)端口(5)(6)路径不同其他都相同。
2.编写启动脚本和关闭脚本

启动
#!/bin/sh
redis-server ./7000/redis.conf &
redis-server ./7001/redis.conf &
redis-server ./7002/redis.conf &
redis-server ./7003/redis.conf &
redis-server ./7004/redis.conf &
redis-server ./7005/redis.conf &
关闭
#!/bin/sh
redis-cli -p 7000 shutdown &
redis-cli -p 7001 shutdown &
redis-cli -p 7002 shutdown &
redis-cli -p 7003 shutdown &
redis-cli -p 7004 shutdown &
redis-cli -p 7005 shutdown &
3.测试集群
启动
sh start.sh

查看集群信息,
redis-cli -p 7000
info replication
可以看到集群创建成功。
结束redis
sh shutdown.sh

可以看到已经结束了
相关文章:
redis分片java实践、redis哨兵机制实现、redis集群搭建
redis分片java实践 linux安装redishttps://mp.csdn.net/mp_blog/creation/editor/134864302复制redis.conf配置文件成redis1.conf、redis2.conf、redis3.conf 修改redis的端口信息和存pid文件的路径。存pid文件的路径只要不同就行了,没什么特别要求。 指定配置文件…...
2024年四千价位段最具统治力的投影仪,坚果N1S 4K: 4K+三色激光=下一代4K
更高的亮度与分辨率、更强的对比度、更广的色域、更低的价格,家用智能投影企业在性能和价格上加速内卷。作为该领域的龙头和“卷王之王”,坚果投影率先将激光投影仪的价格拉入万元内,近期其又祭出一把杀手锏——坚果N1S 4K。该产品是首款4000…...
MySQL8.3升级踩坑记录
之前用的mysql5.7,目前被省公司发现有漏洞,需要升级mysql8.3,无奈只好升级,记录下踩坑经过 1、安装完以后设置环境变量,网上操作一大堆,以便于方便使用client 2、双击client 登录,开启远程访问…...
你写的每条SQL都是全表扫描吗
你写的每条SQL都是全表扫描吗?如果是,那MySQL可太感谢你了,每一次SQL执行都是在给MySQL上压力、上对抗。MySQL有苦难言:你不知道索引吗?你写的SQL索引都失效了不知道吗?慢查询不懂啊?建那么多索…...
每日两题 / 24. 两两交换链表中的节点 25. K 个一组翻转链表(LeetCode热题100)
24. 两两交换链表中的节点 - 力扣(LeetCode) 定义三个指针,交换前先保存ntnt指针为next->next,cur和next两个节点,然后将pre->next指向next 若pre为空,说明当前交换的节点为头两个节点,…...
【Linux】模拟实现bash(简易版)
👦个人主页:Weraphael ✍🏻作者简介:目前正在学习c和算法 ✈️专栏:Linux 🐋 希望大家多多支持,咱一起进步!😁 如果文章有啥瑕疵,希望大佬指点一二 如果文章对…...
C++ | Leetcode C++题解之第67题二进制求和
题目: 题解: class Solution { public:string addBinary(string a, string b) {string ans;reverse(a.begin(), a.end());reverse(b.begin(), b.end());int n max(a.size(), b.size()), carry 0;for (size_t i 0; i < n; i) {carry i < a.siz…...
如何确保UDP文件传输工具有最低稳定的传输速度?
在当前日新月异的数字时代背景下,文件传输工具已经成为我们日常生活与工作中不可或缺的一部分,尤其针对那些频繁涉及即时数据交互与多媒体流通的场景。 UDP协议,以其突出的高速传输与低延迟特性,脱颖而出成为众多用户的首选。不过…...
力扣爆刷第133天之动态规划收尾(距离编辑与回文子串)
力扣爆刷第133天之动态规划收尾(距离编辑与回文子串) 文章目录 力扣爆刷第133天之动态规划收尾(距离编辑与回文子串)一、72. 编辑距离二、647. 回文子串三、516. 最长回文子序列 一、72. 编辑距离 题目链接:https://l…...
List集合中对asList的使用
List<String> sArrays.asList(“qwe”,”cvb”,”mnb”); List<String> s1s.subList(1,2); System.out.Pintln(“s”);//输出结果:[qwe,cvb,mnb] System.out.Pintln(“s1”);//输出结果:[cvb] s1.add(“123qwe”);//报错:java…...
软件测试所有测试方法
β测试_Beta测试 β测试,英文是Beta testing。又称Beta测试,用户验收测试(UAT)。 β测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta测试不能由程序员或测试员完成。 …...
linux 下 /usr/local的作用
在Linux系统中,/usr/local目录扮演着特定的角色,它是为用户自安装的软件提供一个标准位置。以下是/usr/local目录的主要用途和特点: 用户级程序目录:该目录用于存放用户自行编译安装的软件或者第三方应用程序,区别于操…...
【web网页制作】html+css旅游家乡河南开封主题网页制作(4页面)【附源码】
HTMLCSS家乡河南主题网页目录 🍔涉及知识🥤写在前面🍧一、网页主题🌳二、页面效果Page1 首页Page2 开封游玩Page 3 开封美食Page4 留言 🌈 三、网页架构与技术3.1 脑海构思3.2 整体布局3.3 技术说明书 🐋四…...
MySQL用命令行导出数据库
问题: 交作业的时候要求交数据文件,因为用的MySQL数据库,就在想怎么用命令行导出数据库,在csdn上找了其他文章,使用MySQL的命令行用下面语句,结果发生报错 mysqldump -u 用户名 -p 数据库名 > 输出地址…...
uniapp video 层级覆盖
层级覆盖 cover-view组件 我这里做了个判断 监听全屏时隐藏按钮 根据项目需求自行更改...
SparkSQL概述
1.1. SparkSQL介绍 SparkSQL,就是Spark生态体系中的构建在SparkCore基础之上的一个基于SQL的计算模块。SparkSQL的前身不叫SparkSQL,而是叫做Shark。最开始的时候底层代码优化、SQL的解析、执行引擎等等完全基于Hive,总是Shark的执行速度要比…...
docker 和 docker-compose
Docker是一种开源的容器化平台,它可以帮助开发人员将应用程序及其所有依赖项打包到一个独立的、可移植的容器中。这意味着您可以在任何地方运行Docker容器,而不需要担心环境差异或依赖项的问题。 Docker Compose是Docker官方提供的一个工具,…...
微信小程序支付(完整版)-ThinkPHP/Uniapp
技术说明 1.前端:uniapp、vue3 2.接口:PHP8、ThinkPHP8、MySQL8.0 3.微信支付- PHP,官方示例文档 4.示例代码的模型及业务自己进行调整,不要一味的复制粘贴!!! 流程说明 1.小程序调用接口…...
同时安装多个nodejs版本可切换使用,或者用nvm管理、切换nodejs版本(两个详细方法)
目录 一.使用nvm的方法: 1.卸载nodejs 2.前往官网下载nvm 3.安装nvm 4.查看安装是否完成 5.配置路径和淘宝镜像 6.查看和安装各个版本的nodejs 7.nvm的常用命令 二.不使用nvm,安装多个版本: 1.安装不同版本的nodejs 2.解压到你想放…...
马化腾用了一年多的时间,告诉所有人,视频号小店是新风口!
大家好,我是电商笨笨熊 当腾讯说出自己要做电商的时候,所有人都在说,根本不可能; 甚至在视频号小店正式推出之后,依旧有人说,腾讯做电商就是笑话; 一个“抄”过来的项目,毫无特色…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
