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

Redis技术入门与实践指南

一、Redis基础知识

1、概念

Redis是一个开源的、遵循BSD协议的、基于内存的而且目前比较流行的键值数据库(key-value database),是一个非关系型数据库,redis 提供将内存通过网络远程共享的一种服务,提供类似功能的 还有memcached,但相比memcached,redis还提供了易扩展、高性能、具备数据持久性等功能。 Redis 在高并发、低延迟环境要求比较高的环境使用量非常广泛。

2、特点

速度快: 10W QPS,基于内存,C语言实现;单线程;持久化;支持多种数据结构;支持多种编程语言;功能丰富: 支持Lua脚本,发布订阅,事务,pipeline等功能;简单: 代码短小精悍(单机核心代码只有23000行左右),单线程开发容易,不依赖外部库,使用简单;主从复制;支持高可用和分布式。

二、Redis源码安装

解压源码包

tar zxf redis-7.4.0.tar.gz

执行编译命令

dnf install initscripts make gcc -y
cd redis-7.4.0/
make && make install

报错提示系统使用的是systemd的初始化方式,解决报错

vim install_server.sh

启动Redis

./install_server.sh

三、配置主从同步

1、主从同步过程

1.1、slave节点发送同步请求到master节点

1.2、slave节点通过master节点的认证开始进行同步

1.3、master节点会开启bgsave进程发送内存rbd到slave节点,在此过程中是异步操作,也就是说 master节点仍然可以进行写入动作

1.4、slave节点收到rdb后首先清空自己的所有数据

1.5、slave节点加载rdb并进行数据恢复

1.6、在master和slave同步过程中master还会开启新的bgsave进程把没有同步的数据进行缓存

1.7、通过自有的replactionfeedslave函数把未通过内存快照发动到slave的数据一条一条写入到 slave中

2、配置master节点

vim /etc/redis/6379.conf

/etc/init.d/redis_6379 restart

复制到其他两台主机

scp -r redis-7.4.0 root@172.25.254.20:/root
scp -r redis-7.4.0 root@172.25.254.30:/root

rsync -al * root@172.25.254.20:/usr/local/bin
rsync -al * root@172.25.254.30:/usr/local/bin

3、配置slave节点

yum install initscripts -y
vim /etc/redis/6379.conf

/etc/init.d/redis_6379 restart

测试:

在mastser节点新建

在slave节点查看

四、Redis的哨兵(高可用)

编辑配置文件

cd redis-7.4.0/
cp sentinel.conf /etc/redis/
vim /etc/redis/sentinel.conf

scp /etc/redis/sentinel.conf root@172.25.254.20:/etc/redis/
scp /etc/redis/sentinel.conf root@172.25.254.30:/etc/redis/

启动服务

redis-sentinel /etc/redis/sentinel.conf

再开一个master节点终端

[root@redis-node1 ~]# redis-cli
127.0.0.1:6379> shutdown

在salve查看

[root@redis-node2 ~]# redis-cli
127.0.0.1:6379> info replications
127.0.0.1:6379> info replication

五、Redis Cluster(无中心化设计)

1、Redis Cluster 工作原理

在哨兵sentinel机制中,可以解决redis高可用问题,即当master故障后可以自动将slave提升为master, 从而可以保证redis服务的正常使用,但是无法解决redis单机写入的瓶颈问题,即单机redis写入性能受 限于单机的内存大小、并发数量、网卡速率等因素。 redis 3.0版本之后推出了无中心架构的redis cluster机制,在无中心的redis集群当中,其每个节点保存 当前节点数据和整个集群状态,每个节点都和其他所有节点连接

2、部署redis cluster

删除源码编译的redis

cd redis-7.4.0/
make uninstall

创建3台cluster

6台redis同时安装

dnf install redis -y
vim /etc/redis/redis.conf

集群主从认证

复制配置文件给其他主机

for i in 20 30 110 120 130; do scp /etc/redis/redis.conf root@172.25.254.$i:/etc/redis/redis.conf; done
systemctl enable --now redis

3、创建redis-cluster

redis-cli --cluster create -a 123456 172.25.254.10:6379 172.25.254.20:6379 172.25.254.30:6379 172.25.254.110:6379 172.25.254.120:6379 172.25.254.130:6379 --cluster-replicas 1

查看集群状态

redis-cli -a 123456 --cluster info 172.25.254.10:6379

redis-cli -a 123456 cluster info

写入数据

redis-cli -a 123456
127.0.0.1:6379> set name hao

报错提示可知被分配到20的hash槽位上

4、集群扩容

