Redis(六)—— Redis高级

一、一致性

首先要再重复一遍,缓存就是利用了数据短暂不一致这一点去提升性能的,所以没必要考虑强一致性。

一致性指的是并不是redis和DB的双向同步,比如读写穿透和异步写回模式,只把缓存当做唯一入口,只需要redis单向同步给DB,比如旁路模式,只需要DB单向同步到redis。而且只能单向同步,不能双向同步!! 因为只能选择一个作为"可靠数据源",要么选DB,要么选redis,不能既redis往DB同步,又DB往redis同步。

|------|-----------------------------|-------|-------------------------------------|
| 旁路缓存 | 读时缓存作为入口,更新时DB作为入口 | 最终一致性 | 最常用,因为适用于读多写少场景,而业务上读多写少的场景对多,所以最常用 |
| 读写穿透 | 缓存作为唯一数据入口,读写都走缓存,同步更新缓存和DB | 强一致性 | |
| 异步写回 | 缓存作为唯一数据入口,先更新缓存,随后异步批量更新DB | 最终一致性 | |

  1. 读流程 (Read Path)

查缓存:应用先尝试从Redis读取数据。

缓存命中:若Redis有数据,直接返回。

缓存未命中:若Redis无数据,则从MySQL查询,回填缓存。将从MySQL查到的数据写入Redis,并设置过期时间(这里是为了避免写流程里删除缓存失败做的一个小兜底,但是治标不治本),再返回数据。(懒加载思想)

  1. 写流程

更新数据库:应用先更新MySQL中的数据。

删除缓存:数据库更新成功后,立即删除 Redis中对应的缓存数据

旁路模式在极特殊的并发情况下会出现问题,需要采用一些兜底措施,这里先不探讨了。

相关推荐
龙腾AI白云8 小时前
AI检索增强生成(RAG):解决大模型幻觉的核心落地技术
数据库·人工智能·机器学习·知识图谱
一 乐8 小时前
动漫书销售商城|基于springboot + vue动漫书销售商城(源码+数据库+文档)
java·数据库·vue.js·spring boot·毕业设计
zzj_2626108 小时前
MySQL常用操作
数据库·mysql
其实防守也摸鱼8 小时前
Fastjson 反序列化漏洞(JNDI注入)
android·数据库·安全·oracle·自动化·fastjson·反序列化
haerapi9 小时前
把 PostgreSQL 复制巡检做成可审计闭环:确定性采集、阈值判定与受控模型归纳
数据库·postgresql
微学AI10 小时前
不让每一步都调用最贵模型:用蓝耘智能路由改造自主式研究 Agent
数据库·人工智能·蓝耘
yjb.gz10 小时前
Oracle19 RAC查看集群状态及磁盘空间情况(巡检)
数据库
钝挫力PROGRAMER10 小时前
开发踩坑记:MyBatis selectKey、空 SQL
数据库·sql·mybatis
JosieBook10 小时前
【数据库】MySQL 实战精通系列 · 第6篇:InnoDB 存储引擎、日志与崩溃恢复
数据库·mysql
杨云龙UP11 小时前
TDengine 3.4.2.8 Community 三节点三副本生产集群部署实战(DNode/MNode/taosAdapter/Explorer)
大数据·linux·运维·数据库·tdengine·时序库