我正在使用生菜反应式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);
});