scp /etc/redis/redis.conf root@172.25.254.50:/etc/redis/redis.conf
scp /etc/redis/redis.conf root@172.25.254.150:/etc/redis/redis.conf
redis-cli -a 123456 --cluster add-node 172.25.254.50:6379 172.25.254.10:6379

redis-cli -a 123456 --cluster check 172.25.254.10:6379

但这时的50没有槽位,不可以存数据

分配槽位

redis-cli -a 123456 --cluster reshard 172.25.254.10:6379

添加salve

redis-cli -a 123456 --cluster add-node 172.25.254.150:6379 172.25.254.10:6379 --cluster-slave --cluster-master-id d80777be39c2f55697310daf69bdc0b6f47eb2f9

5、clsuter集群维护

添加节点的时候是先添加node节点到集群,然后分配槽位,删除节点的操作与添加节点的操作正好相 反,是先将被删除的Redis node上的槽位迁移到集群中的其他Redis node节点上,然后再将其删除,如 果一个Redis node节点上的槽位没有被完全迁移,删除该node的时候会提示有数据且无法删除。

移除要下线主机50的哈希槽位

redis-cli -a 123456 --cluster reshard 172.25.254.10:6379

删除master

redis-cli -a 123456 --cluster del-node 172.25.254.150:6379  1c2bdbf84e07f3abf080e8106d6eb84ce3734bcd
redis-cli -a 123456 --cluster del-node 172.25.254.50:6379 d80777be39c2f55697310daf69bdc0b6f47eb2f9

redis-cli -a 123456 --cluster check 172.25.254.10:6379

相关文章:

Redis技术入门与实践指南

一、Redis基础知识 1、概念 Redis是一个开源的、遵循BSD协议的、基于内存的而且目前比较流行的键值数据库(key-value database),是一个非关系型数据库,redis 提供将内存通过网络远程共享的一种服务,提供类似功能的 还有memcached&#xff0…...

如何一键完成20个Oracle实例运维脚本部署

在日常的运维工作中,常常是一个人需要管理维护数个数十个数据库实例,如果是开源类集群如mysql,PG等可能更多;在没有商业的集中管理平台的情况下,如何快速的部署监控或者运维脚本,是一个值得探讨的问题&…...

【C++刷题】力扣-#598-区间加法 II

题目描述 给你一个 m x n 的矩阵 M和一个操作数组 op 。矩阵初始化时所有的单元格都为 0 。ops[i] [ai, bi] 意味着当所有的 0 < x < ai 和 0 < y < bi 时&#xff0c; M[x][y] 应该加 1。 在 执行完所有操作后 &#xff0c;计算并返回 矩阵中最大整数的个数 。 示…...

优雅的LUA数据记录方法-serpent序列化+LUA Table

目录 简述如何集成&#xff1f;如何使用序列化 反序列化 参考 简述 项目里需要使用LUA脚本将数据记录到文件&#xff0c;要方便的增加、查找、删除&#xff0c;要方便的加载与存回。 使用序列化/反序列化 lua table可以很容易实现这些功能。 序列化将table转换为字符串 反序列…...

初始JavaEE篇——多线程(4):wait、notify,饿汉模式,懒汉模式,指令重排序

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;JavaEE 目录 wait、notify 方法 多线程练习 单例模式 饿汉模式 懒汉模式 指令重排序 wait、notify 方法 wait 和 我们前面学习的sleep…...

Apache Solr 身份认证绕过导致任意文件读取漏洞复现(CVE-2024-45216)

0x01 产品简介 Apache Solr是一个开源的搜索平台,基于流行的Apache Lucene库构建。它提供了一个强大的全文搜索功能,能够快速处理大量数据,并支持复杂的搜索操作。并且是一个独立的企业级搜索应用服务器,它采用Java开发,并基于Apache Lucene实现。Solr提供了类似于Web-Se…...

C#整合Ollama实现本地LLMs调用

前言 近两年AIGC发展的非常迅速&#xff0c;从刚开始的只有ChatGPT到现在的很百家争鸣。从开始的大参数模型&#xff0c;再到后来的小参数模型&#xff0c;从一开始单一的文本模型到现在的多模态模型等等。随着一起进步的不仅仅是模型的多样化&#xff0c;还有模型的使用方式。…...

C++基于opencv的视频质量检测--图像抖动检测

文章目录 0.引言1. 原始代码分析2. 优化方案3. 优化后的代码4. 代码详细解读 0.引言 视频质量图像抖动检测已在C基于opencv4的视频质量检测中有所介绍&#xff0c;本文将详细介绍其优化版本。 1. 原始代码分析 首先&#xff0c;我们来看图像抖动检测的原始代码&#xff1a; …...

Cuda By Example - 11 (Texture Memory 2-D)

