Redis 常见数据结构和使用场景
Redis 的五种数据结构各有特色,用对了才能发挥它的优势。很多人只用到了 String 和 Hash,却不知道 List、Set、ZSet 在特定场景下更合适。本文从应用场景出发,讲什么时候用什么类型。
先明确 Redis 在系统里的角色
Redis 常见用途不是“替代数据库”,而是缓存热点数据、保存会话、做简单计数、排行榜、分布式锁等。设计时要先问:这份数据丢了能不能恢复?是否允许短暂不一致?
一个缓存查询的基本写法
String key = "user:" + userId; |
这个流程看起来简单,但要注意缓存穿透、缓存击穿和缓存雪崩。
三个常见问题
- 穿透:查询不存在的数据,可以缓存空值或用布隆过滤器。
- 击穿:热点 key 过期瞬间大量请求打到数据库,可以用互斥锁或逻辑过期。
- 雪崩:大量 key 同时过期,可以给过期时间增加随机值。
验证方式
本地可以先用 redis-cli 查看 key:
redis-cli |
确认缓存写入、过期时间和删除策略都符合预期。
核心要点
String:简单的键值对,适合缓存、计数器
Hash:存储对象属性,适合用户信息、配置
List:有序列表,适合消息队列、最新列表
Set:无序去重,适合共同好友、抽奖
ZSet:有序集合,适合排行榜、积分系统
总结
选择合适的数据结构是使用 Redis 的关键。在实际项目中,根据业务需求选择合适的类型,可以提升性能和开发效率。