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

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

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

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

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

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

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

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

数据持久化:

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

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

相关推荐
show433几秒前
多格式导出怎么做?2026免费小程序TXT/SRT实践
开发语言·小程序·c#
circuitsosk几秒前
长文本与高并发下的Token“瘦身”策略:Prompt压缩与上下文窗口优化
java·前端·python·prompt·上下文窗口·token优化
岁岁养乐多3 分钟前
LangChain4j 工厂模式
java·开发语言
小小龙学IT12 分钟前
Day 28 项目调试与优化 —— 给聊天室做一次“全面体检“
c语言·开发语言
朱峥嵘(朱髯)13 分钟前
数据库如何根据全表 NDV 估算子集的 NDV
数据库·算法
小小小米粒14 分钟前
idea常用搭配
java
吃饱了得干活15 分钟前
Java Map 核心原理:从数据结构到 put/get 执行,一篇彻底讲透
java·后端
晚安code16 分钟前
Java并发集合详解:从HashMap到ConcurrentHashMap
java
hy.z_77720 分钟前
【C++】9. Vector
开发语言·c++
不才不才不不才24 分钟前
Spring 源码系列(17): HandlerMapping 与 HandlerAdapter 两大体系
java·后端·spring