Redis 数据结构入门

RedisBeginner
立即练习

介绍

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

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

使用字符串处理简单数据

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

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

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

redis-cli

你应该会看到如下提示符:

127.0.0.1:6379>

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

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

SET mykey "Hello Redis"

你应该会看到以下输出:

OK

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

现在,让我们使用 GET 命令检索该值。GET 命令接受一个参数:键。让我们检索 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 列表(Lists)来存储和检索有序的数据集合。Redis 列表实现为链表,这使得在列表的开头或结尾添加和删除元素非常高效。我们将重点介绍 LPUSHLRANGE 命令。

我们将继续使用 redis-cli 命令行工具。如果你还没有连接,请在 LabEx 虚拟机中打开终端并输入:

redis-cli

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

LPUSH mylist item1

你应该会看到以下输出:

(integer) 1

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

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

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

现在,让我们使用 LRANGE 命令检索列表中的元素。LRANGE 返回列表中指定范围的元素。LRANGE 命令接受三个参数:列表的键、起始索引和结束索引。索引从 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 集合(Sets)来存储和管理无序的唯一元素集合。Redis 集合对于跟踪唯一访客、存储标签或管理对象之间的关系等任务非常有用。我们将重点介绍 SADDSMEMBERS 命令。

我们将继续使用 redis-cli 命令行工具。如果你还没有连接,请在 LabEx 虚拟机中打开终端并输入:

redis-cli

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

SADD myset member1

你应该会看到以下输出:

(integer) 1

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

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

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

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

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 哈希(Hashes)来存储和检索字段-值对集合。Redis 哈希对于表示具有多个属性的对象非常有用。我们将重点介绍 HSETHGET 命令。

我们将继续使用 redis-cli 命令行工具。如果你还没有连接,请在 LabEx 虚拟机中打开终端并输入:

redis-cli

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

HSET myhash field1 value1

你应该会看到以下输出:

(integer) 1

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

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

HSET myhash field2 value2
(integer) 1

现在,让我们使用 HGET 命令检索字段的值。HGET 获取哈希中字段的值。HGET 命令接受两个参数:哈希的键和字段。让我们检索 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 命令存储与键关联的字符串值。接着,我们使用 GET 命令检索了这些值。我们还观察了 Redis 如何处理存储为字符串的数字。

此外,我们学习了如何使用 LPUSHLRANGE 创建和操作列表,使用 SADDSMEMBERS 管理集合,以及使用 HSETHGET 探索哈希。这些命令使你能够在 Redis 中存储和检索不同类型的数据,使其成为适用于各种应用的通用工具。记得在每一步之后退出 redis-cli,以确保你的命令被记录以便验证。