NoSql数据库Redis知识点
数据库的分类
Redis简介
Redis核心特性
丰富的数据类型:Redis不仅支持基本的键值存储,还提供了字符串、列表、集合、哈希表和有序集合等数据结构。这些数据类型为开发者提供了灵活的操作能力,适应不同的应用场景。
原子性操作:Redis的所有操作都是原子性的,这意味着每个操作要么完全执行,要么完全不执行,确保了数据的一致性和完整性。
持久化机制:Redis支持将内存中的数据保存到磁盘上,以便在系统重启后恢复数据。这提供了数据安全性,防止系统故障导致的数据丢失。
发布订阅模式:Redis内置了发布/订阅模式,允许客户端之间通过消息传递进行通信,适用于消息队列和实时数据传输平台。
单线程模型:尽管Redis是单线程的,但它通过高效的事件驱动模型来处理并发请求,确保了高性能和低延迟。
主从复制:Redis支持主从复制,可以通过从节点备份数据或分担读请求,提高数据的可用性和系统的伸缩性。
Redis部署方式分类
单节点模式
定义:单节点模式是Redis最简单的部署方式,就是在一台服务器上运行一个Redis实例,提供数据的读写服务。
优点:配置简单,操作简单,性能高,没有网络开销和数据同步的延迟。
缺点:数据容量受限于单台服务器的内存大小,无法进行横向扩展;数据安全性低,一旦服务器宕机或者数据损坏,会造成数据的丢失或不一致
主从模式
定义:主从模式是在单节点模式的基础上,增加了数据的复制功能。主从模式下,有一个主节点(master)和一个或多个从节点(slave)。主节点负责处理数据的读写操作,从节点负责复制主节点的数据,并可以提供只读服务。
优点:数据冗余,提高了数据的安全性和可靠性,可以用于数据的备份和恢复;负载均衡,分担了主节点的读压力,提高了系统的吞吐量和响应速度;故障恢复,当主节点发生故障时,可以手动或自动地将一个从节点升级为新的主节点,实现主节点的故障转移。
缺点:数据一致性不强,由于主从复制是异步的,可能会出现主从数据不一致的情况,尤其是在主节点故障时,从节点可能会丢失一部分未复制的数据;故障转移不自动,当主节点发生故障时,需要人工介入或者借助其他工具来实现从节点的自动升级,这会造成一定的服务中断和数据丢失
工作过程:

- 从服务器(slave)连接到主服务器(master)。
- 从服务器发送
SYNC命令给主服务器。 - 主服务器执行
BGSAVE命令,生成RDB文件,同时使用缓冲区记录此后执行的所有写命令。 - 主服务器将RDB文件发送给从服务器,从服务器接收并载入到内存中。
- 主服务器将缓冲区中的写命令发送给从服务器,从服务器执行这些命令。
- 如果有新的写命令到达主服务器,它们会被放入缓冲区等待同步。
- 当从服务器完成数据同步后,它会向主服务器发送一个确认消息。
- 主服务器收到确认消息后,将缓冲区中的写命令应用到自己的数据库中。
- 从服务器开始接受客户端的读请求。
哨兵模式(高可用)
定义:哨兵模式是在主从模式的基础上,引入了哨兵(sentinel)节点,用于监控主节点和从节点的运行状态,并在主节点发生故障时,自动将一个从节点升级为新的主节点,实现主节点的自动故障转移。
优点:自动故障转移,无需人工干预,减少了服务中断和数据丢失的风险;集群监控,可以实时感知主从节点的健康状况,及时发现和处理异常情况;配置中心,可以提供主节点的动态发现和通知服务,方便客户端的连接和切换。
缺点:部署复杂,需要维护额外的哨兵节点,增加了系统的管理成本;数据一致性仍然不强,由于主从复制仍然是异步的,故障转移过程中仍然可能会出现数据不一致的情况;存储能力仍然受限,由于所有的从节点都要复制主节点的全部数据,无法实现数据的分片存储,导致存储能力受限于单台服务器的内存大小。
工作过程:

集群模式
定义:集群模式是Redis最高级的部署方式,它是通过分片(sharding)技术,将数据分散存储在多个节点上,每个节点都可以执行读写操作,并且每个节点都有相应的从节点,保证数据的高可用性。
优点:存储能力强,可以通过增加节点的数量,实现数据的水平扩展,突破单台服务器的内存限制;性能高,可以通过分散读写压力,提高系统的并发能力和响应速度;高可用,可以通过主从复制和故障转移,实现数据的冗余和容错,保证服务的稳定性。
缺点:部署非常复杂,需要配置多个节点的角色、槽位、复制关系等,增加了系统的管理难度;数据一致性最弱,由于数据分散在多个节点上,且主从复制和故障转移都是异步的,可能会出现数据不一致、丢失或重复的情况;功能受限,由于数据分布在不同的节点上,一些涉及多个键的操作,如事务、聚合函数、跨节点的键迁移等,都会受到限制或不支持。
Redis的安装
rpm包安装

