第一次写博客,写的不好请见谅. 如果有不对/不好的地方,欢迎指教.
趁着过年没事,学了学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 异常