SpringBoot整合Redisson(Redisson的配置)
SpringBoot整合Redisson
·
1. 什么是Redisson
Redisson - 是一个高级的分布式协调Redis客服端,能帮助用户在分布式环境中轻松实现一些Java的对象,Redisson、Jedis、Lettuce 是三个不同的操作 Redis 的客户端,Jedis、Lettuce 的 API 更侧重对 Reids 数据库的 CRUD(增删改查),而 Redisson API 侧重于分布式开发。
2. 引入依赖
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
</dependency>
3. Redisson的config
import org.apache.commons.lang3.StringUtils;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.codec.JsonJacksonCodec;
import org.redisson.config.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
@Configuration
@ConditionalOnMissingBean(RedissonClient.class)
@Import(RedissonClientConfig.RedissonConfig.class)
public class RedissonClientConfig {
private final Config config;
RedissonClientConfig(Config config) {
this.config = config;
}
@Bean
public RedissonClient redissonClient() {
return Redisson.create(config);
}
@ConditionalOnMissingBean(Config.class)
@EnableConfigurationProperties({RedisProperties.class})
static class RedissonConfig {
@Autowired
private RedisProperties redisProperties;
@Bean
public Config redissonConfig() {
Config config = new Config();
//哨兵模式
if (redisProperties.getSentinel() != null) { //sentinel
SentinelServersConfig sentinelServersConfig = config.useSentinelServers();
RedisProperties.Sentinel sentinel = redisProperties.getSentinel();
sentinelServersConfig.setMasterName(sentinel.getMaster());
sentinelServersConfig.addSentinelAddress(sentinel.getNodes().toArray(new String[sentinel.getNodes().size()]));
sentinelServersConfig.setDatabase(redisProperties.getDatabase());
baseConfig(sentinelServersConfig, redisProperties);
//集群模式
} else if (redisProperties.getCluster() != null) { //cluster
ClusterServersConfig clusterServersConfig = config.useClusterServers();
RedisProperties.Cluster cluster = redisProperties.getCluster();
clusterServersConfig.addNodeAddress(cluster.getNodes().toArray(new String[cluster.getNodes().size()]));
clusterServersConfig.setFailedSlaveReconnectionInterval(cluster.getMaxRedirects());
baseConfig(clusterServersConfig, redisProperties);
//普通模式
} else { //single server
SingleServerConfig singleServerConfig = config.useSingleServer();
// format as redis://127.0.0.1:7181 or rediss://127.0.0.1:7181 for SSL
String schema = redisProperties.isSsl() ? "rediss://" : "redis://";
singleServerConfig.setAddress(schema + redisProperties.getHost() + ":" + redisProperties.getPort());
singleServerConfig.setDatabase(redisProperties.getDatabase());
baseConfig(singleServerConfig, redisProperties);
}
config.setCodec(new JsonJacksonCodec());
return config;
}
private void baseConfig(BaseConfig config, RedisProperties properties) {
if (!StringUtils.isBlank(properties.getPassword())) {
config.setPassword(properties.getPassword());
}
if (properties.getTimeout() != null) {
config.setTimeout(Long.valueOf(properties.getTimeout().getSeconds() * 1000).intValue());
}
if (!StringUtils.isBlank(properties.getClientName())) {
config.setClientName(properties.getClientName());
}
}
}
}
4. yml文件中对redis配置
spring:
redis:
host: localhost #地址
port: 6379 #端口号
password: 'password' #连接密码(默认空)
database: 2
5. 最后
- 如果文章中编写不正确或不恰当的地方希望大家指正。
更多推荐
已为社区贡献2条内容
所有评论(0)