#2587·drogon

RedisClient::execCommand* incorrectly splits EVAL arguments

Author: tanglong3bfCreated Sep 7, 2026Updated Sep 7, 2026

When executing the EVAL command via redisClient->execCommand*, the arguments are incorrectly split.

C++ code

cpp
string command = "EVAL \"redis.call('SET', KEYS[1], 1)\" 1 aaa";
redisClient_->execCommandAsync(
    [](const drogon::nosql::RedisResult &result) {
        LOG_INFO << result.getStringForDisplaying();
    },
    [](const drogon::nosql::RedisException &e) {
        LOG_ERROR << e.what(); // Output: ERR value is not an integer or out of range
    },
    command);

Redis Monitor Output (Incorrect):‌**

1788764064.250441 [0 172.17.0.1:52148] "EVAL" "\"redis.call('SET'," "KEYS[1]," "1)\"" "1" "aaa"

Expected Monitor Output (Correct):‌**

1788764160.024534 [0 172.17.0.1:37362] "EVAL" "redis.call('SET', KEYS[1], 1)" "1" "aaa"
1788764160.029867 [0 lua] "SET" "aaa" "1"