分布式缓存最全详解(图文全面总结)

简介: 关注【mikechen的互联网架构】,10年+ BAT架构经验倾囊相授。本文详细介绍分布式缓存的核心概念、特点及常见问题,如缓存雪崩、缓存穿透和缓存击穿,并探讨其应用场景和解决方案。欢迎交流。

关注△mikechen的互联网架构△,10年+BAT架构经验倾囊相授

image.png

大家好,我是 mikechen | 陈睿

分布式缓存在分布式架构里面占据了非常核心地位,可以说是分布式的基石,所以需要掌握好分布式缓存,下面我就全面来详解分布式缓存。

分布式缓存

分布式缓存:就是将缓存数据分布在多个节点上,以提高系统的性能、可伸缩性、可用性。

image.png

分布式缓存通常采用键值对存储,可以存储各种类型的数据,比如:对象、数据库查询结果、计算结果等等。

分布式缓存里面,我们常用的分布式缓存包括:Redis和Memcached,Redis还会更多。

分布式缓存特点

分布式缓存具有如下4大特性:

image.png

1.高性能

这是分布式缓存最大的使用场景,就是提升性能。

比如:通过缓存热点数据,降低数据库、以及其他后端存储的访问频率,提高系统响应速度。

2.动态扩展性

可以轻松添加或移除缓存节点,以应对不断增长的负载。

3.高可用性

高可用性会增强,原因很简单,因为分布式缓存都是多个节点,而且,分布式缓存通常具有数据备份、故障转移机制等功能。

所以,可用更好的确保在节点故障时,仍能提供服务。

4.透明性

用户无需关心缓存的具体实现,可以像使用本地缓存一样,使用分布式缓存。

分布式缓存核心问题

分布式缓存面临比较大的问题,经常会涉及:缓存雪崩、缓存击穿等问题。

1.缓存雪崩

缓存雪崩,就是:大量缓存同时失效,导致大量请求直接访问后端存储,压力骤增,导致系统崩溃。

如下图所示:

image.png

缓存雪崩通常发生在缓存中的大量数据在同一时间失效,例如:缓存的过期时间相同,或由于某种原因导致大规模数据同时失效。

一般会经历,如下步骤:

1.缓存失效

缓存中的大量数据同时失效,可能是由于过期时间相同、缓存清理操作或其他原因。

这导致之前缓存的数据不再可用,需要从后端存储重新加载。

2.请求压力增大
由于热点数据需要重新加载,大量的请求同时涌入系统,这些请求直接访问后端存储系统,而不经过缓存。

由于瞬时请求量的激增,后端存储系统可能难以应对,导致性能下降。

3.存储系统压力骤增

大量的请求直接访问后端存储系统,压力骤增,可能导致存储系统的性能下降,甚至宕机。

这就是缓存雪崩的最终步骤,系统可能无法正常提供服务。

2.缓存穿透

缓存穿透是指查询一个不存在的数据,由于缓存没有命中,导致请求直接访问底层存储系统。

如下图所示:

image.png

缓存穿透通常由于一些恶意请求或异常查询引起,而这些查询无法在缓存中找到对应的数据。

可用采用,如下措施:

1.缓存空值

在缓存中设置空值,比如:null、或你自己指定的特定标记。

表示查询的键对应的数据不存在,防止相同的查询一直穿透到存储系统。

这种方式,就是会特比浪费内存空间,因为内存还是非常高贵的资源。

2.布隆过滤器

使用布隆过滤器等数据结构,快速判断查询的键是否存在于缓存中,减少对存储系统的访问。

布隆过滤器(Bloom Filter)是一种数据结构,用于判断一个元素是否属于一个集合,它具有高效的插入和查询操作。

这个是,目前使用比较多的方案,成本低,效果好。

3.缓存击穿

缓存击穿问题会导致系统性能下降,响应时间增加,可能引起雪崩效应,进而影响整个系统的可用性。

缓存击穿,通常发生在某个热点数据的缓存失效的瞬间,此时大量请求同时涌入系统。

如下图所示:

image.png

此时,无法在缓存中获取数据,直接导致存储系统的压力骤增,数据库压力过大,也会出现同样的问题。

所以,设置合理的缓存过期时间时间,就变得非常的重要了。

4.缓存预热

缓存预热是在系统启动或低峰期时,提前将热点数据加载到缓存中。

比如,大家熟知的阿里双11秒杀,这些热点数据,都会提前放入到缓存。

一般,在系统启动或低峰期,通过手动或自动的方式,将热点数据加载到缓存中。

