如何管理 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
decr
和 decrby
命令的工作方式相同,但它们减少了存储在数字字符串中的值:
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
因为这个键仍然只保存一个数值,所以你可以对其执行 incr
和 decr
操作。你还可以将字母字符附加到整数字符串,但如果这样做,则在字符串上运行 incr
和 decr
将产生错误,因为字符串值不再是整数。
总结
本指南详细介绍了一些用于在 Redis 中创建和管理字符串的命令。