SpringBoot配置多个redis教程
springboot增加自定义redis配置,支持多个redisson,可以自己配置多台redis,单节点和集群都可以。sprinboot配置多个redis,springboot配置多台redisson。
·
在实际的开发中,我们除了springboot默认的配置一个redis之外,有时候需要再配置其余的redis,单节点或者集群。下面给出教程
1、pom依赖
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>3.11.4</version>
</dependency>
2、properties文件配置
// 这是springboot默认的配置,这里的key不允许修改
redisson.singleServerConfig.address=192.168.1.110:6379
redisson.singleServerConfig.database=6
redisson.password=123456
redisson.model=SINGLE
// 下面的是自定义的key,随便修改,配置第2个reids,单节点
my2.redisson.isCluster=NO
my2.redisson.address=192.168.1.111:6380
my2.redisson.password=123456
// 下面的是自定义的key,随便修改,配置第3个reids,集群
my3.redisson.isCluster=YES
my3.redisson.address=192.168.1.112:7000,192.168.1.112:7001,192.168.1.112:7000,192.168.1.113:7001,192.168.1.113:7000,192.168.1.113:7001
my3.redisson.password=123456
3、Redisson配置文件
// 如果使用springboot默认的配置,是不需要这个配置文件的。
package my.configuration;
import io.swagger.models.auth.In;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.redisson.config.ReadMode;
import org.redisson.config.SubscriptionMode;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;
@Configuration
public class MyRedissonConfig {
// 这里根据自己项目情况,可以通过注解@Value直接获取到文件
public static ResourceBundle appDefault = ResourceBundle.getBundle("application");
// 这里只封装了m2单节点,m3集群需要自己再写一个方法或在这里方法里面加判断就行。
public static RedissonClient getMy2RedissonClient(){
Config config = new Config();
if("YES".equalsIgnoreCase(appDefault.getString("my2.redisson.isCluster"))){
String nodes = appDefault.getString("my2.redisson.address");
List<String> clusterNodes = new ArrayList<>();
for (int i = 0; i < nodes.split(",").length; i++) {
clusterNodes.add("redis://" + nodes.split(",")[i]);
}
config.useClusterServers()
.addNodeAddress(clusterNodes.toArray(new String[clusterNodes.size()]))
.setPingConnectionInterval(1000)
.setReadMode(ReadMode.MASTER)
.setSubscriptionMode(SubscriptionMode.MASTER)
.setPassword(appDefault.getString("my2.redisson.password"));
}else{
config.useSingleServer()
.setAddress("redis://"+appDefault.getString("my2.redisson.address"))
.setConnectionMinimumIdleSize(10)
.setPingConnectionInterval(1000)
.setPassword(appDefault.getString("my2.redisson.password"));
}
RedissonClient redisson = Redisson.create(config);
return redisson;
}
}
4、使用方法
@RequestMapping(value = "/testSetRedis", method = RequestMethod.GET)
@ResponseBody
public String testSetRedis(String key,String value) {
String code = "success";
try{
RBucket<String> redisApp = MyRedissonConfig.getMy2RedissonClient().getBucket(key);
if(StringUtils.isEmpty(value)){
redisApp.delete();
log.info("/testSetRedis delete key={},value={}",key,redisApp.get());
}else{
redisApp.set(value);
log.info("/testSetRedis set key={},value={}",key,redisApp.get());
}
}catch (Exception e){
e.printStackTrace();
code = "failure";
}
return code;
}
5、注意在ECS服务器开通redis访问的端口,和外网IP,保证自己所在的机器可以连接上。
6、redisson扩展
// 感兴趣的可以了解下这个redisson的封装,自带MQ功能,使用配置都很方便。
// 博文地址=https://gitee.com/ztp/redisson-spring-boot-starter
<dependency>
<groupId>com.zengtengpeng</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>1.0.8</version>
</dependency>
更多推荐
已为社区贡献1条内容
所有评论(0)