Redis_分片集群
10. 分片集群
10.1简介
业务场景,需要存储50G的数据。对于内存和硬盘配置不足,选用两种方式
- 一种:纵向扩展:加内存,加硬盘,提高CPU。简单、直接。RDB存储效率要考虑。成本要考虑。
- 二种:横向扩展:加实例。(加机器)
10.2配置
步骤1:
- 创建一个mycluster目录,复制redis.conf文件
mkdir mycluster cp /opt/redis-6.2.6/redis.conf redis.conf - 将后台启动打开
步骤2:
- 创建一个redis6379.conf
include redis.conf pidfile "/var/run/redis_6379.pid" port 6379 dbfilename "dump6379.rdb" #打开集群模式 cluster-enabled yes #设定节点配置文件 cluster-config-file nodes-6379.conf #设定节点失联时间,超过,会自动进行主从切换 cluster-node-timeout 15000
步骤3:
- 根据6379的配置文件,再配置5个不同的端口
:%S/原内容/要替换的内容 :%s/6379/6380
步骤4:
-
修改redis.conf配置文件,将bind ip地址加入

打开bind 127.0.0.1 加入 192.168.188.3
步骤5
- 启动六个服务,保证六个服务启动成功
步骤6
- 将六个服务合成一个集群
redis-cli --cluster create --cluster-replicas 1 192.168.188.3:6379 192.168.188.3:6380 192.168.188.3:6381 192.168.188.3:6579 192.168.188.3:6580 192.168.188.3:6581 - 输入yes去接受配置
注意:

当出现此错误时,需要把redis.conf配置文件中的protected-mode no yes改为no,重启所有redis在执行步骤6

