分布式-redisson

分布式锁redisson

加锁流程

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

缓存相关问题

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

    解决方法:可以通过加分布式读写锁保证并发读写或写写的时候按顺序排好队,读读的
    时候相当于无锁。适用于读多写少的情况。
相关推荐
Star(up up up)9 小时前
Redis Windows 安装教程:使用Windows 的 Redis 压缩包
redis·笔记·学习·程序人生·云原生·学习方法·改行学it
2501_9339232514 小时前
redis:string类型常见命令
数据库·redis·缓存
黄连木笛14 小时前
不改 Redis Insight 原有代码,把它汉化了:DOM 整段匹配 + XHR 拦截 + asar 重打包
redis·后端
时间的拾荒人16 小时前
Redis 哨兵(Sentinel)详解:原理、选举机制与实战部署
redis·面试·架构·sentinel
黄连木笛16 小时前
Redis Insight 汉化教程:Windows / macOS / Linux 设置中文界面(附繁體、教程汉化、关闭自动更新)
数据库·redis·缓存
时间的拾荒人1 天前
Redis 主从复制详解:配置实操 + 原理机制
数据库·redis·面试
小林ixn2 天前
别再全量塞历史了:用 Redis 给 Agent 装上「短期记忆」
redis·agent
我不会起名字3222 天前
会话缓存失效排查:区分 Redis 失效与节点广播
redis·后端·go·即时通讯·im·故障排查
aiks_yuan2 天前
Redis 大key怎么排查和删除:--bigkeys 每类只报一个,DEL 百万字段的 Hash 卡 0.3 秒(Redis 7.2 实测)
redis
羑悻的小杀马特3 天前
Redis持久化三剑客:RDB二进制快照、AOF文本日志、混合模式如何守护你的数据安全?
数据库·redis·缓存·aof·持久化存储·rdb