springboot redis lettuce 与 jedis
时间: 2023-09-08 19:13:44 浏览: 231
Spring Boot 可以使用两种不同的 Redis 客户端:Lettuce 和 Jedis。
Jedis 是 Redis 的 Java 客户端之一,它基于单线程模型实现,使用阻塞 I/O,适用于单线程环境下的 Redis 操作。Lettuce 是另一个 Redis 客户端,它基于 Netty NIO 框架实现,使用非阻塞 I/O,适用于高并发的 Redis 操作。
相比于 Jedis,Lettuce 的性能更好,因为它使用了异步和非阻塞的方式处理 Redis 请求。此外,Lettuce 还提供了更多的功能,如 Redis Sentinel 和 Redis Cluster 的支持,可以更好地满足高可用和分布式环境下的 Redis 需求。
因此,如果你需要在 Spring Boot 应用中使用 Redis,并且需要处理高并发的 Redis 操作,建议选择使用 Lettuce。但如果你的应用只是对 Redis 进行简单的操作,使用 Jedis 也是可以的。
相关问题
springboot redis配置中的jedis
### Spring Boot 中使用 Jedis 进行 Redis 配置
#### 1. 添加依赖项
为了在项目中集成 Redis 和 Jedis,需修改 `pom.xml` 文件并加入必要的 Maven 依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- 如果需要特定版本的Jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
```
上述配置引入了 Spring Data Redis 支持以及 Jedis 客户端库[^1]。
#### 2. 修改 application.yml 或 properties 文件
接下来,在项目的资源配置文件里定义与 Redis 数据库交互所需参数。对于采用 YAML 格式的配置如下所示:
```yaml
spring:
redis:
host: localhost # Redis服务器地址
port: 6379 # Redis服务器端口,默认为6379
password: # 密码(如果设置了)
timeout: 5000 # 超时时间(ms),默认为2秒
lettuce:
pool:
max-active: 8 # 控制最大活动连接数
max-idle: 8 # 最大空闲连接数量
min-idle: 0 # 初始化最小创建的空闲连接数目
```
注意这里虽然指定了 Lettuce 的属性设置方式,但对于 Jedis 来说同样适用;只需替换对应的前缀即可[^2]。
#### 3. 创建自定义配置类 (可选)
当希望进一步定制化行为或实现更复杂的逻辑时,可以编写自己的 Java Config 类来覆盖默认的行为模式。下面是一个简单的例子展示如何通过编程的方式指定连接工厂和其他选项:
```java
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
@Configuration
public class RedisConfig {
@Bean
public JedisConnectionFactory jedisConnectionFactory() {
return new JedisConnectionFactory();
}
@Bean
public RedisTemplate<String, Object> redisTemplate(JedisConnectionFactory factory){
final RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(factory);
// 可以在这里继续配置序列化器等其他组件...
return template;
}
}
```
这段代码展示了怎样声明一个基于 Jedis 的连接工厂 bean 并将其注入到另一个用于执行命令操作的对象中去[^3]。
#### 4. 编写业务逻辑层接口和服务实现
最后一步就是利用前面准备好的工具完成实际的数据存取工作啦!
例如要向名为 "myList" 的列表添加元素,则可以在 Repository 接口中定义相应的方法签名:
```java
@Repository
public interface MyRepository extends CrudRepository<MyEntity, Long>, ReactiveRedisOperations<String, String> {}
@Service
@Transactional(readOnly=true)
public class MyServiceImpl implements MyService{
private static final Logger logger = LoggerFactory.getLogger(MyServiceImpl.class);
@Autowired
private MyRepository repository;
@Override
public void addToList(String value) throws Exception {
try {
ValueOperations<String, String> ops = this.repository.opsForValue();
ListOperations<String, String> listOps = this.repository.opsForList();
listOps.rightPush("myList",value);
} catch(Exception e){
throw new RuntimeException(e.getMessage(),e.getCause());
}
}
}
```
以上即是在 Spring Boot 应用程序内运用 Jedis 实现对 Redis 列表类型数据结构的操作方法之一。
阅读全文
相关推荐

















