Redisson 与 Spring Redis 的区别与使用指南(简洁版)
同时使用
spring-boot-starter-data-redis和redisson-spring-boot-starter时,只需分别配置两个组件的连接信息,互不冲突、独立生效。
🔍 一、概念区别(总结)
| 项目 | Spring Redis | Redisson |
|---|---|---|
| 依赖 | spring-boot-starter-data-redis | redisson-spring-boot-starter |
| 操作方式 | RedisTemplate | RedissonClient |
| 功能定位 | 缓存、数据结构读写 | 分布式锁、限流、同步工具等 |
| 是否可共存 | ✅ 可共存 | ✅ 可共存 |
| 配置方式 | spring.redis | spring.redisson.config |
| 推荐配置方式 | 手动定义 RedisTemplate | 手动定义 RedissonClient 或显式 config |
✅ 二、最佳实践配置方式
1️⃣ Spring Redis 配置(适配 RedisTemplate)
用于缓存、基础数据操作。
application.yml
spring:
redis:
host: 10.2.10.11
port: 6379
RedisConfig.java
@Configuration
public class RedisConfig {
@Value("${spring.redis.host}")
private String host;
@Value("${spring.redis.port}")
private int port;
@Bean
public RedisConnectionFactory redisConnectionFactory() {
RedisStandaloneConfiguration config = new RedisStandaloneConfiguration(host, port);
return new LettuceConnectionFactory(config);
}
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(factory);
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
return template;
}
}
2️⃣ Redisson 配置(适配 RedissonClient)
用于分布式锁、限流器、分布式集合等高级功能。
推荐写法:手动注册 RedissonClient
RedissonConfig.java
@Configuration
public class RedissonConfig {
@Bean(destroyMethod = "shutdown")
public RedissonClient redissonClient() {
Config config = new Config();
config.useSingleServer().setAddress("redis://10.2.10.11:6379");
return Redisson.create(config);
}
}
🧠 三、核心结论
- ✅ RedisTemplate 与 RedissonClient 可共存,互不干扰。
- ✅ 建议分别手动配置连接工厂,避免自动装配产生歧义。
- ✅
spring.redis只作用于RedisTemplate;redisson.config是 Redisson 专用配置。 - ❌ 不建议仅依赖自动装配,容易导致 Redisson 错误连接到
localhost。
✅ 四、实际使用总结
| 场景 | 建议 |
|---|---|
| 只用缓存 | 配置 spring.redis 即可 |
| 只用分布式锁/限流等 | 配置 Redisson,手动创建 client |
| Redis 和 Redisson 都用 | 同时配置两套连接,互不冲突 |