Redis 数据类型详解:新手终极指南
Redis 不仅仅是一个简单的键值存储;它是一个数据结构服务器。与简单的键值存储不同,Redis 支持多种复杂的数据类型。理解这些类型对于发挥 Redis 的全部潜能至关重要。
在本指南中,我们将深入探讨五种核心数据类型:String (字符串)、List (列表)、Set (集合)、Hash (哈希) 和 Sorted Set (有序集合)。
1. Strings (字符串)
字符串是 Redis 最基本的数据类型。一个键对应一个字符串值。它是二进制安全的,意味着它可以包含任何类型的数据,比如 JPEG 图片或序列化的对象。
常用命令
SET key value: 设置键的字符串值。GET key: 获取键的值。INCR key: 将键的整数值加一。
编辑器实战
SET user:name "Alice"
GET user:name
INCR page:views
使用场景:缓存 HTML 片段、存储会话数据 (Session)、简单计数器。
2. Lists (列表)
Redis 下的 List 只是简单的字符串列表,按插入顺序排序。你可以向列表的头部(左边)或尾部(右边)添加元素。
常用命令
LPUSH key value: 在头部插入值。RPUSH key value: 在尾部插入值。LPOP key: 移除并返回第一个元素。LRANGE key start stop: 获取指定范围的元素。
编辑器实战
RPUSH tasks "部署代码" "运行测试"
LPUSH tasks "编写文档"
LRANGE tasks 0 -1
使用场景:实现消息队列 (Job Queue)、存储最新的时间线更新(例如最近 10 篇文章)。
3. Sets (集合)
Redis Set 是唯一字符串的无序集合。你可以在 O(1) 时间内添加、移除和检测成员是否存在。
常用命令
SADD key member: 向集合添加成员。SMEMBERS key: 获取集合的所有成员。SISMEMBER key member: 检查成员是否存在。
编辑器实战
SADD skills "Redis" "JavaScript" "Python"
SADD skills "Redis" # 因为是重复的,将被忽略
SMEMBERS skills
使用场景:标签系统(例如博文的标签)、独立 IP 访客统计、社交图谱(共同好友)。
4. Hashes (哈希)
Redis Hash 是字符串字段和字符串值之间的映射,因此它们是表示对象(例如具有姓名、年龄、邮箱等字段的用户)的完美数据类型。
常用命令
HSET key field value: 设置哈希字段的值。HGET key field: 获取哈希字段的值。HGETALL key: 获取哈希中的所有字段和值。
编辑器实战
HSET user:1001 name "Bob" age "30" email "bob@example.com"
HGETALL user:1001
使用场景:存储对象类数据。将许多小对象存储为 Hash 非常节省内存。
5. Sorted Sets (有序集合)
Sorted Set 与 Set 类似,也是唯一字符串的集合,但每个成员都关联一个分数 (Score)。成员是唯一的,但分数可以重复。元素按分数排序。
常用命令
ZADD key score member: 添加带分数的成员。ZRANGE key start stop: 获取范围内的成员(按分数排序)。ZREVRANGE key start stop: 获取反向范围内的成员。
编辑器实战
ZADD leaderboard 100 "PlayerA"
ZADD leaderboard 200 "PlayerB"
ZADD leaderboard 150 "PlayerC"
ZREVRANGE leaderboard 0 -1 WITHSCORES
使用场景:排行榜、优先队列、限流(滑动窗口)。
总结
掌握这些数据结构让你可以高效地解决复杂的架构问题。Redis 既灵活又快速。
准备好练习了吗?回到 Redis 在线编辑器 亲自尝试输入这些命令,立即查看结果!