Redis五大核心数据类型包括String、Hash、List、Set和Sorted Set。String适合缓存简单数据如用户session;Hash用于存储对象如用户信息;List实现队列或栈如消息队列;Set处理无序集合如标签系统;Sorted Set按分数排序如排行榜。这些类型精准匹配业务,帮助解决数据存储选择困惑,提升系统性能和开发效率。
Redis String 类型详解
String 是 Redis 最基本的数据类型,键值对形式存储,值可以是字符串、数字或序列化对象。最大容量 512MB,常用于缓存、计数器、分布式锁场景。例如 incr 命令实现原子自增,适用于访问量统计;setnx 实现分布式锁,避免并发冲突。实际应用中,String 类型简单高效,是缓存系统的首选。
Hash 类型应用
Hash 类似于对象,存储字段-值对,节省内存。适合用户信息、商品详情等结构化数据。命令如 hset、hget、hmget 操作单个或多个字段。比多个 String 键更节省空间,避免序列化开销。在电商系统中,Hash 存储用户购物车,hincrby 更新数量,实现高效读写。
List 类型队列实现
List 是双向链表,支持从两端插入删除,完美实现队列和栈。lpush/rpush 入队,lpop/rpop 出队。常用于任务队列、最新列表、消息队列。聊天系统用 List 存储最近消息,lrange 分页获取。注意 List 阻塞操作如 blpop,适用于生产者消费者模式。
Set 类型唯一集合
Set 是无序不重复集合,操作交集、并集、差集高效。sadd 添加,smembers 获取全部,sinter 交集。标签系统、好友推荐、抽奖去重常用 Set。社交平台用 Set 存储用户关注列表,sismember 检查关系,性能优于 List。
Sorted Set 排行榜场景
Sorted Set 按分数排序的集合,zadd 添加元素带分数,zrange 获取排名。游戏排行榜、热搜榜首选。分数可更新,zincrby 实现积分增长。实时统计访问热度,用时间戳作分数,zrevrange 降序获取 Top N。
数据类型选择指南
选择数据类型时,考虑读写模式和数据结构。简单值用 String,对象用 Hash,顺序用 List,无序唯一用 Set,排序用 Sorted Set。结合业务场景,避免过度设计,提升 Redis 命中率和响应速度。
FAQ
Q: Redis String 和 Hash 什么时候用哪个?
A: String 适合简单键值,Hash 适合多字段对象节省内存。
Q: List 和 Sorted Set 区别?
A: List 无序双端,Sorted Set 有序按分排序。
Q: 如何实现分布式锁?
A: 用 String 的 setnx 和 expire 命令。
Q: Set 适合什么业务?
A: 唯一性检查如抽奖、好友列表。