一、是什么
Lettuce(生菜),是连接Redis的JAVA驱动包。
二、Lettuce与Jedis区别
jedis和lettuce都是Redis客户端,它们都可以连接Redis服务器。
但在SpringBoot 2.0之后都是默认用letttuce这个客户端连接redis服务器。
因为当使用jedis客户端连接redis服务器时,每个线程都要拿自己创建的实例去连接Redis客户端,当有很多个线程时(高并发),不仅开销大需要反复的创建并关闭jedis连接,而且也是线程不安全的,一个线程通过jedis实例去更改redis服务器中的数据会影响另一个线程。
Lettuce底层使用Netty实现,当有多个线程都需要连接redis服务器时,可以保证只创建一个lettuce连接,多个线程共享同一个连接,减少了频繁创建和关闭连接的开销,而且是线程安全的,不存在一个线程改动redis中数据影响另一个线程的情况。
更详细的区别,请参考:初探 Redis 客户端 Lettuce:真香! - vivo互联网技术 - 博客园 (cnblogs.com)
我觉得这位博主写的超级好!博客园真的很棒,建议大家收藏这个网站~
三、配置
1.在Idea中新建一个module
2.改pom文件,添加如下依赖
<!--lettuce是连接redis的java驱动包 -->
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
<version>6.2.0.RELEASE</version>
</dependency>
3.虚拟机里开启redis服务
4.Idea中测试连接
import io.lettuce.core.*;
RedisURI redisUri = RedisURI.builder()
.withHost("192.168.80.130")
.withPort(6379)
.withPassword("password")
.build();
RedisClient redisClient=RedisClient.create(redisUri);
StatefulRedisConnection<String, String> connection=redisClient.connect()
RedisCommands<String, String> redisCommand=connection.sync();
System.out.println("服务器正在运行: "+redisCommand.ping());
redisCommand.set("key", "Hello, Redis!");
connection.close();
redisClient.shutdown();
最后:lettuce就是调用jar包里现成的api,所以了解常用的api十分重要。
Lettuce使用的时候依赖于四个主要组件:
RedisURI:连接信息。
RedisClient:Redis客户端,特殊地,集群连接有一个定制的RedisClusterClient。
Connection:Redis连接,主要是StatefulConnection或者StatefulRedisConnection的子类,连接的类型主要由连接的具体方式(单机、哨兵、集群、订阅发布等等)选定,比较重要。
RedisCommands:Redis命令API接口,基本上覆盖了Redis发行版本的所有命令,提供了同步(sync)、异步(async)、反应式(reative)的调用方式,对于使用者而言,会经常跟RedisCommands系列接口打交道。