为什么我的 Redis 备份文件 (.rdb) 始终小于 ElastiCache 集群中的 BytesUsedForCache 指标?

上次更新日期:2022 年 7 月 1 日

我使用的是 Amazon ElastiCache for Redis。为什么我的 Redis 备份文件 (.rdb) 始终小于集群中的 BytesUsedForCache 指标

解决方法

BytesUsedForCache 指标包括用于所有用途的字节。这包括实际的密钥大小、标头和内存碎片。在 Redis 被动或主动异步删除过期密钥之前,它们也会消耗内存。有关更多信息,请参阅 Redis.io 网站上的密钥过期秒数 – Redis 如何让密钥过期

ElastiCache 使用分支和无分支备份流程。两种流程均会转储磁盘上的所有密钥,以创建 .rdb 文件。.rdb 文件不会使用指针或已过期的密钥,并且也不会处理内存碎片、元数据或缓冲区。这意味着备份文件的大小会小于 BytesUsedForCache 指标。

例如,您的 Redis 集群可能会显示 BytesUsedforCache 为 15GiB。此外还可能会显示备份初始化时集群上有大量的读/写请求。备份过程完成后,备份缓存大小可能在 10GiB 或 12GiB 之间,而不是 15GiB。这是因为备份不包含已过期的密钥、指针等。

注意:

  • ElastiCache 备份中的缓存大小来自创建快照时的 Redis used_memory。这是未压缩高速缓存大小的估计值。如果您将备份快照导出到 Amazon Simple Storage Service (Amazon S3),则会导出经过压缩的序列化文件大小。
  • 您可以使用 info keyspaceDBSIZE 命令验证备份的数据完整性。比较原始集群中的密钥数与从 RDB 还原的集群中的密钥数。确保在快照创建和还原之间没有发生密钥插入删除驱逐操作。有关更多信息,请参阅 Redis 常见问题中的为什么我的副本的密钥数量与其主实例的密钥数量不同?

这篇文章对您有帮助吗?


您是否需要账单或技术支持?