Redis与DB数据一致性-个人总结

缓存读写策略:

Cache-Aside Pattern

读缓存: 先查询缓存,存在则返回, 如果不存在则查询DB, 再塞回缓存中,最后返回结果.

写缓存: 更新完成DB之后,删除缓存.

适合场景: 读比较多的场景,更新比较少的场景. 像我们工作当中,基础配置系统, 公私钥管理系统就是这种.

Read/Write Through Pattern

读缓存: 先查询缓存,存在则返回, 如果不存在则查询DB, 再塞回缓存中,最后返回结果.

写缓存:

更新完数据库;

更新成功之后, 更新缓存; 如果更新失败,则不更新缓存;

适用场景:

Write behind Pattern

读缓存: 先查询缓存,存在则返回, 如果不存在则查询DB, 再塞回缓存中, 最后返回结果.

写缓存:

更新缓存;

每隔一段时间,同步缓存信息到数据库;

适用场景:

缓存穿透是指查询一个不存在的key, 如果缓存中不存在,则查询数据库; 如果大量的请求过来,导致大量无效的key过来,则会导致数据库压力较大.

解决方案: 给不存在的key,设置一个标识,设置缓存key为一个特定的标识,这个标识表示key不存在.

缓存击穿是指批量缓存key在同一时间失效,导致请求在缓存中查询不到,直接查询数据库. 导致数据库压力较大.

解决方案: 缓存失效时间设定随机值,尽量避免无故失效;

//TODO

参考:

一文搞懂缓存和数据库的一致性问题(全面总结)_数据库缓存一致性-CSDN博客

相关推荐
Francek Chen1 小时前
【大数据存储与管理】分布式数据库HBase:03 HBase数据模型
大数据·数据库·hadoop·分布式·hdfs·hbase
小吴编程之路8 小时前
MySQL 索引核心特性深度解析:从底层原理到实操应用
数据库·mysql
~莫子8 小时前
MySQL集群技术
数据库·mysql
凤山老林8 小时前
SpringBoot 使用 H2 文本数据库构建轻量级应用
java·数据库·spring boot·后端
就不掉头发9 小时前
Linux与数据库进阶
数据库
与衫9 小时前
Gudu SQL Omni 技术深度解析
数据库·sql
咖啡の猫9 小时前
Redis桌面客户端
数据库·redis·缓存
oradh9 小时前
Oracle 11g数据库软件和数据库静默安装
数据库·oracle
what丶k9 小时前
如何保证 Redis 与 MySQL 数据一致性?后端必备实践指南
数据库·redis·mysql
_半夏曲9 小时前
PostgreSQL 13、14、15 区别
数据库·postgresql