Redis缓存机制(详解)

article/2025/9/22 15:58:02

1.Redis 是什么?

 *redis是*一个运行在内存上的key-value存储系统。是NoSQL数据库之一

 2.缓存穿透,缓存击穿,缓存雪崩

/**缓存穿透*/
它会先查询Redis,Redis没有会查询数据库,数据库也没有这就是缓存穿透
业界主流解决方案:布隆过滤器布隆过滤器的使用步骤
布隆过滤器的使用步骤:
1.针对现有所有数据,生成布隆过滤器
2.在业务逻辑层,判断Redis之前先检查这个id是否在布隆过滤器中
3.如果布隆过滤器判断这个id不存在,直接返回
4.如果布隆过滤器判断id存在,在进行后面业务执行/**缓存击穿*/一个计划在Redis保存的数据,业务查询,查询到的数据Redis中没有,但是数据库中有
/**缓存雪崩*/同一时间发生少量击穿是正常的,但是如果出现同一时间大量击穿现象就会造成缓存雪崩大量缓存失效,导致请求都压在mysql上,mysql承担不了,非常可能导致异常
要想避免这种情况,就需要避免大量缓存同时失效
大量缓存同时失效的原因:通常是同时加载的数据设置了相同的有效期导致的
那么我们需要在设置有效期时添加一个随机数,大量数据就不会同时失效了,
/**缓存使用原则*/什么时候,什么样的数据能够保存在Redis中?
1.数据量不能太大
2.使用越频繁,Redis保存这个数据越值得
3.保存在Redis中的数据一般不会是数据库中频繁修改的/**缓存淘汰策略*/Redis将数据保存在内存中, 内存的容量是有限的allkeys-random:所有数据中随机删除数据  

3.Redis持久化策略有两种( RDB本质上就是数据库快照, AOF为(日志)备份 )

/**Redis持久化*/
Redis将信息保存在内存。内存的特征就是一旦断电,所有信息都丢失,对于Redis来讲,所有数据丢失,就需要从数据库从新查询所有数据,这个是慢的。
所以Redis支持了持久化方案,在当前服务器将Redis中的数据保存在本地硬盘上。Redis持久化策略有两种:
1./**RDB:(Redis Database Backup)*/RDB本质上就是数据库快照(就是当前Redis中所有数据转换成二进制的对象,保存在硬盘上)默认情况下,会生成一个dump.rdb的文件当Redis断电或宕机,需要恢复数据时,可以恢复成dump.rdb生成时的所有内容我们可以在Redis的配置文件中添加如下配置信息
<save 60 5> 
60表示秒数,既1分钟
5表示key被修改的次数
配置效果:1分钟内如果有5个key以上被修改,就启动rdb数据库快照程序优点:​ 因为是整体Redis数据的二进制格式,数据恢复是整体恢复的缺点:生成的rdb文件是一个硬盘上的文件,读写效率是较低的,如果突然断电,只能恢复最后一次生成的rdb中的数据2./**AOF(Append Only File): */ AOF策略是将Redis运行过的所有命令(日志)备份下来  这样即使Redis断电,我们也可以根据运行过的日志,恢复为断电前的样子实际情况下,Redis非常繁忙时,我们会将		日志命令缓存之后,整体发送给备份,减少io次数以提高备份的性能和对Redis性能的影响。 我们可以在Redis的配置文件中添加如下配置信息
<appendonly yes>   
经过这个设置,就能保存运行过的指令的日志了,理论上任何运行过的指令都可以恢复。    优点:​ 相对RDB来讲,信息丢失的较少  缺点:  因为保存的是运行的日志,所以占用空间较大实际开发中RDB和AOF是可以同时开启的​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​     

4.Redis存储原理,Redis集群(主从复制、读写分离、哨兵模式、哨兵集群、分片集群)

