在实际的开发中,我们除了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>

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