
缓存
文章平均质量分 94
缓存相关
?abc!
努力学习,天天向上
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Redis数据结构:基本数据类型 和 对应操作的时间复杂度
。原创 2025-06-25 06:15:00 · 781 阅读 · 0 评论 -
浏览器请求的整个缓存过程
当第一次请求的时候,浏览器本地缓存库没有缓存数据,会从服务器取数据,并且放到浏览器的缓存库中下次再进行请求的时候会根据缓存的策略来读取本地或者服务的信息。一般信息的传递通过 HTTP 请求头 Header 来传递。目前比较常见的缓存方式有两种,分别是:强制缓存、对比缓存HTTP 缓存主要是对静态数据进行缓存,把从服务器拿到的数据缓存到客户端/浏览器。原创 2025-05-19 06:00:00 · 659 阅读 · 0 评论 -
Caffeine:基本原理及使用
readBuffer 的类型是 BoundedBuffer,它的实现是一个 Striped Ring (条带隔离的 环形) 的 bufferBoundedBuffer它是一个 striped、非阻塞、有界限的 buffer,继承于StripedBuffer类。StripedBuffer设计的思想是跟Striped64类似的,通过扩展结构把分散操作热点(/竞争热点分离)。实现是这样的,StripedBuffer维护一个Buffer[]数组,每个元素就是一个RingBuffer,原创 2025-05-18 06:00:00 · 1151 阅读 · 0 评论 -
spring框架中的本地缓存:spring cache基本使用
自定义缓存过去时间等# 使用 Redis 作为缓存组件# 缓存过期时间为 3600s# 缓存的键的名字前缀# 是否使用缓存前缀# 是否缓存控制,防止缓存穿透在 @Cacheable 注解里面加上 key 的值 #root.method.name。这是一种特有的表达式,称作 SpEL 表达式,这里代表用方法名作为缓存 key 的名字如果按上述去配置的话,缓存的key的名称便是这个方法名可以自定义条件来决定是否将缓存功能关闭。原创 2025-05-15 06:00:00 · 1274 阅读 · 0 评论 -
Redis分布式锁实现
如果负责储存这个分布式锁的Redisson节点宕机以后,而且这个锁正好处于锁住的状态时,这个锁会出现锁死的状态。为了避免这种情况的发生,Redisson内部提供了一个监控锁的看门狗,它的作用是在Redisson实例被关闭前,不断的延长锁的有效期。默认情况下,看门狗的检查锁的超时时间是30秒钟,也可以通过修改Config.lockWatchdogTimeout来另行指定。另外Redisson还通过加锁的方法提供了leaseTime的参数来指定加锁的时间。超过这个时间后锁便自动解开了。原创 2025-05-14 06:00:00 · 1660 阅读 · 0 评论 -
布隆过滤器BloomFilter
示例:创建误判率 1%、初始容量 10000 的过滤器。原创 2025-05-12 06:00:00 · 958 阅读 · 0 评论 -
缓存(5):常见 缓存数据淘汰算法/缓存清空策略
TinyLFU 就是其中一个优化算法,专门为了解决 LFU 上的三个问题而被设计出来的。LFU 上的三个问题如下如何减少访问频率的保存,所带来的空间开销如何减少访问记录的更新,所带来的时间开销如果提升对局部热点数据的 算法命中率解决第1个问题/第2个问题是采用了 Count–Min Sketch 算法Count-Min Sketch算法将一个hash操作,扩增为多个hash,这样原来hash冲突的概率就降低了几个等级,且当多个hash取得数据的时候,取最低值,也就是Count Min的含义所在。原创 2025-05-11 17:29:35 · 1026 阅读 · 0 评论 -
缓存(4):常见缓存 概念、问题、现象 及 预防问题
缓存穿透是**指用户查询数据,在数据库没有,自然在缓存中也不会有**。这样就导致用户查询的时候,在缓存中找不到对应key的value,每次都要去数据库再查询一遍,然后返回空(相当于进行了两次无用的查询)。这样请求就绕过缓存直接查数据库缓存穿透是指:用户查询数据,在数据库没有,自然在缓存中也不会有。这样就导致用户查询的时候,在 缓存中找不到,每次都要去数据库再查询一遍,然后返回空(相当于进行了两次无用的查询)。这样请 求就绕过缓存直接查数据库,这也是经常提的缓存命中率问题。缓存击穿与 缓存穿透的简单区别。原创 2025-05-11 16:25:50 · 1294 阅读 · 0 评论 -
缓存(3):本地缓存作用 及 数据一致性 实现策略
在分布式系统中,缓存和数据库同时存在时,如果有写操作的时候,「先操作数据库,再操作缓存」。读取缓存中是否有相关数据如果缓存中有相关数据value,则返回如果缓存中没有相关数据,则从数据库读取相关数据放入缓存中key->value,再返回如果有更新数据,则先更新数据库,再删除缓存为了保证第四步删除缓存成功,使用binlog异步删除如果是主从数据库,binglog取自于从库。原创 2025-05-11 15:49:12 · 1304 阅读 · 0 评论 -
缓存(2):数据一致性
在分布式系统中,。强一致性最符合用户直觉弱一致性缓存可以提升性能、缓解数据库压力,但是使用缓存也会导致数据不一致性的问题。原创 2025-05-09 00:37:18 · 1143 阅读 · 0 评论 -
缓存(1):三级缓存
三级缓存就是在Bean生成流程中保存Bean对象三种形态的三个Map集合这个三级缓存就是为了解决循环依赖当创建相互依赖的对象时,会形成死循环,例如下图无缓存中的情况。而Spring通过增加缓存,将未完全创建好的A提前暴露在缓存中,当相互依赖的对象B对属性A赋值时,可以直接从缓存中获取A,而不需要再创建A。如下所示应用架构三级缓存的时候,一般说JVM级别的、分布式缓存级别的、数据库级别的JVM级别:一般常见本地缓存框架有Guava Cache和Caffeine Cache分布式缓存级别:一般用的。原创 2025-05-08 23:02:27 · 1429 阅读 · 0 评论