Vertx的Redis Client中主要有两个类
public void redisTransaction(Vertx vertx){
//Redis连接
RedisOptions config = new RedisOptions();
config.setHost("127.0.0.1");
config.setPort(6379);
RedisClient client = RedisClient.create(vertx, config);
//Redis缓存事务模块
RedisTransaction transactionClient = client.transaction();
transactionClient.watch("i", res->{
if(!res.succeeded()){
res.cause().printStackTrace();
}
});
transactionClient.get("i", getRes->{
if(getRes.succeeded()){
//开启Redis缓存事务
transactionClient.multi(multiRes->{
if(!multiRes.succeeded()){
multiRes.cause().printStackTrace();
}
});
//更新Redis缓存key的值
Integer value = Integer.parseInt(getRes.result()) + 100;
//同步i到Redis缓存
transactionClient.set("i", value.toString(), setRes->{
if(!setRes.succeeded()){
setRes.cause().printStackTrace();
}
});
//执行Redis缓存事务
transactionClient.exec(res->{
if(res.succeeded()){
if (res.result() == null) {
//乐观锁执行失败,重新执行
redisTransaction(vertx);
}
} else {
res.cause().printStackTrace();
}
});
} else {
getRes.cause().printStackTrace();
}
});
}