/**Redis存储原理*/
Redis将内存划分为16384个区域(类似hash槽)
将数据的key使用CRC16算法计算出一个值,取余16384
得到的结果是0~16383
将这个key保存在计算结果对应的槽位
再次查询这个key时,直接到这个槽位查找,效率很高
实际上这就是"散列表"
提高查询的效率/**Redis集群*/
Redis最小状态是一台服务器
这个服务器的运行状态,直接决定Redis是否可用
如果它离线了,整个项目就会无Redis可用,系统会面临崩溃,为了防止这种情况的发生,我们可以准备一台备用机
1./**主从复制*/也就是主机(master)工作时,安排一台备用机(slave)实时同步数据,万一主机宕机,我们可以切换到备机运行缺点,这样的方案,slave节点没有任何实质作用,只要master不宕机它就和没有一样,没有体现价值
2./**读写分离*/这样slave在master正常工作时也能分担Master的工作了但是如果master宕机,实际上主备机的切换,实际上还是需要人工介入的,这还是需要时间的那么如果想实现故障时自动切换,一定是有配置好的固定策略的
3./**哨兵模式*/哨兵主要负责的就是三个任务:监控、故障自动切换和通知。哨兵节点每隔固定时间向所有节点发送请求如果正常响应认为该节点正常
如果没有响应,认为该节点出现问题,哨兵能自动切换主备机
如果主机master下线,自动切换到备机运行,但是这样的模式存在问题。
但是如果哨兵判断节点状态时发生了误判,那么就会错误将master下线,降低整体运行性能。4./**哨兵集群*/我们可以将哨兵节点做成集群,由多个哨兵投票决定是否下线某一个节点哨兵集群中,每个节点都会定时向master和slave发送ping请求如果ping请求有2个(集群的半数节点)以上的哨兵节点没有收到正常响应,会认为该节点下线
5./**分片集群*/ 当业务不断扩展,并发不断增高时只有一个节点支持写操作无法满足整体性能要求时,系统性能就会到达瓶颈这时我们就要部署多个支持写操作的节点,进行分片,来提高程序整体性能

哨兵集群

 

 读写分离

 

哨兵误判

 

5.持久化的意义?

redis持久化的意义,在于故障恢复,数据恢复,也可以归类到高可用的一个环节里面去。

6.edis的高性能如何保证?

线程模型,数据结构,持久化,网络模型

7.Redis的高可靠性如何保证?

持久化,主从复制,哨兵机制

8.Redis的高可扩展性如何保证?

数据分片+负载均衡


http://chatgpt.dhexx.cn/article/U7nouIpE.shtml

相关文章

如何使用 Redis 缓存?

​ 编辑 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 如何使用 Redis 缓存 前言 对于 Redis 来讲&#xff0c;作为缓存使用&#xff0c;是我们在业务中经常使用的&#xff0c;这里总结下&#xff0c;Redis 作为缓存在业务中的使用。 旁路缓存 Cach…

Redis实战——缓存

目录 1 前言 1.1什么是缓存&#xff1f; 1.2 缓存的作用及成本 1.3 Redis缓存模型 2 给商户信息添加缓存 3 缓存更新策略 3.1 更新策略介绍 3.2 主动更新策略 3.3 主动更新策略练习 4 缓存穿透及其解决方案 4.1 缓存穿透的概念 4.2 解决方案及实现 5 缓存雪崩的…

SpringBoot整合Redis缓存

SpringBoot整合Redis缓存 一、缓存概念知识1、是什么缓存2、缓存的优缺点3、为什么使用缓存 二、Redis概念知识1、Redis简介2、为什么用Redis作为缓存3、Redis 支持的数据类型4、Redis缓存常见问题1. 缓存穿透2. 缓存击穿3. 缓存雪崩4. 缓存一致性 三、SpringBoot整合redis1、使…

云平台的层次架构

云计算平台 ​ 云计算是一种资源的服务模式&#xff0c;该模式可以实现随时随地、便捷按需地从可配置计算资源共享池中获取所需的资源(如网络、服务器、存储、应用及服务)&#xff0c;资源能够快速供应并释放&#xff0c;大大减少了资源管理工作开销。 ​ 经典云计算架构包括…

政务云平台服务

做政企项目交付&#xff0c;部署在政务云上的信息系统&#xff0c;经常会需要申请政务云资源&#xff0c;尤其是等保测评&#xff0c;还需要申请相关安全服务设施。 通过几个参考例子&#xff0c;简要说明政务云平台的自愿服务。 广州市信息化服务中心 广州市政府信息化云服…

SaaS的几种架构解析

转载&#xff1a;https://www.xugj520.cn/amp/SaaS_Architecture.html SAAS成熟度模型分级 LEVEL1 定制开发 软硬件都由SAAS服务商提供&#xff0c;软件的使用者只需要按时间、用户数、空间等逐步支付租赁使用费用即可 LEVEL2 可配置 通过不同的配置满足不同用户的需求&#…

SaaS云HIS系统源码功能介绍

SaaS云HIS首页功能&#xff1a;包括工作计划、预警、主功能菜单、医院机构公告。 一、工作计划 1.值班概况&#xff1a;值班日期、值班时间、值班科室&#xff08;内科、外科等&#xff09; 2.待处理患者&#xff1a;内科人数、外科人数等 病历统计&#xff1a;入院病历、出…

saas系统需要什么样的云服务器,SAAS系统和云服务器的区别

SAAS系统和云服务器的区别 内容精选 换一换 云耀云服务器默认设置的时区,是您制作镜像时选择的时区。如需修改,请参见本节内容,将其更改为所需的本地时间或网络中的其他时区。云耀云服务器登录成功后,如果发现云耀云服务器系统时间与本地时间不一致,建议更改时区,将云耀云…

虚拟化与云平台

