springboot2之前redis的连接池为jedis,2.0以后redis的连接池改为了lettuce,lettuce能够支持redis4,需要java8及以上。lettuce是基于netty实现的与redis进行同步和异步的通信,下面为lettuce与redis进行简单的同步与异步的通信的示例,版本为5.0.4
public static void main(String[] args) throws ExecutionException, InterruptedException {
RedisURI redisURI1 = RedisURI.builder().withHost("127.0.0.1").withPort(6379).withPassword("00000000").build();
RedisURI redisURI2 = RedisURI.Builder.redis("127.0.0.1").withPort(6379).withPassword("00000000").build();
// RedisURI redisURI3 = new RedisURI("127.0.0.1", 6379, Duration.ofMillis(-1));
RedisClient redisClient = RedisClient.create(redisURI1);
StatefulRedisConnection connection = redisClient.connect();
RedisCommands<String, String> commands = connection.sync();
System.out.println(commands.get("name"));
RedisAsyncCommands<String, String> asyncCommands = connection.async();
RedisFuture<String> rs = asyncCommands.get("wk");
// rs.thenAccept(System.out::println);
while (!rs.isDone()){
System.out.println(rs.get());
}
connection.close();
redisClient.shutdown();
}
上面写了三种创建连接的方式,5以后版本API发生了改变,推荐使用builder模式来创建URI来连接redis。可以通过RedisURI.builder()来创建,也可以通过RedisURI.Builder.redis(),也可以直接通过new来创建,不过这种方式能够配置的参数较少,需要使用密码也比较麻烦。具体的API直接翻源码就可以了。
然后通过sync()或者async()来获取同步或者异步操作连接,同步没什么,异步的通过future函数接口来接收结果,还提供RedisFuture来操作使用,上面注释的代码rs.thenAccept(System.out::println)与while循环内部代码效果相同,定义了具体的回调执行代码。