如何使用生菜反应式API处理get命令的空响应

时间:2019-08-02 08:18:49

标签: redis lettuce

我正在使用生菜反应式api查询redis,并且需要处理redis没有密钥的情况。但是,当密钥不存在时,它似乎没有调用订阅功能

我要查询redis,然后打印结果

如果结果存在,则应显示“收到的结果:{结果}”

,如果结果不存在,则应打印“ result receive:null”。

auto a

redis拥有关键:你好,它的价值在于世界。

我希望第一个get调用的输出应为“ result receive:world”,并且实际输出与我的期望相同。

第二次调用的输出应为“ result receive:null”,但实际上未打印任何内容

解决方案:我发现生菜使用项目反应器api,其api行为与rxjava不同,应使用switchIfEmpty处理空响应

    RedisURI redisURI = RedisURI.builder().withHost("10.203.0.114").withPort(6379).withPassword("123456").build();
    RedisClient client = RedisClient.create(redisURI);
    StatefulRedisConnection<String,String> connection = client.connect();

    RedisStringReactiveCommands<String,String> reactive = connection.reactive();
    reactive.get("hello").onErrorReturn("error").subscribe(res->{
        System.out.println("result receive:"+res);
    },Throwable::printStackTrace);
    reactive.get("hell").doOnError(throwable -> {
        System.out.println("do on error");
        throwable.printStackTrace();
    }).subscribe(r->{
        System.out.println("result receive:"+r);
    });

0 个答案:

没有答案