You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quarkus应用集成测试中使用Embedded Redis v1.0.0遭遇"ERR unknown command getex"错误的解决方法

Quarkus应用集成测试中使用Embedded Redis v1.0.0遭遇"ERR unknown command getex"错误的解决方法

我太懂这种被版本兼容问题卡壳的感觉了!你遇到的这个错误原因其实很明确:你Windows机器上的Embedded Redis v1.0.0默认使用的是Redis 5版本,而getex命令是Redis 6才正式引入的,所以执行这个命令时就会抛出"unknown command"的错误。

不过别担心,你提到的思路是对的——Embedded Redis库本身就带有一些非默认的Redis二进制文件,我们可以通过ExecutableProvider和newCachedUrlProvider来指定使用支持getex的Redis 6+版本,具体操作可以参考下面的步骤和代码示例:

  • 首先建议把你的Embedded Redis依赖升级到1.4.3及以上版本,这个版本对自定义二进制的支持更完善
  • 在你的集成测试配置类中,自定义RedisServer的启动逻辑,指定使用Redis 6+的二进制文件:
import redis.embedded.RedisServer;
import redis.embedded.provider.ExecutableProvider;
import redis.embedded.provider.RedisDownloadProvider;
import redis.embedded.util.OS;
import redis.embedded.util.Architecture;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;

public class RedisIntegrationTest {

    private RedisServer redisServer;

    @BeforeEach
    void setUpRedis() {
        // 创建自定义的可执行文件提供者,指定Redis 6+版本的二进制包
        ExecutableProvider executableProvider = RedisDownloadProvider.newCachedUrlProvider()
                .overrideDownloadUrl(OS.WINDOWS, Architecture.x86_64, "Redis 6+版本的Windows二进制包下载地址");

        // 构建RedisServer实例
        redisServer = RedisServer.builder()
                .executableProvider(executableProvider)
                .port(6379) // 根据你的测试需求指定端口
                .build();

        // 启动Redis服务
        redisServer.start();
    }

    @AfterEach
    void tearDownRedis() {
        // 测试结束后停止Redis服务
        if (redisServer != null && redisServer.isActive()) {
            redisServer.stop();
        }
    }

    // 你的测试用例...
}

这样配置之后,Embedded Redis会自动下载并使用你指定的Redis 6+版本,getex命令就能正常执行了。如果不想手动指定下载地址,也可以查看Embedded Redis库中自带的额外二进制版本,直接指定对应的版本标识来调用。

备注:内容来源于stack exchange,提问作者Mali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 09:28:11