虚拟化&#xff1a; 虚拟化技术就是指一台物理机上可以跑多台虚拟机&#xff0c;共享内存、CPU、IO等硬件资源&#xff0c;虚拟机之间在逻辑上是相互隔离的。 共享的物理机称为“宿主机”&#xff0c;虚拟机称为“客户机” 宿主机通过hypervisor将硬件资源虚拟化给客户机共享…

OneNET云平台

OneNET云平台 由中国移动打造的PaaS物联网开放平台。平台能够帮助开发者轻松实现设备接入与设备连接,快速完成产品开发部署,为智能硬件、智能家居产品提供完善的物联网解决方案。 OneNET致力于开发者的体验,逐步提升云服务体量,着手用户运营,深化运维管理和云端大数据分…

开源项目saas电商项目

1.线上电商私域电商一体化 数字化零售我们采用数字商城SaaS数字门店SaaS一体化结合赋能 数字门店SaaS&#xff0c;适用连锁门店&#xff0c;如杏花楼、廖记、奈雪的茶 数字商城SaaS&#xff0c;适用线上电商&#xff0c;对标《有赞》&#xff1b;如淘系商家 数字门店SaaS与数…

智能家居云平台设计

智能家居云平台设计 摘 要 智能家居是未来家居的发展方向&#xff0c;其利用先进的网络技术、计算机技术和无线通信技术等将家居中的各种电子电气设备连接起来&#xff0c;统一管理、远程监控和资源共享&#xff0c;实现了高效、便利的生活环境。近些年互联网的迅猛发展&…

云平台概念详解

1. 前言 随着云计算概念的不断落地和推广, 目前云平台已经得到了非常广泛的使用. 云平台帮助用户在: • 应用落地 • 服务落地 • 安全保障 • 性能 等方面获得比传统方式更高效, 更节省, 更稳定, 更方便的优势. 2. 云平台的概念 云平台也称云计算平台. 云计算…

云平台是什么、什么是云、云平台的分类、主流公有云平台有哪些、云的三种服务、PaaS、SaaS、IaaS

云平台的基础概念 1.1 前言 随着云计算概念的不断落地和推广, 目前云平台已经得到了非常广泛的使用. 云平台帮助用户在: 应用落地服务落地安全保障性能 等方面获得比传统方式更高效, 更节省, 更稳定, 更方便的优势. 1.2 云平台的概念 云平台也称云计算平台. 云计算, 顾名…

初代SAAS平台应用层架构设计

近期参与SAAS项目第一代应用设计&#xff0c;为满足整体灵活性&#xff0c;复用性和可定制化&#xff0c;得出如下应用层模型&#xff0c;希望能给大家相互参考学习&#xff0c;设计上有什么缺漏请多指教 核心思想 模块为最小化购买单位 例如商城模块 分销模块等多个模块组合…

SAP 云平台 (Cloud Platform) 架构概述

引言 在我们开始SAP云平台的架构之旅之前&#xff0c;让我们先看看SAP已经发布的一些其他云产品。这些云产品方案可以分为公有云和私有云两种。 SAP公有云解决方案见下图最右侧&#xff0c;比较著名的有SAP SuccessFactors和SAP Cloud for Customer(C4C)等&#xff0c;作为SAP软…

大型JAVA智慧校园云平台SaaS源码

▶ 让技术回归教育 智慧校园完整技术栈&#xff1a; 前后端分离 1、使用springboot框架Javavue2 2、数据库MySQL5.7 3、移动端小程序使用小程序原生语音开发 4、电子班牌固件安卓7.1&#xff1b;使用Java Android原生 5、elmentui &#xff0c;Quartz&#xff0c;jpa&#xff…

Saas免费开源充电桩平台

开源充电桩Saas系统&#xff08;v2.3.1&#xff09; 我的车&#xff0c;到底该选什么功率充电桩&#xff1a; 点我访问 体验地址&#xff0c;star star &#xff1a; 点我访问 日志记录 每天进步一点点&#xff0c;希望每天能更新一些进度。 系统更新日志 2022.10.4 重新整理PP…

多校园SaaS运营智慧校园云平台源码 智慧校园移动小程序源码

智慧校园管理平台源码 智慧校园云平台源码 智慧校园全套源码包含&#xff1a;电子班牌管理系统、成绩管理系统、考勤人脸刷卡管理系统、综合素养评价系统、请假管理系统、电子班牌发布系统、校务管理系统、小程序移动端、教师后台管理系统、SaaS运营云平台&#xff08;支持多学…

云平台的分类

要了解云平台之前&#xff0c;首先讲一下云计算 定义&#xff1a;云计算&#xff08;cloud computing&#xff09;是分布式计算的一种&#xff0c;指的是通过网络“云”将巨大的数据计算处理程序分解成无数个小程序&#xff0c;然后&#xff0c;通过多部服务器组成的系统进行处…