学习

Redis 可扩展性

Simon Prickett
作者
Simon Prickett, Redis 首席开发者倡导者

如何扩展 Redis?#

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

模块通过修改 redis.conf 配置文件在启动时加载到 Redis 服务器中。然后,应用程序开发人员通过以与调用任何其他 Redis 命令相同的方式调用模块的命令,来利用模块提供的额外功能。我们将在稍后使用 ioredis 客户端(适用于 Node.js)了解如何执行此操作。

在哪里可以找到模块?#

redis.io 网站有一个 可用模块目录。Redis 开发了许多扩展 Redis 的模块,我们将在示例应用程序中使用其中一些模块。

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

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

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

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

我们的社交签到应用程序使用了三种 Redis Stack 功能

  • 我们将使用 搜索和查询 对我们的用户和位置哈希进行索引,从而使我们能够执行以下查询:
  • "哪个用户与电子邮件地址 sara.olsen@example.com? 相关联?"
  • "找到最近签到次数最多的用户"。
  • "找到我所在位置 3 英里半径内的所有餐厅,这些餐厅至少有 3 星评级"
  • JSON 添加了用于存储和操作 JSON 文档的命令。我们将使用它们来检索有关我们每个位置的更多详细信息。
  • 最后,我们将利用一个空间效率高的 概率 Bloom 过滤器 来阻止用户发布重复的签到。

在下一节中,我们将深入了解 Redis JSON...

外部资源#

查看这些链接,了解有关哪些模块可用于 Redis 以及如何使用模块 API 创建您自己的模块的更多信息