Redis 数据结构介绍

RedisRedisBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在这个实验中,你将探索基础的 Redis 数据结构,以及如何使用 redis-cli 命令行工具与它们进行交互。这个实验侧重于实践练习,以帮助你理解如何在 Redis 中存储和检索数据。

你将从使用字符串(Strings)开始,学习如何设置(set)、获取(get)、检查存在性以及删除字符串值。然后,你将继续学习列表(Lists),使用诸如 LPUSHLRANGE 等命令。接下来,你将使用 SADDSMEMBERS 管理集合(Sets)。最后,你将使用 HSETHGET 探索哈希(Hashes)。这种实践经验将为你提供在各种应用中使用 Redis 的坚实基础。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL redis(("Redis")) -.-> redis/RedisGroup(["Redis"]) redis/RedisGroup -.-> redis/access_cli("Connect Using CLI") redis/RedisGroup -.-> redis/store_string("Set String Value") redis/RedisGroup -.-> redis/fetch_string("Get String Value") redis/RedisGroup -.-> redis/remove_key("Delete Single Key") redis/RedisGroup -.-> redis/add_left("Push List Left") redis/RedisGroup -.-> redis/fetch_range("Get List Range") redis/RedisGroup -.-> redis/insert_set("Add Set Element") redis/RedisGroup -.-> redis/view_set("List Set Members") subgraph Lab Skills redis/access_cli -.-> lab-552078{{"Redis 数据结构介绍"}} redis/store_string -.-> lab-552078{{"Redis 数据结构介绍"}} redis/fetch_string -.-> lab-552078{{"Redis 数据结构介绍"}} redis/remove_key -.-> lab-552078{{"Redis 数据结构介绍"}} redis/add_left -.-> lab-552078{{"Redis 数据结构介绍"}} redis/fetch_range -.-> lab-552078{{"Redis 数据结构介绍"}} redis/insert_set -.-> lab-552078{{"Redis 数据结构介绍"}} redis/view_set -.-> lab-552078{{"Redis 数据结构介绍"}} end

使用字符串处理简单数据

在这一步中,我们将探索如何使用 Redis 存储和检索简单的字符串数据。Redis 经常被用作缓存或简单的键值存储(key-value store),而字符串是它提供的最基本的数据类型。

首先,让我们使用 redis-cli 命令行工具连接到 Redis 服务器。在 LabEx 虚拟机(VM)中打开一个终端。你应该已经在 ~/project 目录中。

输入以下命令以连接到 Redis 服务器:

redis-cli

你应该看到如下所示的提示符:

127.0.0.1:6379>

这表明你现在已连接到 Redis 服务器。

现在,让我们设置一个简单的字符串值。我们将使用 SET 命令。SET 命令接受两个参数:键(key)和值(value)。让我们将一个名为 mykey 的键设置为值 Hello Redis

SET mykey "Hello Redis"

你应该看到以下输出:

OK

这意味着该值已成功设置。

现在,让我们使用 GET 命令检索该值。GET 命令接受一个参数:键(key)。让我们检索 mykey 的值:

GET mykey

你应该看到以下输出:

"Hello Redis"

这证实我们已成功在 Redis 中存储和检索了一个字符串值。

让我们尝试另一个例子。这次,让我们将一个数字存储为字符串。

SET counter 100
GET counter

你应该看到:

"100"

Redis 将其视为字符串,即使它表示一个数字。

你还可以使用 EXISTS 命令来检查键是否存在。

EXISTS mykey

你应该看到:

(integer) 1

这表明键 mykey 存在。如果该键不存在,则该命令将返回 (integer) 0

最后,让我们使用 DEL 命令删除该键。

DEL mykey

你应该看到:

(integer) 1

这表明键 mykey 已成功删除。

现在,如果你尝试再次获取 mykey 的值:

GET mykey

你应该看到:

(nil)

这证实该键已被删除。

记住退出 redis-cli 以确保你的命令被记录。输入:

exit

这将使你返回到常规终端提示符。

使用 LPUSH 和 LRANGE 处理列表

在这一步中,我们将探索如何使用 Redis 列表来存储和检索数据的有序集合。Redis 列表被实现为链表(linked lists),这使得它们在列表的开头或结尾添加和删除元素时非常高效。我们将重点关注 LPUSHLRANGE 命令。

我们将继续使用 redis-cli 命令行工具。如果你尚未连接,请在 LabEx 虚拟机(VM)中打开一个终端并输入:

redis-cli

现在,让我们创建一个列表并使用 LPUSH 命令向其中添加一些元素。LPUSH 将元素添加到列表的左侧(头部)。LPUSH 命令接受两个或多个参数:列表的键(key)和要添加的值(value)。让我们创建一个名为 mylist 的列表,并添加值 item1item2item3

LPUSH mylist item1

你应该看到以下输出:

(integer) 1

这意味着已将一个元素添加到列表中。LPUSH 的返回值是操作后列表的长度。

现在,让我们添加其他项目:

LPUSH mylist item2
(integer) 2
LPUSH mylist item3
(integer) 3

现在,让我们使用 LRANGE 命令检索列表的元素。LRANGE 返回列表中某个范围内的元素。LRANGE 命令接受三个参数:列表的键(key)、起始索引(start index)和结束索引(end index)。索引是基于 0 的,因此第一个元素位于索引 0 处。要检索列表的所有元素,我们可以使用起始索引 0 和结束索引 -1。

