如何在本地 Docker 容器中运行 Redis,并使用 Redis Insight 和 Redis CLI 进行管理
目录
运行 Redis 服务器和 Redis Insight
仅限 Redis 服务器
Redis Server + Redis Insight
Redis Insight
添加新的键值
Redis CLI
连接到 Redis CLI
添加新密钥
找回密钥
编辑字段或添加新字段
删除字段或键
断开与 Redis CLI 的连接
其他类型呢?
哈希
字符串
列表
Sets
有序集
流
JSON
结论
如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。
在本教程中,您将学习如何在本地运行 Redis 以及 Redis Insight 来管理其数据,以及如何执行简单的 CRUD 操作。
此外,我们还将了解如何使用 Redis CLI 执行相同的操作,以及如何从容器内部连接到它。
让我们把手伸进火里吧!
运行 Redis 服务器和 Redis Insight
在本地启动 Redis 服务器非常简单,而使用 Redis Insight 运行它则更加容易!我们将使用 Docker 来运行它们,虽然我们同时运行这两个应用程序,但我也会提供仅运行服务器的命令:
仅限 Redis 服务器
docker run -d --name redis-stack-server -p 6379:6379 redis/redis-stack-server:latest
Redis Server + Redis Insight
docker run -d --name redis-stack -p 6379:6379 -p 8001:8001 redis/redis-stack:latest
我们将看到镜像正在下载,下载完成后,我们可以通过docker ps在终端执行命令来查看容器是否正在运行,并且它是否暴露了端口 6379 和 8001(定义如下)-p 6739:6379 -p 8001:8001:
Redis Insight
6379 是我们服务器的端口,8001 是 Redis Insight 的端口。我们可以通过访问以下地址连接到它:localhost:8001
如果我们访问它,应该会看到类似这样的内容:
右上角显示数据库的一些统计信息。左上角显示数据库详细信息,左侧中间显示键值列表,右侧中间显示这些键值的详细信息。
需要注意的是,Redis 在概念上是基于键值数据库范式的。每条数据都与一个键相关联,无论是直接关联还是间接关联。
添加新的键值
要添加新的键值,我们需要点击按钮+key。
我们的第一个密钥类型为hash。密钥的 TTL(生存时间)为空,这意味着它永远不会过期。
键名将是,RaphaelDeLio然后我们将添加一些与该键关联的值:
我们可以点击它Add Key,然后在密钥列表中看到我们的密钥及其关联的字段:
您可以点击字段旁边的铅笔或垃圾桶图标来编辑或删除任何字段,甚至删除键本身。
Redis CLI
连接到 Redis CLI
为了向 Redis 发送命令,我们需要连接到 Redis CLI。Redis CLI 已安装在容器内,我们可以通过在终端运行以下命令来访问它:
docker exec -it redis-stack redis-cli
添加新密钥
要添加新键,我们将使用该HSET命令。此命令专门用于设置类型为 `<key>` 的键hash,每种类型都有不同的前缀,例如 ` <key>`LSET用于 ` <key>`list,SET`<key>` 用于`<key>string`,以及其他我们将在本文后面看到的键。
为了添加与我们使用 Redis Insight 添加的相同的对象,我们将运行以下命令:
HSET RaphaelDeLio name "Raphael" lastName "De Lio" age 27 job "Software Developer"
作为响应,Redis 应该返回键中设置的字段数量:
(integer) 4
找回密钥
此外,还有用于获取每种类型密钥的命令,它们遵循我们之前看到的相同模式。
我们将介绍两种获取哈希键的方法,其中一种是获取哈希表的所有字段。我们可以通过运行以下命令来实现:
HGETALL RaphaelDeLio
我们应该会看到这样的回应:
1) "name"
2) "Raphael"
3) "lastName"
4) "De Lio"
5) "age"
6) "27"
7) "job"
8) "Software Developer"
第二种方法是通过运行以下命令来检索特定字段:
HGET RaphaelDeLio job
返回结果:
"Software Developer"
编辑字段或添加新字段
编辑字段或添加新字段都使用同一个 set 命令HSET,我们可以运行以下命令:
HSET RaphaelDeLio newKey "This is a new Key"
HSET RaphaelDeLio job "I'm editing an existing key!"
你可以通过运行我们之前看到的 GET 命令来测试它们。
删除字段或键
要删除哈希字段,只需运行HDEL如下命令:
HDEL RaphaelDeLio job
要删除密钥,请运行:
DEL RaphaelDeLio
断开与 Redis CLI 的连接
要断开与 Redis CLI 的连接,只需按ctrl + c
其他类型呢?
哈希
Redis 哈希是字符串字段和字符串值之间的映射,因此它们是表示对象(例如,具有姓名、姓氏、年龄等多个字段的用户)的完美数据类型。
每个哈希最多可以存储 2³² — 1 个字段值对(超过 40 亿)。
字符串
字符串是 Redis 中最基本的值类型。Redis 字符串是二进制安全的,这意味着 Redis 字符串可以包含任何类型的数据,例如 JPEG 图像或序列化的 Ruby 对象。
字符串值的最大长度为 512 兆字节。
字符串命令:
- SET:添加或编辑密钥
- GET:用于检索密钥
- DEL:删除键
列表
Redis 列表本质上就是按插入顺序排序的字符串列表。可以通过将新元素添加到列表的头部(左侧)或尾部(右侧)来向 Redis 列表添加元素。
列表示例
向列表中添加新元素的示例
Sets
Redis Set 是一个无序的字符串集合。可以在 O(1) 的时间复杂度内添加、删除和检查成员是否存在。
Redis Set 的一个优点是不允许重复成员。多次添加同一个元素只会导致集合中只有一个该元素的副本。实际上,这意味着添加成员时不需要先检查是否存在再添加。
创建一个包含三个相同元素的集合
创建了一个集合,其中丢弃了三个相同元素中的两个。
命令:
- SADD:向集合中添加一个成员
- SREM:从集合中移除一个成员
- SMEMBERS:列出集合中的所有成员
有序集
Redis Sorted Set 与 Redis Set 类似,都是不重复的字符串集合。不同之处在于,Sorted Set 中的每个元素都关联一个分数,该分数用于保持 Sorted Set 的顺序,从最小的分数到最大的分数排列。虽然元素是唯一的,但分数可以重复。
按分数排序的集合示例
命令:
- ZADD:添加新成员
- ZREM:移除现有成员
- ZRANGE:按范围列出成员
流
Redis 流是一种数据结构,其作用类似于仅追加日志。流非常适合按事件发生的顺序记录事件。
对于流(Streams),我们需要提供一个入口键,它可以是时间戳或序列号。如果我们将其留空*,Redis 会将数据库时间戳分配给它。
添加流密钥
空气质量数据流示例(按时间段划分)
命令:
- XADD:向流中添加新条目
- XRANGE:列出所有与指定 ID 范围匹配的条目
- XDEL:从流中删除条目
JSON
RedisJSON 是 JSON 模块的一部分,它允许您将 JSON 对象作为键的值添加。
JSON 值示例
命令:
- JSON.SET:在现有 JSON 中添加或替换新的 JSON 或字段
- JSON.DEL:删除 JSON 或 JSON 中的字段
- JSON.GET:用于检索 JSON
结论
在本教程中,您学习了如何在本地启动 Redis 服务器和 Redis Insight。您还了解了 Redis 支持的不同类型键,以及如何使用 Redis Insight 和 Redis CLI 执行简单的 CRUD 操作。
如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。