springboot建议使用redisson吗
时间: 2023-02-12 22:23:15 浏览: 157
Spring Boot 建议使用 Redisson 吗?
根据 Spring Boot 的文档,它不提供对特定的缓存框架的推荐。因此,使用 Redisson 作为 Spring Boot 项目中的缓存框架是可行的。不过需要注意的是,在使用 Redisson 或其它缓存框架之前,应该考虑项目的特定需求,并选择最合适的缓存框架。
相关问题
springboot如何配置redisson,并整合spring-context注解
### Spring Boot 中配置 Redisson 并整合 spring-context 注解
#### 一、引入 Redisson 依赖
为了在 Spring Boot 应用程序中使用 Redisson,首先需要在项目的 `pom.xml` 文件中添加 Redisson 的 Maven 依赖。
```xml
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>3.17.0</version>
</dependency>
```
此依赖会自动完成 Redisson 与 Spring Boot 的集成工作[^1]。
---
#### 二、Redisson 配置文件设置
通过创建 `application.yml` 或者 `application.properties` 来定义 Redisson 的连接参数。以下是基于 YAML 格式的配置示例:
```yaml
spring:
redisson:
config: classpath:redisson.yaml
```
其中,`classpath:redisson.yaml` 是指定了 Redisson 的具体配置文件路径。下面是一个典型的 `redisson.yaml` 文件内容:
```yaml
singleServerConfig:
address: "redis://127.0.0.1:6379"
database: 0
password: null
clientName: null
subscriptionConnectionMinimumIdleSize: 1
subscriptionConnectionPoolSize: 50
connectionMinimumIdleSize: 10
connectionPoolSize: 64
idleConnectionTimeout: 10000
connectTimeout: 10000
timeout: 3000
retryAttempts: 3
retryInterval: 1500
threads: 0
nettyThreads: 0
codec: !<org.redisson.codec.JsonJacksonCodec> {}
transportMode: "NIO"
```
上述配置涵盖了单机模式下的 Redis 连接细节,并支持 JSON 编码/解码功能。
---
#### 三、整合 spring-context 注解
为了让 Redisson 能够无缝地与其他 Spring 组件协作,可以利用 `@Bean` 定义 Redisson 实例并将其注入到容器中。如果已经启用了 `redisson-spring-boot-starter`,则无需额外操作,因为该 Starter 已经完成了自动化装配过程。
但是,在某些场景下可能需要自定义 Bean,则可以通过如下方式进行扩展:
```java
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RedissonConfiguration {
@Bean(destroyMethod = "shutdown")
public RedissonClient redissonClient() {
Config config = new Config();
config.useSingleServer()
.setAddress("redis://127.0.0.1:6379");
return Redisson.create(config);
}
}
```
在此代码片段中,我们显式声明了一个名为 `redissonClient` 的 Bean,并设置了其销毁方法为 `shutdown`,从而确保应用关闭时资源能够被正确释放。
---
#### 四、延迟队列实现案例
借助 Redisson 提供的分布式锁机制和 RDelayedQueue 接口,可轻松构建高可用性的延迟队列解决方案。以下是一段简单的演示代码:
```java
import org.redisson.api.RBucket;
import org.redisson.api.RDelayedQueue;
import org.redisson.api.RQueue;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class DelayedQueueService {
private final RedissonClient redissonClient;
@Autowired
public DelayedQueueService(RedissonClient redissonClient) {
this.redissonClient = redissonClient;
}
public void addTaskWithDelay(String task, long delayMillis) {
RQueue<String> queue = redissonClient.getQueue("myQueue");
RDelayedQueue<String> delayedQueue = redissonClient.getDelayedQueue(queue);
delayedQueue.offer(task, delayMillis, java.util.concurrent.TimeUnit.MILLISECONDS);
}
public String consumeTask() {
RQueue<String> queue = redissonClient.getQueue("myQueue");
if (queue.isEmpty()) {
return "No tasks available";
} else {
return queue.poll(); // 取出任务
}
}
}
```
以上服务类展示了如何向延迟队列添加新任务以及消费到期的任务。
---
#### 五、注意事项
- 如果项目中有多个数据源管理需求(例如同时集成了 Druid 数据库连接池),需注意避免命名冲突问题。
- 使用 `druid-spring-boot-starter` 代替传统方式能简化开发流程,因为它内置了许多默认优化选项[^2]。
- 对于生产环境部署而言,建议启用 Sentinel 或 Cluster 模式替代 Single Server Mode,以增强系统的可靠性和性能表现。
---
springboot2.1.5 和redisson-spring-boot-starter 那个版本
redisson-spring-boot-starter 的版本应该要与 Spring Boot 的版本兼容。根据 Redisson 的官方文档,redisson-spring-boot-starter 3.14.1 版本支持 Spring Boot 2.1.x 版本。因此,如果你使用的是 Spring Boot 2.1.5 版本,建议使用 redisson-spring-boot-starter 3.14.1 版本。
阅读全文
相关推荐