10.3 Hash Slot
10.3.1 简介
在使用redis cluster方案中,一个分片集群有16384个哈希槽。
根据键值对的key,按照CRC16算法计算一个16bit的值。再用这个值对16384取模运算,得到的数代表对应编号的hash slot
10.3.2部署方案
cluster create命令创建集群时,redis会自动把这些hash slot平均分布在集群实例上。如果集群中有N个实例(主库),每个实例上分配到的hash slot就是16384/N
使用cluster addslos 手工分配哈希槽。
10.4 集群中的数据操作
步骤1
- 使用集群方式启动redis的命令行,加 -c参数
redis-cli -c -p 6379
步骤2
- 向redis中设置一个键值对,key会经过运算后,得到相应的hash slot进行存储
set k1 v1 set k2 v2 get k1 get k2
步骤3
- 测试向集群中加入多个key-value,由于在不同的hash slot,此时会报错
mset k3 v3 k4 v4 k5 v5 - 要通过{}来定义组的概念,使用key中{}内相同内容的键值对放在一个slot中
mset name{user:001} zhangsan age{user:001} 18 gender{user:001} man
步骤4
- 获取key中的值
get k1 get name{user:001}
10.5 常用命令
- cluster nodes:显示集群节点的配置信息
- cluster keyslot < key>:获取key的哈希槽
- cluster countkeysinslot < slot>:返回当前哈希槽中key的数量(仅查询当前redis实例)
- cluster getkeysinslot < slot>< count>:返回当前槽中指定的count数量的key
10.6 故障演示
步骤1
- 将6379宕机,以集群方式登录6380
127.0.0.1:6379>shutdown exit redis-cli -c -p 6380
步骤2:
- 使用cluster nodes查看节点状态,6379的从机6581变成了主机
步骤3:
- 把6379再次启动,启动后,6379变成了6581的从机
如果有一段hash slot的主从节点都宕机,redis是否继续工作?
通过下面配置,默认是yes,如果主从都挂掉,整个集群就都挂掉
如果是no,就表示该hash slot数据全部都不能使用,也无法存储
cluster-require-full-coverage yes
相关文章:
Redis_分片集群
10. 分片集群 10.1简介 业务场景,需要存储50G的数据。对于内存和硬盘配置不足,选用两种方式 一种:纵向扩展:加内存,加硬盘,提高CPU。简单、直接。RDB存储效率要考虑。成本要考虑。二种:横向扩…...
测试提升方向:你选测试开发?还是性能测试?
如果想要在测试领域好好发展,提升自己的测试技术是必不可少的,但是,选对方向更为重要,功能测试、自动化测试、测试开发、性能测试、安全测试、测试管理,每个测试方向都不简单,但是,大环境就是&a…...
无涯教程-Perl - print函数
描述 此函数将LIST中的表达式的值打印到当前的默认输出文件句柄或FILEHANDLE指定的句柄中。 如果设置,则$\变量将添加到LIST的末尾。 如果LIST为空,则打印$_中的值。 print接受一个值列表,列表中的每个元素都将被解释为一个表达式。 语法 以下是此函数的简单语法- print…...
python搜索文件夹内类似的文件名
# codingutf8 __author__ Administrator import os """ #编写函数,计算字符串匹配的准确率 def Rate(origin,userInput): if not (isinstance(origin,str) and isinstance(userInput,str)): print(The two parameters must be strings…...
[保研/考研机试] KY3 约数的个数 清华大学复试上机题 C++实现
题目链接: KY3 约数的个数 https://www.nowcoder.com/share/jump/437195121691716950188 描述 输入n个整数,依次输出每个数的约数的个数 输入描述: 输入的第一行为N,即数组的个数(N<1000) 接下来的1行包括N个整数,其中每个…...
cmake扩展(2)——windows下动态设置输出文件(dll/exe)版本
准备 windows下设置文件的版本需要通过VERSIONINFO接口,详情参考VERSIONINFO resource。这里我们根据模板做了一定的修改。 1 VERSIONINFOFILEVERSION ${GIT_VERSION} //文件版本号,必填。以,分隔,输出以.分隔。这里是取CMakeLists里的GIT_…...
Python-OpenCV中的图像处理-颜色空间转换
Python-OpenCV中的图像处理-颜色空间转换 颜色空间转换获取HSV的值 颜色空间转换 在 OpenCV 中有超过 150 中进行颜色空间转换的方法。但是你以后就会 发现我们经常用到的也就两种: BGR G r a y 和 B G R Gray 和 BGR Gray和BGRHSV。 注意:在 OpenCV 的…...
yolov5目标检测多线程Qt界面
上一篇文章:yolov5目标检测多线程C部署 V1 基本功能实现 mainwindow.h #pragma once#include <iostream>#include <QMainWindow> #include <QFileDialog> #include <QThread>#include <opencv2/opencv.hpp>#include "yolov5.…...
[ubuntu]创建root权限的用户 该用户登录后自动切换为root用户
一、创建新用户 1、创建新用户 sudo useradd -r -m -s /bin/bash 用户名 # -r:建立系统账号 -m:自动建立用户的登入目录 -s:指定用户登入后所使用的shell2、手动为用户设置密码 passwd 用户名 二、为用户增加root权限 1、添加写权限 ch…...
大连交通大学813软件工程考研习题
1.什么是软件生存周期模型?有哪些主要模型? 生存周期模型:描述软件开发过程中各种活动如何执行的模型。对软件开发提供强有力的支持,为开发过程中的活动提供统一的政策保证,为参与开发的人员提供帮助和指导,是软件生存周期模型…...
分布式协议与算法——Paxos算法
目录 Paxos算法Basic Paxos算法三种角色如何达成共识(协商过程)小结: Multi-Paxos算法关于 Multi-Paxos 的思考领导者优化Basic PaxosChubby 的 Multi-Paxos 实现小结 参考 Paxos算法 Paxos论文 Paxos Made Simple 、author:Lesli…...
Spring中的Websocket身份验证和授权
目录 一、需要了解的事项二、依赖三、WebSocket 配置3.1 、简单的消息代理3.2 、Spring安全配置 一、需要了解的事项 http和WebSocket的安全链和安全配置是完全独立的。SpringAuthenticationProvider根本不参与 Websocket 身份验证。将要给出的示例中,身份验证不会…...
【果树农药喷洒机器人】Part7:静态PWM变量喷药实验
📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…...
C++ 网络编程项目fastDFS分布是文件系统(一)
目录 1.项目架构图 1. 项目架构图 1.1 一些概念 1.2 项目架构图 2. 分布式文件系统 2.1 传统文件系统 2.2 分布式文件系统 3. FastDFS 3.1 fastDFS介绍 3.2 fastDFS安装 3.3 fastDFS配置文件 3.4 fastDFS的启动 4. fastDFS状态检测 4.1 对file_id的解释 4. 2上传…...
PoseiSwap 开启“Poseidon”池,治理体系或将全面开启
PoseiSwap 曾在前不久分别以 IDO、IEO 的方式推出了 POSE 通证,但 PoseiSwap DEX 中并未向除 Zepoch 节点外的角色开放 POSE 资产的交易。而在前不久,PoseiSwap 推出了全新的“Poseidon”池,该池将向所有用户开放,并允许用户自由的…...
【C/C++】重载运算符特性
重载运算符是 C 中的一个重要特性,它允许程序员自定义类类型的运算符行为。重载运算符的使用场景包括: 使类类型的对象能够像内置类型一样进行运算:例如,可以重载加号运算符,使两个对象相加时能够像两个整数相加一样。…...
HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具
公文一键排版系统基本完成,准备继续完善SysInfo,增加用户帐户信息,其中涉及到Win32_Account结构,其C定义如下: [Dynamic, Provider("CIMWin32"), UUID("{8502C4CC-5FBB-11D2-AAC1-006008C78BC7}"…...
24届近3年南京信息工程大学自动化考研院校分析
今天给大家带来的是南京信息工程大学控制考研分析 满满干货~还不快快点赞收藏 一、南京信息工程大学 学校简介 南京信息工程大学位于南京江北新区,是一所以大气科学为特色的全国重点大学,由江苏省人民政府、中华人民共和国教育部、中国气…...
【LeetCode】1572.矩阵对角线元素的和
题目 给你一个正方形矩阵 mat,请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例 1: 输入:mat [[1,2,3],[4,5,6],[7,8,9]] 输出:25 解释:对角线的和为&a…...
2023-08-08 Ubuntu 挂载U盘 fdisk -l 、sudo mount /dev/sdb1 /mnt/mydisk
一、基本命令 1、插入U盘,查看U盘是否被系统识别: 打开终端,输入: sudo fdisk -l 查看系统是否识别U盘,如果识别,会显示U盘的相关信息,如果没有识别,则说明系统没有识别U盘。 2…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
群晖NAS如何在虚拟机创建飞牛NAS
套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
32单片机——基本定时器
STM32F103有众多的定时器,其中包括2个基本定时器(TIM6和TIM7)、4个通用定时器(TIM2~TIM5)、2个高级控制定时器(TIM1和TIM8),这些定时器彼此完全独立,不共享任何资源 1、定…...
