Lettuce是一个可伸缩线程安全的Redis客户端。多个线程可以共享同一个RedisConnection
因为connection是线程安全的;在一个application中只需要创建一个connection
@Bean StatefulRedisMasterSlaveConnection redisConnection() { ClientResources resources = DefaultClientResources.builder().ioThreadPoolSize(10).computationThreadPoolSize(100).build(); ClientOptions clientOptions=ClientOptions.builder().socketOptions(SocketOptions.builder().keepAlive(true).tcpNoDelay(true).build()).pingBeforeActivateConnection(true).build(); RedisClient redisClient = RedisClient.create(resources); redisClient.setOptions(clientOptions); RedisURI test = RedisURI.builder().withSentinel("xxxx", 26009).withSentinel("xxxxx", 26009) .withPassword("abcd1234").withSentinelMasterId("test").build(); return MasterSlave.connect(redisClient, new Utf8StringCodec(), test); }
private void lettuceGet() { try { //只从slave节点中读取 redisConnection.setReadFrom(ReadFrom.SLAVE); RedisAsyncCommands<String, String> redisCommands = redisConnection.async(); //写缓存 redisCommands.set("test", "value"); //使用异步模式获取缓存值 RedisFuture redisFuture = redisConnection.async().get("test"); //输出缓存值 System.out.println(redisFuture.get()); } catch (Exception e) { } }