1、Redis的客户端lettuce
Lettuce和Jedis的都是连接Redis Server的客户端程序。Jedis在实现上是直连redis server,多线程环境下非线程安全,除非使用连接池,为每个Jedis实例增加物理连接。Lettuce基于Netty的连接实例(StatefulRedisConnection),可以在多个线程间并发访问,且线程安全,满足多线程环境下的并发访问,同时它是可伸缩的设计,一个连接实例不够的情况也可以按需增加连接实例.
2、Lettuce客户端安装引用
1) 下载指定的版本Jar包
下载地址:https://github.com/lettuce-io/lettuce-core/releases
2) 在Pom.xml中添加Maven依赖
<dependency>
<groupId>biz.paluch.redis</groupId>
<artifactId>lettuce</artifactId>
<version>3.2.Final</version>
</dependency>
其它版本:https://github.com/lettuce-io/lettuce-core/wiki/Download
3、使用Lettuce连接Redis
import com.lambdaworks.redis.*;
public class ConnectToRedis {
public static void main(String[] args) {
RedisClient redisClient = new RedisClient(
RedisURI.create("redis://password@host:port"));//password是连接的密码,不需验证删除password@即可
RedisConnection<String, String> connection = redisClient.connect();
System.out.println("Connected to Redis");
connection.close();
redisClient.shutdown();
}
}
使用Spring时,则可以使用Spring XML创建一个实例,内容如下:
<bean id="RedisClient" class="com.lambdaworks.redis.support.RedisClientFactoryBean">
<property name="uri" value="redis://host:port"/>
</bean>
使用代码:
import com.lambdaworks.redis.*;
import org.springframework.beans.factory.annotation.Autowired;
public class MySpringBean {
private RedisClient redisClient;
@Autowired
public void setRedisClient(RedisClient redisClient) {
this.redisClient = redisClient;
}
public String ping() {
RedisConnection<String, String> connection = redisClient.connect();
String result = connection.ping();
connection.close();
return result;
}
}
注意:
通常程序退出后,需要使用shutdown
方法关闭:
redisClient.shutdown();
如果使用的是Spring
和CDI
,则框架将负责管理资源,而不必使用shutdown
方法关闭客户端。
4、使用SSL的Lettuce客户端
为了增加安全性,可以使用SSL连接保护连接的安全。Lettuce本机支持SSL连接。
import com.lambdaworks.redis.*;
public class ConnectToRedisSSL {
public static void main(String[] args) {
RedisClient redisClient = new RedisClient(
RedisURI.create("rediss://password@host:port"));
RedisConnection<String, String> connection = redisClient.connect();
System.out.println("Connected to Redis using SSL");
connection.close();
redisClient.shutdown();
}
}
注意:根据服务器的SSL配置,您可能需要使用keytool
实用程序在本地JVM
中安装证书。
5、使用Lettuce客户端读写数据(set和get)
一旦连接到Redis,您就可以开始读取和写入数据。下面的代码片段将值bar写入到Redis key foo中,然后读取并打印出来:
import com.lambdaworks.redis.*;
public class ConnectToRedis {
public static void main(String[] args) {
RedisClient redisClient = new RedisClient(
RedisURI.create("redis://password@host:port"));//password是连接的密码,不需验证删除password@即可
RedisConnection<String, String> connection = redisClient.connect();
System.out.println("Connected to Redis");
connection.set("foo", "bar");
String value = connection.get("foo");
System.out.println(value);
connection.close();
redisClient.shutdown();
}
}
官方文档:https://redislabs.com/lp/redis-java/