Redis 作为内存数据库,凭借高性能和丰富的数据结构,在后端开发中使用极为广泛。
1. 缓存层应用
-
热点数据缓存:将高频访问数据(用户信息、商品详情)放入 Redis,减少数据库压力。
-
缓存更新策略:
- Cache Aside(常用):读写时先操作数据库,再更新缓存。
- Write Through:先写缓存再写数据库,由缓存层负责落库。
- Write Back:先写缓存,异步写数据库,适合对一致性要求不高的场景。
-
缓存过期策略:合理设置 TTL,避免缓存雪崩。
2. 分布式锁
- 基于
SETNX+ 过期时间实现互斥锁。 - Redisson 提供更健壮的实现,支持重入锁、公平锁。
- 需考虑锁续约和锁丢失问题。
3. 队列与消息系统
- 使用
List或Stream实现简单消息队列。 - 常见场景:异步任务、延时任务。
- 大规模场景仍推荐 Kafka 等专业消息中间件。
4. 计数与限流
- 基于
INCR实现接口访问计数。 - 结合 Lua 脚本实现分布式限流(滑动窗口、令牌桶)。
5. 会话存储
- 在分布式应用中,用 Redis 存储用户 Session。
- 结合 Spring Session 可自动完成登录态共享。
6. 常见问题与优化
- 缓存穿透:布隆过滤器拦截不存在的请求。
- 缓存雪崩:设置不同过期时间,避免同一时刻全部失效。
- 缓存击穿:针对热点 key,加互斥锁防止并发击穿。
结论:Redis 不只是缓存,而是后端系统的“多功能工具箱”。合理利用数据结构和特性,能显著提升系统性能与稳定性。