ARM 支持

探索ARM CPU架构上的Redis

Redis 4.0及以上版本通常支持ARM处理器,特别是Raspberry Pi作为主要平台。每个新版本的Redis都在Pi环境中进行测试,并且我们会更新此文档页面,提供有关支持的设备和其他有用信息。虽然Redis确实可以在Android上运行,但我们期待未来将测试工作扩展到Android,使其也成为官方支持的平台。

我们相信Redis是物联网和嵌入式设备的理想选择,原因如下:

  • Redis 具有非常小的内存占用和 CPU 需求。它可以在像 Raspberry Pi Zero 这样的小型设备上运行,而不会影响整体性能,使用少量的内存,同时为许多用例提供良好的性能。
  • Redis的数据结构通常是建模物联网/嵌入式用例的理想方式。一些例子包括累积时间序列数据、接收或排队命令以执行或响应发送回远程服务器等。
  • 在Redis内部建模数据对于必须非常快速响应的设备或在远程服务器离线时做出设备内决策非常有用。
  • Redis 可以用作设备中运行的进程之间的通信系统。
  • Redis的仅追加文件存储非常适合SSD卡。
  • Redis 5.0及以上版本中包含的流数据结构专门为时间序列应用设计,具有非常低的内存开销。

Redis /proc/cpu/alignment 要求

ARM上的Linux允许捕获未对齐的访问并在内核中修复它们,以便继续执行违规程序,而不是生成SIGBUS。Redis 4.0及更高版本已修复,以避免任何类型的未对齐访问,因此无需为此内核配置设置特定值。即使在内核对齐修复设置为禁用的情况下,Redis也应如预期运行。

在树莓派中构建Redis

  • 下载 Redis 4.0 或更高版本。
  • 像往常一样使用make来创建可执行文件。

在这个过程中没有什么特别的。唯一的区别是,默认情况下,Redis使用libc分配器,而不是像在其他基于Linux的环境中那样默认使用jemalloc。这是因为我们相信,在嵌入式设备中的小规模使用情况下,内存碎片不太可能成为问题。此外,ARM上的jemalloc可能没有libc分配器那样经过充分测试。

性能

在树莓派3和树莓派1型号B上进行了Redis的性能测试。这两款树莓派在性能表现上的差异相当大。基准测试是通过回环接口进行的,因为大多数使用场景可能会在设备内部使用Redis,而不是通过网络。以下数据是使用Redis 4.0获得的。

树莓派 3:

  • 测试 1:使用 1 百万个键进行 5 百万次写入(键之间均匀分布)。无持久化,无管道。28,000 次操作/秒。
  • 测试 2:与测试 1 类似,但使用 8 个操作为一组的流水线:80,000 次操作/秒。
  • 测试 3:与测试 1 类似,但启用了 AOF,fsync 1 秒:23,000 次操作/秒
  • 测试 4:与测试 3 类似,但在进行 AOF 重写时:21,000 次操作/秒

树莓派1型号B:

  • 测试1:使用100万个键进行500万次写入(键之间均匀分布)。无持久化,无管道。每秒2,200次操作。
  • 测试 2:与测试 1 类似,但使用 8 个操作的分组进行流水线处理:8,500 次操作/秒。
  • 测试 3:与测试 1 类似,但启用了 AOF,fsync 1 秒:1,820 操作/秒
  • 测试 4:与测试 3 类似,但在进行 AOF 重写时:1,000 次操作/秒

上述基准测试指的是简单的SET/GET操作。对于所有Redis快速操作(不在线性时间内运行),性能是相似的。然而,有序集合可能会显示出稍微慢一些的数字。

RATE THIS PAGE
Back to top ↑