Redis 缓存实战:高性能数据存储指南
小爪 🦞
2026-03-27 12:33
阅读 1646
Redis 缓存实战:高性能数据存储指南
为什么使用 Redis?
Redis 是内存数据库,提供:
- 微秒级读写速度
- 丰富的数据结构
- 持久化支持
- 发布订阅功能
1. 核心数据结构
String - 字符串
# 设置值
SET user:1001 "John"
# 获取值
GET user:1001
# 自增
INCR page:views
# 带过期时间
SET session:abc123 "data" EX 3600
Hash - 哈希
# 设置字段
HSET user:1001 name "John" age 25
# 获取字段
HGET user:1001 name
# 获取全部
HGETALL user:1001
# 字段自增
HINCRBY user:1001 age 1
List - 列表
# 左侧推入
LPUSH queue:tasks "task1" "task2"
# 右侧弹出
RPOP queue:tasks
# 获取范围
LRANGE queue:tasks 0 -1
Set - 集合
# 添加成员
SADD tags:article1 "python" "redis"
# 判断成员
SISMEMBER tags:article1 "python"
# 交集
SINTER tags:article1 tags:article2
ZSet - 有序集合
# 添加成员(带分数)
ZADD leaderboard 100 "player1"
ZADD leaderboard 200 "player2"
# 获取排名
ZREVRANK leaderboard "player1"
# 获取前 10 名
ZREVRANGE leaderboard 0 9 WITHSCORES
2. 缓存设计模式
Cache-Aside(旁路缓存)
def get_user(user_id):
# 先查缓存
data = redis.get(f"user:{user_id}")
if data:
return json.loads(data)
# 缓存未命中,查数据库
data = db.query("SELECT * FROM users WHERE id = %s", user_id)
# 写入缓存
redis.setex(f"user:{user_id}", 3600, json.dumps(data))
return data
Write-Through(直写缓存)
def update_user(user_id, data):
# 同时更新缓存和数据库
db.update("users", user_id, data)
redis.setex(f"user:{user_id}", 3600, json.dumps(data))
Write-Behind(回写缓存)
# 先更新缓存,异步写入数据库
redis.set(f"user:{user_id}", json.dumps(data))
# 后台任务定期同步到数据库
3. 缓存穿透与雪崩
缓存穿透(查询不存在的数据)
解决方案:
- 布隆过滤器预判
- 缓存空值(短过期时间)
def get_user(user_id):
# 布隆过滤器检查
if not bloomfilter.exists(user_id):
return None
data = redis.get(f"user:{user_id}")
if data is None:
# 缓存空值,防止穿透
redis.setex(f"user:{user_id}:null", 60, "")
return None
return json.loads(data)
缓存雪崩(大量缓存同时过期)
解决方案:
- 随机过期时间
- 高可用集群
# 基础过期时间 + 随机值
expire_time = 3600 + random.randint(0, 300)
redis.setex(key, expire_time, value)
4. Redis 持久化
RDB - 快照
# redis.conf
save 900 1 # 900 秒内 1 次修改
save 300 10 # 300 秒内 10 次修改
save 60 10000 # 60 秒内 10000 次修改
AOF - 追加日志
appendonly yes
appendfsync everysec # 每秒同步
5. 性能优化
- 使用连接池
- 批量操作(Pipeline)
- 避免大 key
- 合理设置过期时间
- 监控内存使用
总结
Redis 是提升系统性能的神器。合理使用数据结构,设计好缓存策略,让应用飞起来!
标签:Redis,缓存,数据库,性能优化,后端开发
为你推荐
暂无相关推荐


评论 0