Redis整体存储结构为Key-Value键值对:
- Key:统一都是字符串类型
- Value:包含5种核心常用数据类型,各自结构、特性、适用场景完全不同
一、String 字符串
结构特点
Redis最简单基础的数据类型,就是普通文本字符串,一个key对应一段字符内容。
类比Java
等同于String/基本数据类型包装类
核心特性
- 二进制安全,可存文本、数字、图片字节数据
- 支持数值自增、截取、拼接等操作
- 单个value最大容量512MB
适用场景
- 缓存普通文本数据:用户信息、商品详情
- 计数器:浏览量、点赞数、访问次数
- 分布式全局ID
二、Hash 哈希
结构特点
嵌套键值结构:key -> {field: value, field2: value2...}
一个Redis大key下,包含多个字段(field)与对应值
类比Java
等同于HashMap
核心特性
- 适合存储对象,无需序列化整个实体,可单独修改某个字段
- 节省空间,比多个string存储对象更轻量化
适用场景
- 存储用户基础信息:姓名、年龄、手机号
- 商品属性、订单简易信息存储
三、List 列表
结构特点
有序链表结构,元素按插入先后顺序排列
两头读写效率极高,中间遍历效率偏低
类比Java
等同于LinkedList
核心特性
- 允许元素重复
- 有序存储,支持左/右两端入队、出队
- 可模拟队列、栈结构
适用场景
- 消息队列(简易生产者消费者)
- 最新消息列表:首页动态、聊天会话记录
- 栈结构:撤销操作记录
四、Set 集合
结构特点
无序集合容器,内部元素无先后顺序
类比Java
等同于HashSet
核心特性
- 元素唯一,自动去重
- 支持集合运算:交集、并集、差集
适用场景
- 去重统计:用户访问IP、签到记录
- 共同好友、好友推荐(集合交集运算)
- 抽奖活动(随机抽取集合内成员)
五、Sorted Set(ZSet) 有序集合
结构特点
在Set基础上,给每个元素绑定一个浮点分值(score),依靠score实现全局排序
类比Java
等同于TreeSet
核心特性
- 元素不可重复,score可以重复
- 自动根据score升序/降序排列
- 支持按分值区间、排名范围查询
适用场景
- 排行榜:销量榜单、积分排名、热搜榜单
- 延时任务队列(score存入时间戳)
- 权重有序的推荐列表
总结对照表
| 类型 | 有序 | 可重复 | 核心特征 |
|---|---|---|---|
| String | - | - | 基础字符串,万能通用 |
| Hash | - | field不重复 | 对象字段精细化存储 |
| List | 插入有序 | ✅ | 链表,消息队列、时序数据 |
| Set | 无序 | ❌ | 去重、集合运算 |
| ZSet | 按score排序 | ❌ | 排行榜、有序权重队列 |