springboot2 的redis连接池lettuce5

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循环内部代码效果相同,定义了具体的回调执行代码。

猜你喜欢

转载自blog.csdn.net/qq_36666651/article/details/80635940