Day16
2025-01-15🌱上海: ☀️ 🌡️+6°C 🌬️↓18km/h
# 单例模式有哪几种实现?如何保证线程安全?
# 什么是单例模式?
单例设计模式(Singleton Design Pattern)理解起来非常简单。一个类只允许创建一个对象(或者实例),那这个类就是一个单例类,这种设计模式就叫作单例设计模式,简称单例模式。
单例模式属于创建型模式,这类模式主要关注对象的创建过程。
# 为什么要使用单例?
# 1.1. 表示全局唯一
对于系统中应该且只能保存一份的数据,可设计为单例类,比如:
配置类:系统仅有一个配置文件,加载到内存后映射成唯一的【配置实例】,可选择使用
more...Day15
2025-01-15🌱上海: ☀️ 🌡️+6°C 🌬️↓18km/h
# 如何解决Redis中的热点Key问题?
# 什么是热点key问题?
热 key 问题指的是在某个瞬间,大量请求集中访问 Redis 里的同一个固定 key,这会造成缓存击穿,使得请求都直接涌向数据库,最终拖垮缓存服务和数据库服务,进而影响应用服务的正常运行。
像热点新闻、热点评论、明星直播这类读多写少的场景,很容易出现热点 key 问题。虽然 Redis 的查询性能比数据库高很多,但它也有性能上限,单节点查询性能一般在 2 万 QPS,所以对单个固定 key 的查询不能超过这个数值。
在服务端读取数据
more...Day12
2025-01-15🌱上海: ☀️ 🌡️+6°C 🌬️↓18km/h
# Redis 中如何保证缓存与数据库的数据一致性?
# 总结分析
缓存和数据库的同步有六种方式:
先更新缓存,再更新数据库;
先更新数据库,再更新缓存;
先删除缓存,再更新数据库,后续查询回种数据到缓存;
先更新数据库,再删除缓存,后续查询回种数据到缓存;
缓存双删策略:更新数据库前后各进行一次删除缓存操作,第二次为延迟删除;
使用定时任务进行重试删除缓存
使用MQ异步定时重试删除缓存
使用 Binlog 异步更新缓存,监听数据库 Binlog 变化异步更新 Redis 缓存。
前三种方式不太推荐。
more...




