千家信息网

缓存系统设计有哪些性质

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要讲解了"缓存系统设计有哪些性质",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"缓存系统设计有哪些性质"吧!Previously缓存系统涉及的
千家信息网最后更新 2026年11月03日缓存系统设计有哪些性质

这篇文章主要讲解了"缓存系统设计有哪些性质",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"缓存系统设计有哪些性质"吧!

Previously

缓存系统涉及的问题和知识点是比较多的,我主要分为以下几个方面来跟大家探讨:

  • 稳定性

  • 正确性

  • 可观测性

  • 规范落地和工具建设

缓存正确性

数据更新常见做法

首先,我们讲数据一致性的前提是我们DB的更新和缓存的删除不会当成一个原子操作来看待,因为在高并发的场景下,我们不可能引入一个分布式锁来把这两者绑定为一个原子操作,如果绑定的话就会很大程度上影响并发性能,而且增加系统复杂度,所以我们只会追求数据的最终一致性,且本文只针对非追求强一致性要求的高并发场景,金融支付等同学自行判断。

常见数据更新方式有两大类,其余基本都是这两类的变种:

  • 先删缓存,再更新数据库

这种做法是遇到数据更新,我们先去删除缓存,然后再去更新DB,如左图。让我们来看一下整个操作的流程:

  • A请求需要更新数据,先删除对应的缓存,还未更新DB

  • B请求来读取数据

  • B请求看到缓存里没有,就去读取DB并将旧数据写入缓存(脏数据)

  • A请求更新DB

可以看到B请求将脏数据写入了缓存,如果这是一个读多写少的数据,可能脏数据会存在比较长的时间(要么有后续更新,要么等待缓存过期),这是业务上不能接受的。

  • 先更新数据库,再删除缓存

上图的右侧部分可以看到在A更新DB和删除缓存之间B请求会读取到老数据,因为此时A操作还没有完成,并且这种读到老数据的时间是非常短的,可以满足数据最终一致性要求。

上图可以看到我们用的是删除缓存,而不是更新缓存,原因如下图:

上图我用操作代替了删除或更新,当我们做删除操作时,A先删还是B先删没有关系,因为后续读取请求都会从DB加载出最新数据;但是当我们对缓存做的是更新操作时,就会对A先更新缓存还是B先更新缓存敏感了,如果A后更新,那么缓存里就又存在脏数据了,所以 go-zero 只使用删除缓存的方式。

我们来一起看看完整的请求处理流程:

注意:不同颜色代表不同请求。

  • 请求1更新DB

  • 请求2查询同一个数据,返回了老的数据,这个短时间内返回旧数据是可以接受的,满足最终一致性

  • 请求1删除缓存

  • 请求3再来请求时缓存里没有,就会查询数据库,并回写缓存再返回结果

  • 后续的请求就会直接读取缓存了

另外留一个问题大家可以思考下,对于下图的场景,我们该怎么应对?

感谢各位的阅读,以上就是"缓存系统设计有哪些性质"的内容了,经过本文的学习后,相信大家对缓存系统设计有哪些性质这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

缓存 数据 更新 系统 一致 一致性 性质 设计 上图 场景 数据库 时间 问题 学习 不同 做法 内容 原子 常见 方式 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 天津市摩尔互联网科技 上海睿民互联网科技有限公司 金诺互联网科技 广州善班互联网科技 广州紫鲸互联网科技 互联网科技素材视频竖屏 深圳国际航运科技和互联网 温州喔噻互联网科技有限公司 顶级互联网科技成果有哪些 上海宁丞科技互联网 黑科技闪耀互联网之光 中国航天科技大学国际工业互联网 江苏苏星互联网科技有限公司 产业互联网科技服务公司 互联网与数字科技关系 山东大美朱楼互联网科技有限公司 互联网科技对化妆品行业 保山浩联互联网科技有限公司 互联网科技大佬云集 瑞安市蟠桃会互联网科技有限公司 互联网未来科技 厦门比较好的科技互联网公司 坤平互联网科技 互联网科技如何创业 上海钢联属于互联网科技股吗 萌小萌互联网科技河南有限公司 广州智享互联网科技 安徽零酒互联网科技有限公司 互联网科技创新创业项目 黑龙江互联网科技公司
0