自动分层存储
Auto Tiering 使您的数据能够跨越 RAM 和专用闪存。
Redis 企业软件 | Redis 云 |
---|
Redis Enterprise 的自动分层为用户提供了使用固态驱动器 (SSD) 的独特功能,以将数据库扩展到 DRAM 容量之外。 开发人员可以使用相同的 Redis API 构建需要大型数据集的应用程序。 与仅使用 DRAM 部署相比,使用 SSD 可以显著降低基础设施成本。
经常使用的数据(称为热数据)属于最快的内存级别,以提供实时用户体验。 访问频率较低的数据(称为暖数据)可以保存在稍慢的内存层中。 Redis Enterprise 的自动分层功能可在 DRAM 中维护热数据,将热数据保存在 SSD 中,并自动在层之间传输数据。
Redis Enterprise 的自动分层基于高性能存储引擎 (Speedb),该引擎管理使用 SSD 和 DRAM 作为 Redis Enterprise 集群中数据库的总可用内存的复杂性。此实施提供了每个数据库内核每秒高达 10k 次作的性能提升,使 Redis on Flash 的性能翻了一番。
与全 RAM 数据库一样,启用了 Auto Tiering 的数据库与现有的 Redis 应用程序兼容。
Redis Cloud 和 Redis Enterprise Software for Kubernetes 也支持自动分层。
使用案例
与 Auto Tiering 相关的优势取决于使用案例。
在以下情况下,自动分层是理想的选择:
- 工作集明显小于您的数据集(高 RAM 命中率)
- 平均密钥大小小于平均值大小(所有密钥名称都存储在 RAM 中)
- 最新数据是使用最频繁的(高 RAM 命中率)
不建议将 Auto Tiering 用于:
- 长键名(所有键名都存储在 RAM 中)
- 广泛的访问模式(任何值都可以提取到 RAM 中)
- 大型工作集(工作集存储在 RAM 中)
- 频繁移动的数据(过于频繁地移入和移出 RAM 会影响性能)
Auto Tiering 不用于持久性存储。Redis Enterprise Software 数据库持久存储和临时存储应位于不同的磁盘上,可以是本地磁盘,也可以是附加磁盘。
我的数据在哪里?
使用 Auto Tiering 时,RAM 存储会占用:
- 所有键(名称)
- 关键索引
- 字典
- 热数据(工作集)
所有数据都通过 RAM 访问。如果访问 flash memory 中的值,则它将成为工作集的一部分并移动到 RAM。这些值称为 “热数据”。
非活动或不经常访问的数据称为“暖数据”,并存储在闪存中。当 RAM 中需要更多空间时,暖数据将从 RAM 移动到闪存。
RAM 闪存比
Redis Enterprise Software 允许您独立配置和调整每个数据库的 RAM 与 Flash 比率,从而优化特定使用案例的性能。 虽然这是一项在线作,不需要数据库停机,但建议在维护时段内执行,因为数据可能会在层 (RAM <-> Flash) 之间移动。
RAM 限制不能小于总内存的 10%。我们建议您在 RAM 中保留至少 20% 的所有值。请勿将 RAM 限制设置为 100%。
闪存
实施 Auto Tiering 需要围绕内存和大小进行预先规划。Auto Tiering 的注意事项和要求包括:
- 闪存必须在本地连接。不支持使用网络连接存储 (NAS)、存储区域网络 (SAN) 或 AWS Elastic Block Storage (EBS) 等解决方案。
- 闪存必须专用于 Auto Tiering,并且不能与数据库的其他部分(如持久性、二进制文件或持久性)共享。
- 为了获得最佳性能,SSD 应基于 NVMe,但也可以使用 SATA。
- 可用闪存空间必须大于或等于总数据库大小 (RAM+Flash)。额外的空间考虑了写入缓冲区和写入放大。
满足这些要求后,您可以在启用 Auto Tiering 的情况下创建和管理这两个数据库,并且 all-RAM 数据库。
当您开始规划在生产环境中部署启用了 Auto Tiering 的数据库时, 我们建议与 Redis 技术团队密切合作,以进行大小调整和性能。
云环境
在云环境中运行时:
- 闪存位于云实例的临时 SSD 上(例如 AWS i4i 实例的本地 NVMe 以及 Azure Lsv2 和 Lsv3 系列)。
- 持久性数据库存储需要网络连接(例如,AWS EBS for AWS)。
本地环境
当您开始规划在生产环境中部署 Auto Tiering 时,我们建议您与 Redis 技术团队密切合作,以进行大小调整和性能。
与其他环境相比,本地环境支持更多的部署选项,例如: