缓存用了这么多年,没想到一直用错了?

Posted 架构师之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了缓存用了这么多年,没想到一直用错了?相关的知识,希望对你有一定的参考价值。

《大专栏》第六阶“ 缓存”已经放出。

工程上,缓存一般有几种使用方式?
(1) 进程内缓存
(2)进程外缓存,也就是 缓存服务

如果有多个服务使用进程内缓存,如何保证一致性?
常见的有三种方法:
(1)服务节点同步通知;
(2)MQ异步通知;
(3)牺牲少量一致性,定期后端更新;

绝大部分情况,还是应该使用缓存服务,缓存的使用,有什么注意点?
以下几点,应该要注意:
(1)服务与服务之间不要通过缓存传递数据;
(2)如果缓存挂掉,可能导致雪崩,此时要做高可用缓存,或者水平切分;
(3)调用方不宜再单独使用缓存存储服务底层的数据,容易出现数据不一致,以及反向依赖;
(4)不同服务,缓存实例要做垂直拆分,不宜共用缓存;

互联网缓存操作细节,最佳实践是什么?
Cache Aside Pattern

Cache Aside Pattern的细节是什么?
它分为读缓存最佳实践,以及写缓存最佳实践。

读缓存最佳实践 是:先读缓存,命中则返回;未命中则读数据库,然后设置缓存。

写缓存最佳实践 是:
(1)淘汰缓存,而不是修改缓存;
(2)先操作数据库,再操作缓存;
画外音:为什么呢?

缓存的本质是“冗余了数据库中的数据”,可能存在什么问题?
缓存与数据库 数据不一致

什么场景下容易出现不一致?
写后立即读 业务场景。
画外音:为什么呢?

出现不一致时,优化思路是什么?
及时把缓存中的脏数据淘汰掉。

具体要怎么淘汰,保证缓存与数据库中数据的一致性呢?
(1)服务同步二次淘汰法;
(2)服务异步二次淘汰法;
(3)线下异步二次淘汰法;
画外音:二次淘汰法,是很常见的一种实践。

目前缓存服务最常用的是什么?
Redis和memcache。

什么时候选择使用Redis?
以下场景优先使用Redis:
(1)需要支持复杂数据结构;
(2)需要支持持久化;
(3)需要天然高可用;
(4)value存储内容比较大;
如果只是纯KV,可以使用memcache。
画外音:纯KV场景,为什么memcache会更快呢?

17次直播回看,以及《架构师第六阶:缓存架构》的6节也已经放出,系统性的详聊了上面这些问题,感兴趣的同学可以扫码看细节。

17次直播精华回看,有哪些内容?

(1)每秒100w请求,秒杀架构
(2)千万粉丝,feed架构
(3)千万同时在线,IM架构
(4)每秒100w检索,搜索引擎内核架构
(5)MQ内核细节
(6)RPC内核细节
(7)数据库架构
(8)多机房多活架构与细节
(9)分布式调用链追踪架构与细节
(10)3周自研自动化上线平台
(11)区块链中的架构理念
(12)数据库性能瓶颈定位
(13)反范式数据库设计
(14)微服务抽离与解耦
(15)经典架构10问
(16)微服务与数据库架构10问
(17)技术人职业发展规划

每次1-2小时不等,全部已放出。


50节架构师训练营干货重放,有哪些内容?

第一阶:技术选型(5节,已放出)

第二阶:接入层架构(5节,已放出)

第三阶:极速性能优化(3节,已放出)

第四阶:微服务架构(7节,已放出)

第五阶:数据库架构(6节,已放出)

第六阶:缓存架构(7节,已放出)

第七阶:架构解耦

第八阶:架构分层

第九阶:架构进阶

把控住这些,应该能成为一名P8的架构师吧?


其他“阶”内容何时放出?
2.21之前全部放出

《大专栏》,有没有折扣?
(1)巨折899(原价1699);
(2) 参加过二期训练营的小伙伴免费
(3)邀请朋友一起学,返现20%;

有进一步福利么?
2.20之前,可领150优惠券(749)。
画外音:仅限这两天了,抓紧时间。

如何领优惠券?

扫码领券,直减150,仅限2.20之前


如何邀请小伙伴参加?
详情页右上角 分享,推广员 不买专栏也能邀返20%

如何入手《大专栏》?
扫码,入手架构师之路《大专栏

白嫖了这么多年,欢迎为情怀补票,希望大家有收获,早日成为P8P9架构师

画外音:建议平均每天花2小时,倍速看1-2集直播,5节训练营,春节20天假期搞定。


讨论:
写数据时,为什么要先操作数据库,再操作缓存?

阅读原文,订阅《大专栏》(先领优惠券

以上是关于缓存用了这么多年,没想到一直用错了?的主要内容,如果未能解决你的问题,请参考以下文章

缓存,原来我们一直都用错了!

用了这么多年的开发框架,为什么我一直坚持用 React?

vue用了vuex和路由的缓存,出问题了一个页面添加按钮进去后一直都有上一次添加的数据参数在上面如何修改?

面试挂在了 LRU 缓存算法设计上

CYQ.Data V5 分布式缓存MemCached应用开发介绍

ie8 下使用iframe内容不更新一直读取缓存怎么办