前言
Redis 初体验中记录了 Redis 的基本操作。
本文学习一下如何通过 Java 操作 Redis。
Java 操作 Redis 的库有两个,Jedis 和 Lettuce,目前 SpringBoot 2.x 中已经将 Jedis 换成了 Lettuce。
本文直接从 Lettuce 来学习。
基本使用
第一个例子
依赖
pom.xml
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
<version>5.0.4.RELEASE</version>
</dependency>
代码
BasicUsage.java
输出
[DEBUG] (main) Using Console logging
[DEBUG] (main) Starting UnsafeSupport init in Java 1.8
[TRACE] (main) sun.misc.Unsafe.theUnsafe ok
[TRACE] (main) sun.misc.Unsafe.copyMemory ok
[TRACE] (main) java.nio.Buffer.address ok
[DEBUG] (main) Unsafe is available
Aug 19, 2018 11:29:50 AM io.lettuce.core.EpollProvider <clinit>
信息: Starting without optional epoll library
Aug 19, 2018 11:29:50 AM io.lettuce.core.KqueueProvider <clinit>
信息: Starting without optional kqueue library
note.abeffect.com
其它同步使用方式
设定超时时间为 20s
RedisClient client = RedisClient.create(RedisURI.create("localhost", 6379));
client.setDefaultTimeout(Duration.ofSeconds(20));
使用 RedisURI
RedisURI redisUri = RedisURI.Builder.redis("localhost").withPassword("authentication").withDatabase(2).build();
RedisClient client = RedisClient.create(redisUri);
或者
RedisURI redisUri = RedisURI.create("redis://authentication@localhost/2");
RedisClient client = RedisClient.create(redisUri);
异步使用例子
异步调用,可以避免将 CPU 浪费在等待网络 IO 和磁盘 IO 时上,实现提高资源使用率。
基本例子
使用 Consumer 监听器
RedisFuture<String> future = async.get("host");
future.thenAccept(new Consumer<String>() {
@Override
public void accept(String value) {
System.out.println(value);
}
});
使用 Lambda 表达式
RedisFuture<String> future = async.get("host");
future.thenAccept(System.out::println);
使用独立的线程池
为了防止阻塞默认的线程池,可以在单独的线程池中执行异步请求。
Executor sharedExecutor = Executors.newFixedThreadPool(1);
RedisFuture<String> future = async.get("host");
future.thenAcceptAsync(System.out::println, sharedExecutor);
更多的例子见 Asynchronous-API 官方文档
Reactive 调用
Reactive API 官方文档,或者 Reactive 相关资料。
Pub/Sub
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于