“数据持久化”和“缓存与数据库不一致”到底有什么区别?

之前,我一直把"数据持久化"和"缓存与数据库不一致问题"给搞混了。我当时复习的时候基本上就没有思考,就是纯背诵,数据持久化是什么,数据持久化有两种方式,这两种方式特点是什么,然后巴拉巴拉一堆。缓存与数据库不一致问题是什么什么,怎么解决缓存与数据库不一致问题,巴拉巴拉。结果背着背着,我把自己给背懵了,这两个东西确实有点像,但是具体哪里像我也说不出来,久而久之,我的脑子就把这两个给混淆了。

究其原因,我是没有做到深度思考。我就是做一些很机械化的背诵,根本没有想过这两者的区别,没有想过以下两个问题:

1.为什么要有这门技术?

2.这门技术解决了什么问题?

首先,为什么要有数据持久化呢?也就是说数据持久化的目的是什么呢?数据持久化是防止数据宕机时数据丢失,所以要用 AOF 和 ROB 方式来对 Redis 中某时刻的数据状态进行记录。数据持久化是侧重于记录数据某时刻的状态,Redis宕机了,还可以恢复。

对于数据库和缓存不一致问题,又是另一方面的内容了。Redis有一种数据结构叫哈希,哈希是可以做缓存的,所以Redis可以做缓存。如果Redis不用来做缓存,那就根本不会有Redis与数据库不一致的情况。正是因为Redis做了缓存,导致现在读写请求都要先写Redis,再写数据库。如果写Redis和写数据库这两个操作都成功,那其实一点问题没有,但是假如有一个没有成功,那就废了,就会产生数据库和缓存不一致。数据库和缓存不一致问题我们通过调整写数据库和写缓存,或者写数据库和删除缓存的顺序先后,就可以解决数据库和缓存不一致问题。而不是像数据持久化一样采用技术的方式(AOF日志和ROB快照)解决问题。

至于这两者的具体是如何实现的,其实我已经差不多心中有数了。

数据持久化:

数据库和缓存不一致问题:

通过写这篇文章,我懂得了深度思考的重要性,它可以使得我们对知识点的理解更加透彻,而不是浮于表面,我之前对这些知识点的理解就是浮于表面,当我做到逼着自己去想以上那两个问题的时候,才能做到真正理解这个知识点,从而获得可观的进步。

相关推荐
学逆向的11 分钟前
C 堆区内存管理
c语言·开发语言·网络安全
huoyueyi26 分钟前
《融天AI-APP从0到1开发实录》
开发语言·lua
智能运维指南43 分钟前
研制过程“两张皮“怎么破:研制一体化支撑平台的定位、能力边界与落地前提
java·前端·人工智能·嘉为蓝鲸
znnnk1 小时前
数据库被AI“重写”:2026,从CPU中心走向GPU中心
数据库·人工智能·oracle
微微%1 小时前
mysql的安装和使用
数据库·mysql·mysql8安装
yz_aiks2 小时前
Spring AI 2.1 ChatMemory 已过时用什么替代:迁移到 Session Memory 实战(JDBC 存储与会话压缩)
java·spring boot·大模型·ai agent·spring ai
金銀銅鐵2 小时前
[Java] 用 GUI 展示 EnumMap 增删键值对时的内部变化
java·后端·ai编程
学长毕设2 小时前
基于SpringBoot的上门洗车服务系统设计与实现
java·spring boot·后端
jason成都2 小时前
RTKLIB-Java 多基线联合RTK:FIX率从0%到91.5%的三层根因修复
java·gnss·rtklib·rtklib_java
OpenAnolis小助手2 小时前
PHP 两个严重漏洞曝光,龙蜥社区 24 小时完成 3 版本修复
开发语言·操作系统·php·龙蜥社区