如何管理 Redis 中的字符串

源地址:https://www.digitalocean.com/community/cheatsheets/how-to-manage-strings-in-redis
作者:Mark Drake

简介

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 字符串可以保存任何类型的数据,从字母、数字、字符到 JPEG 图像。唯一的限制是字符串的长度必须小于等于 512MB。

要创建字符串,请使用 set 命令。例如,以下 set 命令创建一个名为 key_Welcome1 的键,其值为字符串 "Howdy"

127.0.0.1:6379> set key_Welcome1 "Howdy"

输出

OK

要在一个命令中设置多个字符串,请使用 mset

127.0.0.1:6379> set key_Welcome1 "Howdy"

你还可以使用 append 命令创建字符串:

127.0.0.1:6379>  append key_Welcome4 "welcome to Texas"

如果字符串创建成功,append 将输出一个整数,该整数等于字符串包含的字符数:

输出

 (integer) 16

注意 append 也可以用来改变字符串的内容。这部分信息可以参考下方的操作字符串

查询字符串

使用 get 命令可以获取字符串的值:

127.0.0.1:6379>  get key_Welcome1

输出

 "Howdy"

想要在一个命令当中获取多个字符串键的值,可以使用 mget 命令:

127.0.0.1:6379>  mget key_Welcome1 key_Welcome2 key_Welcome3 key_Welcome4

输出

 1) "Howdy"
 2) "there"
 3) "partners,"
 4) "welcome to Texas"

对于传递给mget的每个不包含字符串值或根本不存在的键,该命令将返回 nil

操作字符串

如果字符串由整数构成,你可以运行 incr 命令对其值 +1:

127.0.0.1:6379>  set key_1 3
127.0.0.1:6379>  incr key_1

输出

 (integer) 4

同样,你可以使用 incrby 命令将数字字符串的值增加一个特定的增量:

127.0.0.1:6379>  incrby key_1 16

输出

 (integer) 20

decrdecrby 命令的工作方式相同,但它们减少了存储在数字字符串中的值:

127.0.0.1:6379>  decr key_1

输出

 (integer) 19
127.0.0.1:6379>  decrby key_1 16

输出

 (integer) 3

如果字母字符串已经存在,append 会将值附加到现有值的末尾并返回字符串的新长度。为了说明,以下命令将 ", y'all" 附加到键 key_Welcome4 保存的字符串中,所以现在字符串将显示为 "welcome to Texas, y'all"

127.0.0.1:6379>  append key_Welcome4 ", y'all"

输出

 (integer) 15

你还可以将整数附加到包含数值的字符串。以下示例将 45 附加到 3,即 key_1 中保存的整数,因此它将保存 345。在这种情况下,append 也会返回字符串的新长度,而不是它的新值:

127.0.0.1:6379>  append key_1 45

输出

 (integer) 3

因为这个键仍然只保存一个数值,所以你可以对其执行 incrdecr 操作。你还可以将字母字符附加到整数字符串,但如果这样做,则在字符串上运行 incrdecr 将产生错误,因为字符串值不再是整数。

总结

本指南详细介绍了一些用于在 Redis 中创建和管理字符串的命令。