源码安装
1.去官方网站获取源码包并上传到目录下

2.解压源码包

3.安装一系列编译工具

4.切换目录进行编译
![]()
5.启动redis
直接启动会报错

编辑文件进行注释
![]()

再次启动

6.配置redis(vim /etc/redis/6379.conf),监听所有接口

7.重启登录redis

Redis基本操作
查看监听的网络接口和端口

Redis主从模式的搭建
Redis哨兵模式搭建
1.在master中复制哨兵配置文件模板过来进行配置

2.通过sed对配置文件中无用的注释和空行进行删除

3.修改配置文件

protected-mode no 关闭保护模式,允许外部客户端连接。
port 26379: 设置Sentinel监听的端口号为26379。
daemonize no: 以非守护进程模式运行。
pidfile "/var/run/redis-sentinel.pid": 指定Sentinel进程的PID文件路径。
loglevel notice: 设置日志级别为notice,记录重要的信息。
sentinel monitor mymaster 172.25.254.10 6379 2: 监控名为mymaster的主节点,主节点的IP地址为172.25.254.10,端口号为6379,需要至少2个Sentinel节点同意才判断主节点故障。
sentinel down-after-milliseconds mymaster 10000: 当主节点连续10000毫秒(10秒)没有响应时,将其标记为不可用。
sentinel parallel-syncs mymaster 1: 在故障转移过程中,最多允许1个从节点与新的主节点同步数据。
sentinel failover-timeout mymaster 180000: 故障转移超时时间为180000毫秒(180秒)。
4.将配置文件分发到另外两个节点

5.启动服务(每个节点都要开启)

测试:另起一个终端关闭master服务查看另外的两个节点是否已经发色主节点偏移


Redis集群化搭建(需六台主机)
1.删除之前三个节点的数据和redis

2.在六个节点上统一安装redis

3.编辑所有节点的配置文件

![]()

masterauth "123456":设置主节点的认证密码为"123456"。
requirepass "123456":设置客户端连接时需要提供的认证密码为"123456"。
cluster-enabled yes:启用Redis集群模式。
cluster-config-file nodes-6379.conf:指定集群配置文件名为"nodes-6379.conf"。
cluster-node-timeout 15000:设置集群节点超时时间为15000毫秒(15秒)


4.重启服务进行登陆测试

5.创建redis-cluster