跟1D一样&#xff0c;2D的代码也没有运行过。旧的方法看看就好。 声明二维Texture texture<float, 2> texConstSrc; texture<float, 2> texIn; texture<float, 2> texOut; 访问二维Texture 使用2D的Texture的便利性体现在blend_kernel函数里。不再需要通…...

Go匿名结构体使用场景

1. 定义 在 Go 语言中&#xff0c;匿名结构体&#xff08;Anonymous Struct&#xff09;是一种没有显式命名的结构体类型。你可以直接在代码中定义并使用匿名结构体&#xff0c;而不需要为其定义一个单独的类型名称。匿名结构体通常用于临时数据结构或一次性使用的场景。 匿名…...

Vue 发布十年了!你知道我这十年是怎么过的吗?

2014 年 2 月 3 日&#xff0c;Vue 在 Hacker News 上首次亮相。十年后的今天&#xff0c;Vue 已经成为使用最广泛的前端框架之一&#xff0c;拥有了一个非常丰富的生态系统。本文来梳理一下 Vue.js 十年以来的重要里程碑&#xff01; 尤雨溪&#xff0c;无疑是 Vue.js 背后的灵…...

Unity 6 来袭

这里写自定义目录标题 1.提升渲染性能1.1 降低CPU开销 Lower CPU overhead1.2.减少内存带宽1.3.高档低分辨率帧2.多人游戏创作3.扩大多平台覆盖范围3.1.增进Android平台开发4.使用Runtime AI解锁各种可能性4.1.Unity Muse4.2.Unity Sentis5.实现更具吸引力的视觉效果5.1.自适应…...

SpringMVC课时1

一:SpringMVC Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架,本质上相当于 Servlet,负责表述层(控制层)实现简化。 由于 Spring MVC 本身就是 Spring 框架的一部分,和 Spring 框架是无缝集成。 二:SSM的主要作用 三:SpringMVC的原理架构图 …...

【小白学机器学习30】样本统计的核心参数:均值/期望,方差,标准差,标准值。

目录 1 为什么我们要搞出来这么多指标/参数&#xff1f; 1.1 描述统计学为啥要搞出来这么多复杂的参数&#xff1f;什么平均值等 1.2 所以&#xff0c;需要用少数几个关键数据代表1群数据 1.2.1 平均值 1.2.2 平均值的问题&#xff1a;方差 2 代表性的数据1&#xff1a;…...

flink1.17.2安装和使用

版本&#xff1a;flink1.17.2 单机模式 配置 # 为了在别处连接flink-web rest.bind-address: 0.0.0.0命令 # 启动集群 bin/start-cluster.sh # 关闭集群 bin/stop-cluster.sh使用 使用浏览器连接 ip:8081 使用flink-web...

C向C++入门-- C语言填坑

1.c参考文档 我们在学习c中需要查找参照信息到是从这些文档中得到。 https://legacy.cplusplus.com/reference/ 标准只更新到C11&#xff0c;但是以头⽂件形式呈现&#xff0c;内容⽐较易看好懂。 https://zh.cppreference.com/w/cpp https://en.cppreference.com/w/ 后两…...

扫雷游戏(C语言详解)

扫雷游戏&#xff08;C语言详解&#xff09; 放在最前面的1、前言&#xff08;扫雷游戏的简介&#xff09;2、扫雷游戏的规则&#xff08;简易版&#xff09;3、代码实现&#xff08;3.1&#xff09;提醒一下&#xff1a;( i ) 提醒1&#xff1a;( ii ) 提醒2&#xff1a; &…...

信刻全自动光盘摆渡系统

随着各种数据传输、储存技术、信息技术的快速发展&#xff0c;保护信息安全是重中之重。各安全领域行业对跨网数据交互需求日益迫切。针对于业务需要与保密规范相关要求&#xff0c;涉及重要秘密信息&#xff0c;需做到安全的物理隔离&#xff0c;并且保证跨网数据高效安全传输…...

计算机网络的数据链路层

计算机网络的数据链路层 数据链路层是OSI参考模型中的第二层&#xff0c;它位于物理层之上&#xff0c;网络层之下。数据链路层的主要功能是在物理层提供的服务的基础上向网络层提供服务&#xff0c;其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。…...

从0开始搭建一个生产级SpringBoot2.0.X项目(三)SpringBoot接口统一返回和全局异常处理

前言 最近有个想法想整理一个内容比较完整springboot项目初始化Demo。 SpringBoot接口统一返回和全局异常处理&#xff0c;使用ControllerAdvice ExceptionHandler 的组合来实现。 一、pom文件新增依赖 <dependency><groupId>com.alibaba</groupId><ar…...

