分类

技术

缓存雪崩及解决方案
一、什么是缓存雪崩? 缓存雪崩(Cache Avalanche) 是指大量缓存 Key 在同一时间失效,或者 Redis 服务发生故障,导致大量请求无法命中缓存,集中访问 MySQL,造成数据库压力激增,甚至导致系统崩溃。 主要有两种场景: 1. 大量 Key 同时过期 大量缓存 Key 同时过期
2023-02-27
|
11
|
0
|
0
Redis 在短信验证码与用户登录中的应用
Redis 在登录功能中主要有两个作用: 存储短信验证码:用于验证用户身份。 存储用户登录态:通过 Token 识别已登录用户。 一、短信验证码存储 短信验证码适合使用 Redis 的 String 数据类型。 例如: Key: sms:login:13800138000 Value: 1234
2023-02-24
|
9
|
0
|
0
Redis 学习笔记:缓存穿透及解决方案
一、什么是缓存穿透? 缓存穿透是指用户请求的数据在 Redis 和 MySQL 中都不存在,导致请求无法命中缓存,每次都直接访问数据库。 例如: 用户请求 ID = 99999 ↓ Redis:不存在 ↓ MySQL:不存在 ↓ 返回空数据 如果大量请
2023-02-24
|
13
|
0
|
0
MySQL 进阶:UNION、SAVEPOINT、索引原理与索引失效
在日常 Java 后端开发中,MySQL 不只是会写 SELECT、UPDATE 就够了。 真正影响系统稳定性和性能的,往往是这些问题: UNION 和 UNION ALL 有什么区别? SAVEPOINT 到底有什么用? 索引为什么能加快查询? <
2023-01-07
|
11
|
0
|
0
Redis 库存超卖问题与解决方案
一、什么是库存超卖? 库存超卖是指在高并发情况下,多个线程同时判断库存充足,导致实际销售数量超过可用库存。 例如:商品库存只有 1 件。 线程 A 线程 B | | 读取库存:1
2022-03-26
|
9
|
0
|
0
Redis 分布式锁:手动实现原理与存在的问题
一、Redis 分布式锁的实现原理 Redis 分布式锁主要利用 SET NX EX 实现,核心是保证多个线程或进程之间的互斥访问。 手动实现时,可以定义一个 ILock 接口,封装获取锁和释放锁的方法。 1. 获取锁 使用 Redis 的 SET 命令: SET lock:order:1001 u
2022-01-26
|
10
|
0
|
0
Redis 学习记录:缓存击穿与分布式锁
一、缓存击穿 缓存击穿是指:高并发场景下,某个热点 Key 突然失效,大量请求同时访问数据库,导致数据库压力激增。 例如:某个热门商品每秒有 1000 次请求,当其 Redis 缓存过期时,这些请求可能同时查询 MySQL。 1. 互斥锁方案 核心思路:只允许一个线程查询数据库并重建缓存,其他线程等
2021-03-01
|
7
|
0
|
0
Jedis 与 Spring Data Redis 学习笔记
一、Jedis 与 Spring Data Redis Jedis:Java Redis 客户端,提供与 Redis 命令对应的 API。 Spring Data Redis:Spring 生态中的 Redis 操作抽象,提供 RedisTemplate 等工具,可配合 Jedis 或 Lettuc
2021-02-24
|
9
|
0
|
0