阿里华为等大厂的本地缓存、分布式缓存解决方案详解(上)

简介: 阿里华为等大厂的本地缓存、分布式缓存解决方案详解
  • 互联网应用常规流程、

image.png


缓存可使用在1~4的各个环节中,每个环节的缓存方案与使用各有特点。


1 缓存特征

数据分类


按使用频率和方式:


  • 静态数据
    一般不变,类似于字典表
  • 准静态数据
    变化频率很低,部门结构设置,全国行政区划数据等
  • 中间状态数据
    一些计算的可复用中间数据,变量副本,配置中心的本地副本
  • 热数据
    使用频率高
  • 读写比较大
    读的频率 >> 写的频率


这些数据适合于使用缓存的方式访问


  • 广义,为了加速数据处理,让业务更快访问的临时存放冗余数据


  • 狭义,在分布式系统里把缓存到内存的数据,也就是 Redis
    缓存是一个数据模型对象,有它的一些特征

1.1 命中率


命中率=返回正确结果数/请求缓存次数

命中率问题是缓存中的一个非常重要的问题,它是衡量缓存有效性的重要指标。命中率越高,表明缓存的使用率越高。


1.2 最大元素(或最大空间)


缓存中可以存放的最大元素的数量,一旦缓存中元素数量超过这个值(或者缓存数据所占空间超过其最大支持空间)

那么将会触发缓存启动清空策略,根据不同的场景合理的设置最大元素值往往可以一定程度上提高缓存的命中率,从而更有效的使用缓存


1.3 清除策略

缓存的存储空间有限制,当缓存空间被用满时,如何保证在稳定服务的同时有效提升命中率?

这就由缓存清空策略来处理

常见的一般策略有:


  • FIFO(first in first out)

最先进入缓存的数据在缓存空间不够的情况下(超出最大元素限制)会被优先被清除掉,以腾出新的空间接受新的数据

策略算法主要比较缓存元素的创建时间。在数据实效性要求场景下可选择该类策略,优先保障最新数据可用


  • LFU(less frequently used)

无论是否过期,根据元素的被使用次数判断,清除使用次数较少的元素释放空间

策略算法主要比较元素的hitCount(命中次数)。在保证高频数据有效性场景下,可选择这类策略


  • LRU(least recently used)

无论是否过期,根据元素最后一次被使用的时间戳,清除最远使用时间戳的元素释放空间

策略算法主要比较元素最近一次被get使用时间。在热点数据场景下较适用,优先保证热点数据的有效性


除此之外,还有一些简单策略比如:

  • 根据过期时间判断,清理过期时间最长的元素
  • 根据过期时间判断,清理最近要过期的元素
  • 随机清理
  • 根据关键字(或元素内容)长短清理等

缓存使用不当导致的问题


  • 系统预热导致启动慢
    一个系统启动需要预热半个小时。 导致系统不能做到快速应对故障宕机等问题。
  • 系统内存资源耗尽
    只加入数据,不能清理旧数据。 旧数据处理不及时,或者不能有效识别无用数据。
目录
相关文章
|
19天前
|
负载均衡 NoSQL 算法
Redisson分布式锁数据一致性解决方案
通过以上的设计和实现, Redisson能够有效地解决分布式环境下数据一致性问题。但是, 任何技术都不可能万无一失, 在使用过程中还需要根据实际业务需求进行逻辑屏障的设计和错误处理机制的建立。
115 48
|
7月前
|
存储 SQL 微服务
常用的分布式事务解决方案(三)
常用的分布式事务解决方案(三)
|
5月前
|
缓存 NoSQL 数据库
缓存穿透、缓存击穿和缓存雪崩及其解决方案
在现代应用中,缓存是提升性能的关键技术之一。然而,缓存系统也可能遇到一系列问题,如缓存穿透、缓存击穿和缓存雪崩。这些问题可能导致数据库压力过大,甚至系统崩溃。本文将探讨这些问题及其解决方案。
|
5月前
|
缓存 NoSQL PHP
Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出
本文深入探讨了Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出。文章还介绍了Redis在页面缓存、数据缓存和会话缓存等应用场景中的使用,并强调了缓存数据一致性、过期时间设置、容量控制和安全问题的重要性。
108 5
|
6月前
|
存储 缓存 NoSQL
大数据-38 Redis 高并发下的分布式缓存 Redis简介 缓存场景 读写模式 旁路模式 穿透模式 缓存模式 基本概念等
大数据-38 Redis 高并发下的分布式缓存 Redis简介 缓存场景 读写模式 旁路模式 穿透模式 缓存模式 基本概念等
181 4
|
6月前
|
存储 缓存 NoSQL
阿里面试题:缓存的一些常见的坑,你遇到过哪些,怎么解决的?
阿里面试题:缓存的一些常见的坑,你遇到过哪些,怎么解决的?
|
6月前
|
缓存 NoSQL 关系型数据库
缓存穿透以及解决方案
缓存穿透以及解决方案
75 0
|
1月前
|
缓存 监控 NoSQL
Redis--缓存击穿、缓存穿透、缓存雪崩
缓存击穿、缓存穿透和缓存雪崩是Redis使用过程中可能遇到的常见问题。理解这些问题的成因并采取相应的解决措施,可以有效提升系统的稳定性和性能。在实际应用中,应根据具体场景,选择合适的解决方案,并持续监控和优化缓存策略,以应对不断变化的业务需求。
111 29
|
1月前
|
缓存 NoSQL Java
Redis应用—8.相关的缓存框架
本文介绍了Ehcache和Guava Cache两个缓存框架及其使用方法,以及如何自定义缓存。主要内容包括:Ehcache缓存框架、Guava Cache缓存框架、自定义缓存。总结:Ehcache适合用作本地缓存或与Redis结合使用,Guava Cache则提供了更灵活的缓存管理和更高的并发性能。自定义缓存可以根据具体需求选择不同的数据结构和引用类型来实现特定的缓存策略。
133 16
Redis应用—8.相关的缓存框架
|
28天前
|
人工智能 缓存 NoSQL
Redis 与 AI:从缓存到智能搜索的融合之路
Redis 已从传统缓存系统发展为强大的 AI 支持平台,其向量数据库功能和 RedisAI 模块为核心,支持高维向量存储、相似性搜索及模型服务。文章探讨了 Redis 在实时数据缓存、语义搜索与会话持久化中的应用场景,并通过代码案例展示了与 Spring Boot 的集成方式。总结来看,Redis 结合 AI 技术,为现代应用提供高效、灵活的解决方案。

热门文章

最新文章

下一篇
oss创建bucket