第一次写博客,写的不好请见谅. 如果有不对/不好的地方,欢迎指教.
趁着过年没事,学了学Redis, 现在把部分学习成果记录下来方便查阅,也帮助大家少走弯路
-1- 说明
redis版本: redis-3.2.6
环境: 集群, 三主三备
lettuce 版本4.3.0-final / 4.2.0-final
这两个版本相差比较大,使用中可能会版本不一致的问题,主要和netty的版本有关
-2- maven 依赖
<!-- Lettuce Redis客户端 --> <dependency> <groupId>biz.paluch.redis</groupId> <artifactId>lettuce</artifactId> <!--<version>4.2.0.Final</version>--> <version>4.3.0.Final</version> </dependency>
-2- Lettuce 单机客户端
import java.util.concurrent.ExecutionException; import com.lambdaworks.redis.RedisClient; import com.lambdaworks.redis.RedisFuture; import com.lambdaworks.redis.RedisURI; import com.lambdaworks.redis.api.StatefulRedisConnection; import com.lambdaworks.redis.api.async.RedisAsyncCommands; import com.lambdaworks.redis.api.sync.RedisCommands; public class LettuceClient { public static void main(String[] args) { RedisClient client = RedisClient.create(RedisURI.create("redis://192.168.37.128:7000")); StatefulRedisConnection<String, String> connect = client.connect(); /* 同步执行的命令 */ RedisCommands<String, String> commands = connect.sync(); String str = commands.get("test1"); //String str2 = commands.get("test2");//MOVED 8899 192.168.37.128:7001;;;;client是单机版 System.out.println(str); /* 异步执行的命令 */ // RedisAsyncCommands<String, String> commands = connect.async(); // RedisFuture<String> future = commands.get("test1"); // try { // String str = future.get(); // System.out.println(str); // } catch (InterruptedException e) { // e.printStackTrace(); // } catch (ExecutionException e) { // e.printStackTrace(); // } connect.close(); client.shutdown(); } }
单机客户端连接集群环境Redis, 如果key对应的哈希槽不在当前client创建的主机上,会报 MOVE....192.168.37.128:7001 异常