对于大量数据的情况,可以考虑使用异步加载机制等。

总之,通过提前加载热点数据到缓存中,系统可以更快地响应用户请求,提高系统的稳定性和性能。

分布式缓存应用

分布式缓存广泛用于高并发读取场景,如Web应用、电子商务平台等。

通过缓存热点数据,可以大大提高系统的读取性能,减轻对底层存储系统的负担。

分布式缓存常,还被用于存储用户会话数据,避免在每次请求中都需要查询数据库,也就是分布式Session。

除此之外,在分布式计算场景中,分布式缓存还可以用于存储中间计算结果,提高计算效率。

以上,是分布式缓存详细解析,欢迎评论区留言交流或拓展。

我是 mikechen | 陈睿 ,关注【mikechen的互联网架构】,10年+BAT架构技术倾囊相授。

本文已同步我的技术博客 www.mikechen.cc,更新至我原创的《30W+字大厂架构技术合集》中。

相关文章
|
8月前
|
存储 NoSQL BI
Redis 实战篇:巧用 Bitmap 实现亿级海量数据统计
Redis 实战篇:巧用 Bitmap 实现亿级海量数据统计
196 0
|
16天前
|
存储 缓存 负载均衡
从零到一:分布式缓存技术初探
分布式缓存通过将数据存储在多个节点上,利用负载均衡算法提高访问速度、降低数据库负载并增强系统可用性。常见产品有Redis、Memcached等。其优势包括性能扩展、高可用性、负载均衡和容错性,适用于页面缓存、应用对象缓存、状态缓存、并行处理、事件处理及极限事务处理等多种场景。
43 1
|
2月前
|
存储 缓存 NoSQL
【赵渝强老师】基于Redis的旁路缓存架构
本文介绍了引入缓存后的系统架构,通过缓存可以提升访问性能、降低网络拥堵、减轻服务负载和增强可扩展性。文中提供了相关图片和视频讲解,并讨论了数据库读写分离、分库分表等方法来减轻数据库压力。同时,文章也指出了缓存可能带来的复杂度增加、成本提高和数据一致性问题。
【赵渝强老师】基于Redis的旁路缓存架构
|
3月前
|
缓存 监控 Java
大厂性能优化的10大顶级方案 (万字图文史上最全)
本文详细介绍了大厂性能优化的10大顶奢方案,涵盖代码优化、缓存优化、异步优化、多线程优化、前端优化、微服务架构优化、硬件升级、数据库优化、过载保护优化以及度量与监控系统等方面。每部分不仅提供了理论知识,还结合实际案例和代码示例,帮助读者全面理解和应用这些优化策略。文章还特别强调了架构设计的重要性,指出架构师需要具备多方面的知识和技能,包括硬件、软件、网络协议、分布式知识等,以应对复杂的技术挑战。最后,作者尼恩分享了自己多年的经验,提供了丰富的技术资源和实战指导,助力读者在面试和工作中取得成功。
大厂性能优化的10大顶级方案 (万字图文史上最全)
|
存储 缓存 NoSQL
百度搜索:蓝易云【Redis相比Memcached有哪些优势?】
总的来说,Redis相对于Memcached具有更多的功能和灵活性,适用于更广泛的应用场景。然而,对于简单的键值对缓存需求,Memcached的性能可能更高,因为它专注于简单的内存缓存操作,并具有更低的内存消耗。选择使用Redis还是Memcached应根据具体的应用需求来决定。
353 0
|
8月前
|
缓存 NoSQL 前端开发
【Redis技术专区】「实战案例」谈谈使用Redis缓存时高效的批量删除的几种方案
【Redis技术专区】「实战案例」谈谈使用Redis缓存时高效的批量删除的几种方案
154 0
|
存储 缓存 NoSQL
高性能的本地缓存方案选型,看这篇就够了!
高性能的本地缓存方案选型,看这篇就够了!
23528 0
|
缓存 NoSQL 算法
【分布式技术专题】分布式缓存优化之初探布隆过滤器的使用指南
【分布式技术专题】分布式缓存优化之初探布隆过滤器的使用指南
295 0
【分布式技术专题】分布式缓存优化之初探布隆过滤器的使用指南
|
缓存 监控 NoSQL
【Redis基础指南】推荐给大家的「主从模式」+「缓存穿透」的学习小贴士(提炼优化)
【Redis基础指南】推荐给大家的「主从模式」+「缓存穿透」的学习小贴士(提炼优化)
208 0
【Redis基础指南】推荐给大家的「主从模式」+「缓存穿透」的学习小贴士(提炼优化)