如何连接到一个 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 服务器连接的一些命令。