ARM 支持
探索 ARM CPU 架构上的 Redis
Redis 堆栈 | Redis 社区版 |
---|
Redis 版本 4.0 及更高版本通常支持 ARM 处理器,并且 具体来说,Raspberry Pi 作为主平台。Redis 的每个新版本都在 Pi 上进行了测试 环境中,并且我们会更新此文档页面,其中包含有关受支持设备的信息和其他有用信息。虽然 Redis 确实可以在 Android 上运行,但将来我们期待将我们的测试工作扩展到 Android 也使其成为官方支持的平台。
我们相信 Redis 是 IoT 和嵌入式设备的理想选择 原因:
- Redis 的内存占用和 CPU 要求非常小。它可以在 Raspberry Pi Zero 等小型设备中运行,而不会影响整体性能,使用少量内存,同时为许多用例提供良好的性能。
- Redis 的数据结构通常是对 IoT/嵌入式用例进行建模的理想方式。一些示例包括累积时间序列数据、接收或排队命令以执行或响应以发送回远程服务器等。
- 在 Redis 中对数据进行建模非常有用,以便为必须非常快速响应或远程服务器脱机的设备做出设备内决策。
- Redis 可以用作设备中运行的进程之间的通信系统。
- Redis 的仅附加文件存储非常适合 SSD 卡。
- Redis 版本 5.0 及更高版本中包含的流数据结构专为时间序列应用程序设计,内存开销非常低。
Redis /proc/cpu/alignment 要求
Linux on ARM 允许捕获未对齐的访问并将其修复在内核中
为了继续执行有问题的程序,而不是
生成SIGBUS
.Redis 4.0 及更高版本是固定的,以避免任何类型的
的 unaligned 访问权限,因此无需为此设置特定值
kernel 配置。即使内核对齐修复设置为禁用,Redis 也应该
按预期运行。
在 Pi 中构建 Redis
- 下载 Redis 版本 4.0 或更高版本。
- 用
make
像往常一样创建可执行文件。
这个过程没有什么特别的。唯一的区别是
default,Redis 使用libc
allocator 而不是默认为jemalloc
就像在其他基于 Linux 的环境中一样。这是因为我们相信
对于嵌入式设备内部的小型用例,内存碎片
不太可能成为问题。此外jemalloc
在 ARM 上可能与测试
作为libc
分配器。
性能
Redis 的性能测试是在 Raspberry Pi 3 和 Pi 1 模型 B 上进行的。两个 Pi 在交付性能方面的差异相当大。基准测试是通过 loopback 接口,因为大多数用例可能会从内部使用 Redis 设备,而不是通过网络。以下数字是使用 Redis 4.0 的版本。
树莓派 3:
- 测试 1:使用 100 万个键进行 500 万次写入(在键之间均匀分布)。没有坚持,没有流水线。28000 次作/秒
- 测试 2:与测试 1 类似,但使用 8 个作组的流水线:80,000 次作/秒。
- 测试 3:与测试 1 类似,但启用了 AOF,fsync 1 秒:23000 次作/秒
- 测试 4:与测试 3 类似,但正在进行 AOF 重写:21000 次作/秒
Raspberry Pi 1 型号 B:
- 测试 1:使用 100 万个键进行 500 万次写入(在键之间均匀分布)。没有坚持,没有流水线。2,200 次作/秒
- 测试 2:与测试 1 类似,但使用 8 个作组的流水线:8500 次作/秒。
- 测试 3:与测试 1 类似,但启用了 AOF,fsync 1 秒:1820 次作/秒
- 测试 4:与测试 3 类似,但正在进行 AOF 重写:1000 次作/秒
上面的基准测试是指简单的SET
/GET
操作。所有 Redis 快速作(不在线性时间内运行)的性能都相似。但是,排序集显示的数字可能会稍慢一些。