如何连接到一个 Redis 数据库

源地址:https://www.digitalocean.com/community/cheatsheets/how-to-connect-to-a-redis-database
作者:Mark Drake

简介

Redis 是一个开源的、运行在内存中的键值数据库。无论你是在本地安装了 Redis 还是在使用一个远程实例,你都需要连接到它来执行某些操作。在本教程中,我们将介绍如何从命令行连接到 Redis、如何验证和测试你的连接以及如何关闭 Redis 连接。

如何使用这个教程

这个教程是以小抄(Cheat Sheet)的形式写的,有对应的例子。我们鼓励你直接跳转到和你要完成的任务相关的章节进行阅读。

这个教程中的命令在 Ubuntu 18.04 中的 Redis 4.0.9 版本完成测试。如果你需要建设一个同样的环境,可以参考我们的 如何在 Ubuntu 18.04 上安装并加固 Redis 中的 Step 1 来安装 Redis。我们将通过 Redis 命令行界面redis-cli运行这些命令,来演示这些命令的行为。请注意,如果你使用不同的 Redis 工具--例如Redli —— 某些命令的实际输出可能有所不同。

此外,你还可以使用一个代管的 Redis 数据库实例来测试这些命令。但需要注意的是,根据你的数据库服务提供商的限制,这个教程中的某些命令可能运行效果和教程不一致。如果想要使用 DigitalOcean 提供的代管数据库,可以查看我们的代管数据库产品文档。使用代管 Redis 数据库实例时,你必须安装 Redli设置 TLS 隧道 来通过 TLS 链接到代管数据库。

连接到 Redis

如果你在本地安装redis-server,你可以使用 redis-cli 命令连接到 Redis 实例:

$ redis-cli

这将会使你进入 redis-cli交互模式,在交互模式下,你将会拥有一个读取 - 求值 - 输出循环(REPL),你可以在里面运行 Redis 的内建命令并获得命令的输出。

在交互式模式下,你的命令行提示符将改变以展示你的连接。在这个例子和本指南中的其他例子中,提示符显示连接到本地托管的 Redis 实例(127.0.0.1),并通过 Redis 的默认端口(6379)访问。

127.0.0.1:6379>

在交互式模式下运行 Redis 命令的另一种方法是将它们作为 redis-cli 命令的参数运行,比如说:

$ redis-cli redis_command

如果你想要连接到一个远程的 Redis 数据库,你可以分别使用 -h 来设定主机地址,使用 -p来设定数据库端口号。另外,如果你将你的 Redis 数据库配置为需要密码才能连接,你可以在命令后面加上-a,以便进行认证。

$ redis-cli -h host -p port_number -a password

如果你设置了 Redis 密码,即使客户在其 redis-cli 命令中不包括 -a,他们也能连接到 Redis。然而,在他们进行身份验证之前,他们将不能添加、更改或查询数据。要在连接后进行认证,请使用 auth 命令,并在后面加上密码。

127.0.0.1:6379> auth password

如果传递给 auth 的密码是正确的,该命令将返回 OK。否则,它将返回一个错误。

如果你正在使用管理的 Redis 数据库,你的云提供商可能会给你一个以 redis://rediss:// 开头的 URI,你可以用它来访问你的数据存储。如果连接字符串以 redis:// 开头,你可以把它作为参数加入 redis-cli 进行连接。

然而,如果你有一个以 rediss:// 开头的连接字符串,这意味着你的管理数据库需要通过 TLS/SSL 连接。redis-cli 不支持 TLS 连接,所以你需要使用一个支持 rediss 协议的不同工具,以便用 URI 连接。对于 DigitalOcean 代管的数据库,需要通过 TLS 进行连接,我们建议使用 Redli 来访问 Redis 实例。

使用下面的语法,用 Redli 连接到一个数据库。请注意,这个例子包括 -tls 选项,它指定连接应通过 TLS 进行,以及 -u,它声明其后参数将是一个连接 URI。

$ redli --tls -u rediss://connection_URI

如果你试图连接到一个不可用的实例,redis-cli 将进入断开连接模式。提示符将展示这一点。

not connected>

当前处于断开链接模式时,每次你输入命令时,Redis 将会尝试重新连接。

测试连接

ping命令对于测试与数据库的连接是否是活的很有用。请注意,这是一个针对 Redis 的命令,与 [ping网络工具](https://en.wikipedia.org/wiki/Ping_(networking_utility))不同。然而,两者的功能相似,都是用来检查两台机器之间的连接。

如果连接时活跃的且不含任何参数时,ping命令将返回 PONG

127.0.0.1:6379> ping

返回

PONG

如果你为ping命令提供了一个参数,当连接是活跃的时,它将返回该参数以取代PONG

127.0.0.1:6379>  ping "hello Redis"

返回

"hello Redis"

当你在断开连接模式下使用ping命令时,它将返回如下内容:

not connected> ping

返回

Could not connect to Redis at host:port: Connection refused

请注意,Redis 内部也使用ping来测量延迟

断开 Redis 连接

想要断开连接,使用quit命令:

127.0.0.1:6379> quit

使用exit也可以退出连接

127.0.0.1:6379> exit

quit 和 exit 都会关闭连接,但只有在所有待处理的回复都被写入客户端后才会关闭。

总结

本指南详细介绍了用于建立、测试和关闭与 Redis 服务器连接的一些命令。