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 在线编辑器 亲自尝试输入这些命令,立即查看结果!