LRANGE mylist 0 -1

你应该看到以下输出:

1) "item3"
2) "item2"
3) "item1"

请注意,这些元素以我们添加它们的相反顺序返回,因为 LPUSH 将元素添加到列表的开头。

让我们向列表中添加更多项目:

LPUSH mylist item4
LPUSH mylist item5

现在,让我们检索列表的前 3 个元素(索引 0 到 2):

LRANGE mylist 0 2

你应该看到:

1) "item5"
2) "item4"
3) "item3"

你还可以使用负索引从列表末尾访问元素。例如,要检索列表的最后一个元素,可以使用索引 -1:

LRANGE mylist -1 -1

你应该看到:

1) "item1"

记住退出 redis-cli 以确保你的命令被记录。输入:

exit

这将使你返回到常规终端提示符。

使用 SADD 和 SMEMBERS 管理集合

在这一步中,我们将探索如何使用 Redis 集合来存储和管理唯一元素的无序集合。Redis 集合对于诸如跟踪唯一访问者、存储标签或管理对象之间的关系等任务非常有用。我们将重点关注 SADDSMEMBERS 命令。

我们将继续使用 redis-cli 命令行工具。如果你尚未连接,请在 LabEx 虚拟机(VM)中打开一个终端并输入:

redis-cli

现在,让我们创建一个集合并使用 SADD 命令向其中添加一些成员。SADD 向集合添加一个或多个成员。SADD 命令接受两个或多个参数:集合的键(key)和要添加的成员(member)。让我们创建一个名为 myset 的集合,并添加成员 member1member2member3

SADD myset member1

你应该看到以下输出:

(integer) 1

这意味着已将一个成员添加到集合中。SADD 的返回值是添加到集合中的成员数(不包括已存在的成员)。

现在,让我们添加其他项目:

SADD myset member2
(integer) 1
SADD myset member3
(integer) 1

现在,让我们使用 SMEMBERS 命令检索集合的成员。SMEMBERS 返回集合的所有成员。SMEMBERS 命令接受一个参数:集合的键(key)。

SMEMBERS myset

你应该看到以下输出(成员的顺序可能不同,因为集合是无序的):

1) "member3"
2) "member2"
3) "member1"

让我们尝试向集合添加一个重复的成员:

SADD myset member1

你应该看到:

(integer) 0

这表明没有添加任何新成员,因为 member1 已经在集合中。

让我们向集合添加更多成员:

SADD myset member4
SADD myset member5

现在,让我们再次检索所有成员:

SMEMBERS myset

你应该看到类似以下内容:

1) "member5"
2) "member4"
3) "member3"
4) "member2"
5) "member1"

顺序可能不同。

记住退出 redis-cli 以确保你的命令被记录。输入:

exit

这将使你返回到常规终端提示符。

使用 HSET 和 HGET 探索哈希

在这一步中,我们将探索如何使用 Redis 哈希来存储和检索字段 - 值对的集合。Redis 哈希对于表示具有多个属性的对象非常有用。我们将重点关注 HSETHGET 命令。

我们将继续使用 redis-cli 命令行工具。如果你尚未连接,请在 LabEx 虚拟机(VM)中打开一个终端并输入:

redis-cli

现在,让我们创建一个哈希并使用 HSET 命令向其中添加一些字段和值。HSET 设置哈希中字段的值。HSET 命令接受三个参数:哈希的键(key)、字段(field)和值(value)。让我们创建一个名为 myhash 的哈希,并将字段 field1 设置为值 value1

HSET myhash field1 value1

你应该看到以下输出:

(integer) 1

这意味着已将一个新字段添加到哈希中。如果该字段是哈希中的新字段,则 HSET 的返回值为 1;如果该字段已存在并且该值已更新,则返回值为 0。

现在,让我们添加另一个字段:

HSET myhash field2 value2
(integer) 1

现在,让我们使用 HGET 命令检索字段的值。HGET 获取哈希中字段的值。HGET 命令接受两个参数:哈希的键(key)和字段(field)。让我们检索 myhashfield1 的值:

HGET myhash field1

你应该看到以下输出:

"value1"

这证实我们已成功在哈希中存储和检索了字段 - 值对。

让我们尝试更新现有字段的值:

HSET myhash field1 newvalue1

你应该看到:

(integer) 0

这表明该字段已存在,并且其值已更新。

现在,让我们再次检索 field1 的值:

HGET myhash field1

你应该看到:

"newvalue1"

这证实该值已更新。

让我们向哈希添加更多字段:

HSET myhash field3 value3
HSET myhash field4 value4

记住退出 redis-cli 以确保你的命令被记录。输入:

exit

这将使你返回到常规终端提示符。

总结

在这个实验中,我们探索了基本的 Redis 数据结构,从字符串开始。我们学习了如何使用 redis-cli 连接到 Redis 服务器,然后使用 SET 命令存储与键(key)关联的字符串值。然后,我们使用 GET 命令检索了这些值。我们还了解了 Redis 如何处理存储为字符串的数字。

此外,我们还学习了使用 LPUSHLRANGE 创建和操作列表(List),使用 SADDSMEMBERS 管理集合(Set),以及使用 HSETHGET 探索哈希(Hash)。这些命令允许你在 Redis 中存储和检索不同类型的数据,使其成为各种应用的多功能工具。请记住在每个步骤之后退出 redis-cli,以确保你的命令被记录以进行验证。