当前位置: 首页 > news >正文

分布式-redisson

分布式锁redisson

  • 加锁流程
  • 缓存相关问题

加锁流程

在这里插入图片描述

  1. redisson底层通过lua脚本实现加锁的原子性
  2. lock动作包含:加锁、设置超时时间、锁续命
  3. 未获取到锁的线程通过获取信号量许可等待,所释放后释放信号量通知等待线程

缓存相关问题

  1. 缓存失效(击穿):由于大批量缓存在同一时间失效可能导致大量请求同时穿透缓存直达数据库,可能会造成数据库瞬间压力过大甚至挂掉,对于这种情况我们在批量增加缓存时最好将这一批数据的缓存过期时间设置为一个时间段内的不同时间。
  2. 缓存穿透:缓存穿透是指查询一个根本不存在的数据,缓存层和存储层都不会命中,通常出于容错的考虑,如果从存储层查不到数据则不写入缓存层。缓存穿透将导致不存在的数据每次请求都要到存储层去查询,失去了缓存保护后端存储的意义。
    解决方案:1 缓存空值 2 布隆过滤器
  3. 缓存雪崩:缓存雪崩指的是缓存层支撑不住或宕掉后,流量会像奔逃的野牛一样,打向后端存储层。存储层的调用量会暴增,造成存储层也会级联宕机的情况。
    解决方案:限流降级
  4. 热点key缓存重建:当前key是一个热点key,并发量非常大。在缓存失效的瞬间,有大量线程来重建缓存,造成后端负载加大,甚至可能会让应用崩溃。
    解决方案:互斥锁,此方法只允许一个线程重建缓存,其他线程等待重建缓存的线程执行完,重新从缓存获取数据即可。
  5. 缓存与数据库双写一致性:在大并发下,同时操作数据库与缓存会存在数据不一致性问题。
    在这里插入图片描述
    解决方法:可以通过加分布式读写锁保证并发读写或写写的时候按顺序排好队,读读的
    时候相当于无锁。适用于读多写少的情况。

相关文章:

  • 关于 live555延迟优化之缓存区优化“StreamParser::afterGettingBytes() warning: read”” 的解决方法
  • PLC与工业电脑:有什么区别?
  • 精益数据分析(35/26):SaaS商业模式关键指标解析
  • AI生成Flutter UI代码实践(一)
  • 【MongoDB篇】MongoDB的文档操作!
  • 运维打铁: 存储方案全解析
  • 【MongoDB篇】MongoDB的索引操作!
  • 文章记单词 | 第52篇(六级)
  • day11 python超参数调整
  • 32单片机——串口
  • C++初阶-string类1
  • Hadoop虚拟机中配置hosts
  • 微信小程序 XSS 防护知识整理
  • 上海车展,世界模型 + VLA,城区智驾进入下半场
  • 同时启动俩个tomcat压缩版
  • spring--事务详解
  • react-10样式模块化(./index.module.css, <div className={welcome.title}>Welcome</div>)
  • 神经网络用于地震数据时空均匀插值的方法与开源资料
  • 六、UI自动化测试06--PO设计模式
  • micro-app前端微服务原理解析
  • 湖南新宁一矿厂排水管破裂,尾砂及积水泄漏至河流,当地回应
  • 《探秘海昏侯国》数字沉浸特展亮相首届江西文化旅游产业博览交易会
  • 浪尖计划再出发:万亿之城2030课题组赴九城调研万亿产业
  • 国台办:相关优化离境退税政策适用于来大陆的台湾同胞
  • 李铁案二审今日宣判
  • “光荣之城”2025上海红色文化季启动,红色主题市集亮相