• 大多数(但不是全部)对象使用密钥
    • 使用命名空间
    • 检索所有现有密钥

与其他非关系型数据库引擎一样,有时很难理解 Redis 如何处理数据结构和关联。当将 Redis 与具有隔离表的更传统的关系数据库进行比较时尤其如此,每个表都包含多行和多列来存放数据。

由于 Redis 是非关系型的,因此系统中的所有内容都以key/value最简单的级别配置了基本对。特别是在开发过程中,跟踪数据库中已经存在的所有内容可能会很棘手,因此在这个简短的教程中,我们将介绍keys使用一些简单命令从 Redis 数据库中检索所有内容的方法。

大多数(但不是全部)对象使用密钥

对于使用 Redis 进行的绝大多数数据存储,数据将存储在一个简单的key/value对中。这最好通过redis-cli(命令行界面)使用GETSET命令来显示。

例如,我们可能想要存储一些关于的信息books,例如我们的一些收藏夹的titleauthor

> SET title "The Hobbit"
OK
> SET author "J.R.R. Tolkien"
OK

`title`和`author`是`keys`我们设置的和之后指定的实际字符串值。所以我们可以用 来查看它们`GET`,如下所示:

```redis
> GET title
"The Hobbit"
> GET author
"J.R.R. Tolkien"

使用命名空间

这一切都很好,但是我们如何添加另一本书?我们不能重复使用相同的titleauthor键,否则我们将覆盖现有数据。相反,我们可以通过使用:分隔符并给每个titleauthor条目一个唯一的数字来使用命名空间语法key

> SET title:1 "The Hobbit"
OK
> SET author:1 "J.R.R. Tolkien"
OK
> SET title:2 "The Silmarillion"
OK
> SET author:2 "The Silmarillion"
OK

现在使用GET还需要添加唯一的数字key

> GET title:1
"The Hobbit"
> GET title:2
"The Silmarillion"

检索所有现有密钥

事实证明,SET我们在上面发出的每个命令都key在我们的 Redis 数据库中创建了一个新的、唯一的。要获取所有当前keys存在的列表,只需使用以下KEYS命令:

> KEYS *
1) "title:1"
2) "title:2"
3) "title"
4) "author:2"
5) "author"
6) "author:1"

通过KEYS使用星号 ( *)(充当通配符搜索),我们要求 Redis 检索系统中的所有密钥。因此,我们不仅看到了我们的两个原始版本titleauthor密钥,还看到了随后的四个枚举版本。

以下语法KEYS可用于搜索键中的特定单词或短语,或者也可用于精确匹配。在这里,我们想要所有包含文本的键'title'

> KEYS *title*
1) "title:1"
2) "title:2"
3) "title"

注意:正如官方文档中提到的,建议避免KEYS在非常大的数据库上使用该命令,尤其是避免在生产环境中使用它。由于KEYS可能会返回系统中的每个密钥,这可能会对性能产生巨大的负面影响。

Logo

Redis社区为您提供最前沿的新闻资讯和知识内容

更多推荐