如何评估一个SEO策略的效果_如何利用local SEO来提高网站曝光度

如何评估一个SEO策略的效果 在当今数字化时代&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;已经成为了网站提升曝光度和吸引流量的关键手段。一个好的SEO策略可以帮助网站在搜索结果中获得更高的排名&#xff0c;从而吸引更多的潜在客户。如何评估一个SEO策略的效果呢…...

利用卷积神经网络原理优化万象熔炉·丹青幻境的图像生成效果

利用卷积神经网络原理优化万象熔炉丹青幻境的图像生成效果 最近在玩一个叫“万象熔炉丹青幻境”的AI图像生成工具&#xff0c;效果挺惊艳的&#xff0c;但有时候总觉得生成的图片差点意思——要么细节不够清晰&#xff0c;要么风格不是我想要的。这让我想起了以前做计算机视觉…...

gte-base-zh低成本方案:一张3090显卡跑通达摩院向量模型

gte-base-zh低成本方案&#xff1a;一张3090显卡跑通达摩院向量模型 1. 方案概述与优势 1.1 为什么选择gte-base-zh&#xff1f; gte-base-zh是阿里巴巴达摩院基于BERT框架训练的中文文本嵌入模型&#xff0c;具有以下特点&#xff1a; 通用性强&#xff1a;在大规模多领域…...

全自动洗衣机组态王与三菱PLC联机及仿真探索

全自动洗衣机组态王6.53,6.60和三菱PLC联机和仿真程序包最近在研究自动化控制领域相关内容&#xff0c;接触到了全自动洗衣机组态王 6.53、6.60 与三菱 PLC 的联机以及仿真程序包&#xff0c;感觉很有意思&#xff0c;今天就来和大家分享分享。 一、组态王与三菱 PLC 联机的意义…...

从Simulink仿真到硬件实现:DAB双有源全桥的PID参数‘手感’如何传递?

从虚拟到现实&#xff1a;DAB双有源全桥PID参数迁移实战指南 当你在Simulink中看到完美的DAB动态响应波形时&#xff0c;那种成就感就像解开一道复杂的数学题。但现实往往给你当头一棒——同样的PID参数烧录到DSP后&#xff0c;示波器上的波形却像喝醉了一样东倒西歪。这不是你…...

BRV下拉刷新与上拉加载:SmartRefreshLayout集成完整教程

BRV下拉刷新与上拉加载&#xff1a;SmartRefreshLayout集成完整教程 【免费下载链接】BRV [永久维护] Android 快速构建 RecyclerView, 比 BRVAH 更简单强大 项目地址: https://gitcode.com/gh_mirrors/br/BRV BRV&#xff08;Android 快速构建 RecyclerView&#xff09…...

Vitis 2021.1下,手把手教你为Xilinx LWIP库适配国产YT8511以太网芯片(附完整代码)

Vitis 2021.1环境下国产YT8511以太网芯片与Xilinx LWIP库的深度适配指南 当Artix-7 FPGA遇上国产PHY芯片&#xff0c;开发者常常面临官方驱动不兼容的困境。本文将彻底解决Vitis 2021.1环境中LWIP库对YT8511的适配问题&#xff0c;提供从寄存器配置到代码移植的全套方案。 1. 环…...

OpenFontRender:嵌入式MCU的轻量级TTF字体渲染库

1. OpenFontRender 库深度解析&#xff1a;面向嵌入式微控制器的 TTF 字体渲染引擎OpenFontRender 是一款专为资源受限微控制器设计的开源 TTF&#xff08;TrueType Font&#xff09;字体渲染库&#xff0c;其核心目标是在 Arduino IDE 生态下实现高质量、可定制、跨平台的矢量…...

Windows效率翻倍!这些隐藏的Win+R命令和CMD技巧你用过几个?

Windows效率革命&#xff1a;解锁WinR与CMD的终极生产力指南 你是否曾在同事飞速敲击键盘时暗自惊叹&#xff1f;那些看似简单的组合键背后&#xff0c;藏着Windows系统最强大的效率武器库。今天我们要探索的不仅是快捷键列表&#xff0c;而是一套完整的生产力操作系统——从Wi…...

EasyNetworkManager:ESP32/ESP8266嵌入式网络服务编排框架

1. EasyNetworkManager&#xff1a;面向ESP32/ESP8266的轻量级可扩展网络管理框架1.1 设计定位与工程价值EasyNetworkManager并非通用型网络协议栈&#xff0c;而是一个嵌入式设备侧的网络服务编排层。其核心设计目标直指ESP平台开发中的三大现实痛点&#xff1a;WiFi连接状态不…...