如何提高 Redis 服务器的 CPU 使用率?

我的目标是使我们的 Redis 服务器在生产环境中达到大约 80% 的 CPU 利用率。这将有助于我们的后端服务器设计,确保我们不会在利用 CPU 方面不足,同时留出一些空间用于增长和峰值。

使用 Redis 自己的基准测试工具 redis-benchmark,很容易达到大约 100% 的 CPU 使用率:

    $ redis-benchmark -h 192.168.1.6 -n 1000000 -c 50

在这个基准测试中,我们分配了 50 个客户端向我们的 Redis 服务器推送了 1,000,000 个请求。

但是在使用其他客户端工具(例如 redis-luawebdis)时,最大的 CPU 使用率不到 60%。

我在 webdisredis-lua 中浏览了一些代码。webdis 依赖于 hiredisredis-lua 是用 Lua 实现的,并依赖于 socket (lua-socket)。

这些客户端与 Redis 基准测试相比是否太慢,无法使 Redis 的 CPU 消耗最大化?

我还浏览了一些 redis-benchmark.c 中的代码。基准测试的主要工作是在 aeMain 中完成的。似乎 redis-benchmark 使用来自 Redis 的快代码,而我的测试客户端 (webdisredis-lua) 则没有。

目前我的客户端有两个选择:

  1. 使用 redis-lua
  2. 使用像 webdis 这样的工具

然而,这两种方法都不能最大化 Redis 的 CPU 利用率(不到 60%)。还有其他选择吗?

或者,是否有可能在 redis-benchmark 工具之外充分利用 redis-server?

点赞