ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
如果直接在终端操作,那么当发现一个槽不在当前节点,我们必须根据返回的`MOVED`指令自己手动去指定的节点中操作,所以`Redis Cluster`集群如果要实现自动连接则要求客户端必须要实现自动重定向。 在`Jedis`中,只要连接任意一个或者多个节点,且不论是`master`还是`slave`节点,`Jedis`就可以自动实现重定向连接到集群中任意节点。 下面我们就以`Jedis`客户端为例来看看如何使用`Redis Cluster`集群: 1. 还是在上一个实验的`redis-demo`内的`src/main/java`目录下的`com.lonely.wolf.redis`包内新建一个测试类`TestRedisCluster.java`进行测试: ~~~java package com.lonely.wolf.redis; import redis.clients.jedis.HostAndPort; import redis.clients.jedis.JedisCluster; import java.io.IOException; import java.util.HashSet; import java.util.Set; public class TestRedisCluster { public static void main(String[] args) throws IOException { HostAndPort hp1 = new HostAndPort("localhost",6370); Set nodes = new HashSet<HostAndPort>(); nodes.add(hp1); JedisCluster cluster = new JedisCluster(nodes); cluster.set("name", "lonely_wolf"); System.out.println(cluster.get("name")); cluster.close(); } } ~~~ 2. 同时,需要修改`pom.xml`文件中的`mainClass`属性,把这个类名修改正确: ~~~xml <mainClass>com.lonely.wolf.redis.TestRedisCluster</mainClass> ~~~ 3. 执行如下命令: ~~~bash # 进入 redis-demo 主目录 cd /home/project/redis-demo # 将项目打包成一个 jar 包 mvn clean package -Dmaven.test.skip=true ~~~ 4. 打包之后执行如下命令,运行项目可以成功输出`lonely_wolf`: ~~~bash java -jar target/redis-demo-1.0.0-SNAPSHOT.jar ~~~ ![](https://img.kancloud.cn/5e/27/5e273f16fc35386fe9c16415d7d1a4b0_943x267.png) 在我们的`demo`中,只连接了一台`6370`,那我们就看看`name`这个`key`到底是不是`6370`这个服务负责的槽,执行如下命令: ~~~bash # 连接上 6370 服务 /home/project/redis-6370/bin/redis-cli -p 6370 get name ~~~ ![](https://img.kancloud.cn/9b/94/9b94d6ad4085810ee3fa7cb99f81d3cf_696x128.png) 可以看到,在这里提示我们需要去`6371`服务操作,这就说明`name`这个`key`是由`6371`负责的,而我们在代码中只连接了`6370`这一个服务,是`Jedis`客户端实现了自动重连的功能.