Redis的5种数据类型

Redis的五种数据类型

1. String(字符串)

📌 长什么样: 就是一个最简单的键值对,值可以是普通文本、数字,甚至是图片视频的二进制数据(最大512MB)。
💡 生活类比: 一个贴了标签的储物盒,里面只能放一件东西。
🖥️ 直观展示:

json 复制代码
"name" -> "张三"
"age"  -> "25"
"token" -> "eyJhbGciOiJIUzI1NiJ9..."

🔥 常用场景: 缓存用户信息、计数器(如文章阅读量)、分布式锁。

2. List(列表)

📌 长什么样: 按照插入顺序排序的字符串链表,元素可以重复,支持从左边(头)和右边(尾)推入或弹出元素。
💡 生活类比: 排队买奶茶的队伍,可以从队首队尾进人,也可以插队,允许穿一样衣服的人排在里面。
🖥️ 直观展示:

json 复制代码
"mq:order" -> ["订单1", "订单2", "订单3", "订单2"]
// 左边是头(LPush),右边是尾(RPush)

🔥 常用场景: 消息队列(LPush + RPop)、最新消息排行榜(如朋友圈时间线)、文章列表。

3. Set(集合)

📌 长什么样: 无序的字符串集合,元素不可重复 。如果插入相同的值,会自动去重。
💡 生活类比: 一个不记名投票箱,每个人只能投一票,投两次算一票,倒出来的时候没有先后顺序。
🖥️ 直观展示:

json 复制代码
"lottery:users" -> { "用户A", "用户C", "用户B", "用户D" }

🔥 常用场景: 点赞/收藏(去重)、抽奖系统(SRANDMEMBER/SPOP随机抽人)、共同好友(交集/并集/差集计算)。

4. Hash(哈希/字典)

📌 长什么样: 键值对的集合,值本身又是一个由"字段-值"组成的映射表。类似于编程语言里的对象或字典。
💡 生活类比: 一张学生证,上面有姓名、年龄、班级等多个属性,每个属性对应一个值。
🖥️ 直观展示:

json 复制代码
"user:1001" -> {
    "name": "张三",
    "age": "25",
    "city": "北京"
}

🔥 常用场景: 存储对象(比String存JSON更灵活,可以单独修改某个字段)、购物车(商品ID为字段,数量为值)。

5. ZSet / Sorted Set(有序集合)

📌 长什么样: 在Set的基础上,给每个元素关联了一个分数 ,集合会自动按照分数从小到大排序。元素不可重复,但分数可以重复。
💡 生活类比: 班级成绩单,每个学生有唯一名字,但按照分数排名。即使两人同分,系统也会按字典序排个先后。
🖥️ 直观展示:

json 复制代码
"rank:score" -> [
    { "张三", score: 85 },
    { "李四", score: 90 },
    { "王五", score: 90 },
    { "赵六", score: 95 }
]
// 按分数升序排列,同分按名字字典序排

🔥 常用场景: 排行榜(游戏积分榜、微博热搜榜)、带权重的消息队列、延迟队列。

📝 总结速记表

类型 能否重复 是否有序 直观形态 典型一句话场景
String - - "key" -> "value" 缓存一个JSON、计数器
List ✅ 可重复 ✅ 按插入序 [a, b, c, a] 消息队列、时间线
Set ❌ 去重 ❌ 无序 {a, b, c} 点赞、共同好友、抽奖
Hash ❌ 字段去重 - {f1:v1, f2:v2} 存对象、购物车
ZSet ❌ 去重 ✅ 按分数序 {a:1, b:2, c:3} 排行榜、延迟队列
注:Redis 发展到现在其实已经不止五种了,后来还加入了 Bitmap(位图)、HyperLogLog(基数统计)、Geo(地理位置)、Stream(流)等,但最核心、面试最常考的依然是上述的"五大将"。
相关推荐
严同学正在努力14 分钟前
Oracle数据技术运维大全(下篇)
运维·数据库·ai·oracle·架构
catino1 小时前
spring-事务@Transactional
java·数据库·spring
数智启示录1 小时前
Apache Doris 4.0.8 数据建模实战(第 2 篇):同一批订单写进三种模型,为什么得到三个答案
大数据·数据库·面试
数智启示录1 小时前
Apache Doris 4.0.8 CDC 正确性(第 9 篇):Flink Checkpoint 一直成功,表里为什么仍是旧数据
大数据·数据库·经验分享·面试·flink
拾光Ծ2 小时前
【MySQL】对表数据的操作:增删查改(CRUD)
android·数据库·sql·mysql
这个DBA有点耶15 小时前
2026年分布式数据库有哪些主流选择?先评估这5个维度再决定
数据库·分布式·dba
这个DBA有点耶18 小时前
从MySQL 5.7到8.0:JSON查询性能差在哪?虚拟列索引vs多值索引怎么选
数据库·mysql·架构
胡写代码18 小时前
数据库审计字段,别再每张表各写一套了——我统一成这 6 个字段
数据库
SelectDB1 天前
为什么 JSON 正在成为分析数据库新的竞争点?
数据库·json·agent
ClouGence1 天前
开源数据库管理工具 CloudDM 4.2.0 发布,新增 GoldenDB、KingbaseES 等数据源
数据库·dba·devops