相关文章:
NoSql数据库Redis知识点
数据库的分类 关系型数据库 ,是建立在关系模型基础上的数据库,其借助于集合代数等数学概念和方法来处理数据库 中的数据主流的 MySQL 、 Oracle 、 MS SQL Server 和 DB2 都属于这类传统数据库。 NoSQL 数据库 ,全称为 Not Only SQL &a…...
Redis 使用指南
Redis 使用指南 概述 Redis 是一个开源的、基于内存的数据结构存储系统,可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构,如字符串(strings)、哈希(hashes)、列表(lists…...
c++与cmake:完整的C++项目构建注意事项
个人博客:Sekyoro的博客小屋 个人网站:Proanimer的个人网站 最近常常使用cmake构建c项目有感,从创建项目到打包发布总结一下需要注意的事情. 项目组织方式 具体的项目组织方式因人而异,这里推荐一种,在src目录中创建模块目录,再在include目录中常见对应的同名目录包含头文件,…...
Linux自主学习篇
用户及权限管理 sudo 是 "superuser do" 的缩写,是一个在类 Unix 操作系统(如 Linux 和 macOS)中使用的命令。它允许普通用户以超级用户(root 用户)的身份执行命令,从而获得更高的权限。 useradd…...
MQ入门(4)
Erlang:面向高并发的 单机的吞吐量就是并发性:Rabbitmq是10w左右(现实项目中已经足够用了),RocketMQ是10w到20w,Kafka是100w左右。 公司里的并发(QPS) 大部分的公司每天的QPS大概…...
linux下共享内存的3种使用方式
进程是资源封装的单位,内存就是进程所封装的资源的一种。一般情况下,进程间的内存是相互隔离的,也就是说一个进程不能访问另一个进程的内存。如果一个进程想要访问另一个进程的内存,那么必须要进过内核这个桥梁,这就是…...
伊丽莎白·赫莉为杂志拍摄一组素颜写真,庆祝自己荣膺全球最性感女人第一名
语录:女性应该做任何她们想做的事,批评她们的人都见鬼去吧。 伊丽莎白赫莉为《Maxim》杂志拍摄一组素颜写真,庆祝自己荣膺全球最性感女人第一名 伊丽莎白赫莉 (Elizabeth Hurley) 实在是太惊艳了,如今,《马克西姆》杂…...
Qt快捷键说明与用法
编辑与查找 CtrlF:在当前编辑窗口中查找关键字。支持大小写相关、全词匹配、正则表达式匹配等选项,并且查找之后还可以进行替换操作。 CtrlShiftF:进行全局查找,不局限于当前文件。注意,在某些情况下,这个…...
技术周刊 | TS 5.6、Chrome DevTools 性能面板上新、Vite 6 Beta、Fastify v5、HTTP 新方法 Query
增长能力,就是持续做出正确决定的能力。 大家好,我是童欧巴,欢迎来到第 128 期技术周刊。 资讯 TypeScript 5.6 TypeScript 5.6 如期发布。 Chrome DevTools 发布全新性能功能 Chrome DevTools 的性能面板上新测试,包括 Core…...
使用Mockito进行单元测试
1、单元测试介绍 Mockito和Junit是用于单元测试的常用框架。单元测试即:从最小的可测试单元(如函数、方法或类)开始,确保每个单元都能按预期工作。单元测试是白盒测试的核心部分,它有助于发现单元内部的错误。 单元测试…...
CSS 布局三大样式简单学习
目录 1. css 浮动 1.1 效果1 1.2 效果2 1.3 效果3 1.4 效果4 2. css 定位 2.1 absolute 2.2 relative 2.3 fixed 3. css 盒子模型 3.1 效果1 3.2 效果2 3.3 效果3 3.4 效果4 1. css 浮动 1.1 效果1 1.2 效果2 1.3 效果3 1.4 效果4 2. css 定位 2.1 absolute 2.2 …...
集成运放UA741的原理与应用的探索
我们发现TI公司提供了UA741的内部电路,此电路包括22个晶体管,11个电阻,1个二极管,1个电容。 1UA741设计需求 1.1有短路保护 UA741的短路保护功能是指当输出端发生短路时,该器件能够自动保护自身,防止因…...
LeetCode337. 打家劫舍III
// 很好的一道题目,既考察递归又考察动归 // 这个版本超时了,原因是暴搜 // 很显然这里使用的是前序,那是不是应该考虑后序?public int rob(TreeNode root) {if (root null) {return 0;}if (root.left null && root.rig…...
python基础(二) 包和import
包的创建 文件创建命令 在 Django 中,python manage.py startapp first_app 这一行命令的作用是创建一个新的应用(app),名为 first_app。在 Django 项目中,"app" 是实现某些功能模块的单独部分,…...
选址模型 | 基于混沌模拟退火粒子群优化算法的电动汽车充电站选址与定容(Matlab)
目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 基于混沌模拟退火粒子群优化算法的电动汽车充电站选址与定容(Matlab) 问题建模:首先,需要将电动汽车充电站选址与定容问题进行数学建模,确定目标函数和约束…...
WPF入门教学十 资源与字典
在WPF(Windows Presentation Foundation)中,资源与字典是用于管理和重用UI元素的重要机制。它们不仅有助于保持XAML代码的整洁,还能提升应用程序的性能和可维护性。以下是关于WPF资源与字典的详细说明: 静态资源与动态…...
Ubuntu20.04配置NVIDIA+CUDA12.2+CUDNN【附所有下载资源】【亲测有效】【非常详细】
Ubuntu20.04 安装 cudatookit 12.2 cudnn 安装_ubuntu安装cuda toolkit-CSDN博客【最新】cuDNN在CUDA11.7Ubuntu20.04下的安装及卸载_cuda11.7对应的cudnn-CSDN博客...
Golang | Leetcode Golang题解之第424题替换后的最长重复字符
题目: 题解: func characterReplacement(s string, k int) int {cnt : [26]int{}maxCnt, left : 0, 0for right, ch : range s {cnt[ch-A]maxCnt max(maxCnt, cnt[ch-A])if right-left1-maxCnt > k {cnt[s[left]-A]--left}}return len(s) - left }f…...
软考高级:系统安全 -区块链特点:去中心化、开放性、自治性、安全性、匿名性
讲解 生活化例子 想象一下,你和朋友们玩一个共享账本的游戏。每个人都可以在账本上记账,没人可以单独改动账本,大家都可以随时查看账本内容,也不用再信任某个单独的人来管理账本。这就类似于区块链的工作原理。 概念讲解 去中…...
Pandas 数据分析入门详解
今日内容大纲介绍 DataFrame读写文件 DataFrame加载部分数据 DataFrame分组聚合计算 DataFrame常用排序方式 1.DataFrame-保存数据到文件 格式 df对象.to_数据格式(路径) # 例如: df.to_csv(data/abc.csv) 代码演示 如要保存的对象是计算的中间结果,或者以…...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...
Web中间件--tomcat学习
Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...
