学习

Redis 扩展性

Simon Prickett
作者
Simon Prickett, Redis 首席开发者布道师

如何扩展 Redis?#

Redis 提供了 Modules API,允许开发者通过新功能扩展其核心功能。Redis Modules 是可以使用 C 或其他语言(包括 Rust 和 Zig)编写的库。Modules 可以为 Redis 添加新命令和/或数据结构。例如,通过添加 Modules,Redis 可以扩展成为一个时序数据库或图数据库,同时保留其所有原始的键/值存储功能。

通过修改 redis.conf 配置文件,可以在启动时将 Modules 加载到 Redis 服务器中。然后,应用开发者只需像调用任何其他 Redis 命令一样调用 Modules 的命令,即可使用 Module 提供的额外功能。我们稍后将看到如何使用 Node.js 的 ioredis 客户端来完成此操作。

在哪里找到 Modules?#

redis.io 网站有一个 可用 Modules 目录。Redis 开发了许多此类 Modules,以不同的方式扩展了 Redis,我们将在示例应用中使用其中的一些。

开始使用 Redis Modules 的一种方法是使用 Docker Hub 的 Redis Stack Docker 容器。这就是您在本课程中使用的容器,它包含以下所有功能:

  • 搜索和查询 - 一个功能齐全的搜索和查询引擎。
  • 时序数据库 - 一个时序数据库。
  • JSON - 向 Redis 添加了原生的 JSON 数据类型。
  • 概率数据结构 - 向 Redis 添加了原生的 Bloom 和 Cuckoo 过滤器数据类型,以及其他概率数据结构。

Redis 提供 Redis Cloud,这是一项用于运行和扩展 Redis 和 Redis Stack 的全托管服务。 注册 Redis Cloud 并使用功能齐全的免费套餐进行试用!

在我们的应用中使用 Redis Stack#

我们的社交签到应用使用了 Redis Stack 的三个功能:

  • 我们将使用 搜索和查询 来索引我们的用户和位置 Hashes,从而能够执行以下查询:
  • "哪个用户与电子邮件地址 [email protected] 相关联?"
  • "找到签到时间最新的用户"。
  • "查找我位置附近 3 英里范围内所有评分至少为 3 星的餐厅"
  • JSON 添加了用于存储和操作 JSON 文档的命令。我们将使用这些命令来检索有关我们每个位置的额外详细信息。
  • 最后,我们将利用空间效率高的 概率布隆过滤器 来阻止用户发布重复的签到。

下一节,我们将深入探讨 Redis JSON...

外部资源#

查看这些链接,了解 Redis 有哪些 Modules 可用,以及如何使用 Modules API 创建自己的 Modules