使用Lettuce 操作 Redis3.2.6集群
Lettuce使用Netty作为底层通信框架
import java.util.ArrayList; import java.util.concurrent.ExecutionException; import com.lambdaworks.redis.RedisFuture; import com.lambdaworks.redis.RedisURI; import com.lambdaworks.redis.cluster.RedisClusterClient; import com.lambdaworks.redis.cluster.api.StatefulRedisClusterConnection; import com.lambdaworks.redis.cluster.api.async.RedisAdvancedClusterAsyncCommands; import com.lambdaworks.redis.cluster.api.sync.RedisAdvancedClusterCommands; public class LettuceClusterClient { public static void main(String[] args) { ArrayList<RedisURI> list = new ArrayList<>(); list.add(RedisURI.create("redis://192.168.37.128:7000")); list.add(RedisURI.create("redis://192.168.37.128:7001")); list.add(RedisURI.create("redis://192.168.37.128:7002")); list.add(RedisURI.create("redis://192.168.37.128:7003")); list.add(RedisURI.create("redis://192.168.37.128:7004")); list.add(RedisURI.create("redis://192.168.37.128:7005")); RedisClusterClient client = RedisClusterClient.create(list); //RedisClusterClient client = RedisClusterClient.create("redis://192.168.37.128:7000"); StatefulRedisClusterConnection<String, String> connect = client.connect(); /* 同步执行的命令 */ RedisAdvancedClusterCommands<String, String> commands = connect.sync(); String str = commands.get("test2"); System.out.println(str); /* 异步执行的命令 */ // RedisAdvancedClusterAsyncCommands<String, String> commands= connect.async(); // RedisFuture<String> future = commands.get("test2"); // try { // String str = future.get(); // System.out.println(str); // } catch (InterruptedException e) { // e.printStackTrace(); // } catch (ExecutionException e) { // e.printStackTrace(); // } connect.close(); client.shutdown(); } }
相同的代码,使用不同的Lettuce版本执行,可能会报异常,主要是引入的Netty版本有光,只需把Netty的版本修改成相同的即可
<dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <!-- <version>4.0.14.Final</version> --> <!-- <version>4.1.6.Final</version> --><!-- lettuce 4.3 --> <version>4.0.36.Final</version><!-- lettuce 4.2 --> </dependency>