SpringBoot集成redis集群的使用

2025-10-10 00:30:58

1、第一步:在springboot项目里面引入redis的依赖,可以在创建的时候勾选redis,maven如下:

<dependency>


   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-redis-reactive</artifactId>
</dependency>

勾选如图:

SpringBoot集成redis集群的使用

2、第二步:写一个redis配置类文件,词配置类主要是定义存储数据序列化的格式,代码如下:

@Bean


public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {


   RedisTemplate<String, Object> template = new RedisTemplate<>();
   // 配置连接工厂
   template.setConnectionFactory(factory);


   //使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值(默认使用JDK的序列化方式)
   Jackson2JsonRedisSerializer jacksonSeial = new Jackson2JsonRedisSerializer(Object.class);


   ObjectMapper om = new ObjectMapper();
   // 指定要序列化的域,field,get和set,以及修饰符范围,ANY是都有包括private和public
   om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
   // 指定序列化输入的类型,类必须是非final修饰的,final修饰的类,比如String,Integer等会跑出异常
   om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
   jacksonSeial.setObjectMapper(om);


   // 值采用json序列化
   template.setValueSerializer(jacksonSeial);
   //使用StringRedisSerializer来序列化和反序列化redis的key值
   template.setKeySerializer(new StringRedisSerializer());


   // 设置hash key 和value序列化模式
   template.setHashKeySerializer(new StringRedisSerializer());
   template.setHashValueSerializer(jacksonSeial);
   template.afterPropertiesSet();


   return template;
}

SpringBoot集成redis集群的使用

3、第三步:获取redisTemplate的返回的数据类型,代码如下:

/**


* 对hash类型的数据操作
*
* @param redisTemplate
* @return
*/
@Bean
public HashOperations<String, String, Object> hashOperations(RedisTemplate<String, Object> redisTemplate) {
   return redisTemplate.opsForHash();
}
/**
* 对redis字符串类型数据操作
*
* @param redisTemplate
* @return
*/
@Bean
public ValueOperations<String, Object> valueOperations(RedisTemplate<String, Object> redisTemplate) {
   return redisTemplate.opsForValue();
}


/**
* 对链表类型的数据操作
*
* @param redisTemplate
* @return
*/
@Bean
public ListOperations<String, Object> listOperations(RedisTemplate<String, Object> redisTemplate) {
   return redisTemplate.opsForList();
}


/**
* 对无序集合类型的数据操作
*
* @param redisTemplate
* @return
*/
@Bean
public SetOperations<String, Object> setOperations(RedisTemplate<String, Object> redisTemplate) {
   return redisTemplate.opsForSet();
}


/**
* 对有序集合类型的数据操作
*
* @param redisTemplate
* @return
*/
@Bean
public ZSetOperations<String, Object> zSetOperations(RedisTemplate<String, Object> redisTemplate) {
   return redisTemplate.opsForZSet();
}

SpringBoot集成redis集群的使用

SpringBoot集成redis集群的使用

SpringBoot集成redis集群的使用

4、第四步:编写一个redis工具类,方便对数据的操作,代码如下:

@Autowired


private RedisTemplate<String, Object> redisTemplate;



public RedisUtil(RedisTemplate<String, Object> redisTemplate) {
   this.redisTemplate = redisTemplate;
}


/**
* 指定缓存失效时间
* @param key 键
* @param time 时间(秒)
* @return
*/
public boolean expire(String key,long time){
   try {
       if(time>0){
           redisTemplate.expire(key, time, TimeUnit.SECONDS);
       }
       return true;
   } catch (Exception e) {
       e.printStackTrace();
       return false;
   }
}


/**
* 根据key 获取过期时间
* @param key 键 不能为null
* @return 时间(秒) 返回0代表为永久有效
*/
public long getExpire(String key){
   return redisTemplate.getExpire(key,TimeUnit.SECONDS);
}


/**
* 判断key是否存在
* @param key 键
* @return true 存在 false不存在
*/
public boolean hasKey(String key){
   try {
       return redisTemplate.hasKey(key);
   } catch (Exception e) {
       e.printStackTrace();
       return false;
   }
}


/**
* 删除缓存
* @param key 可以传一个值 或多个
*/
@SuppressWarnings("unchecked")
public void del(String ... key){
   if(key!=null&&key.length>0){
       if(key.length==1){
           redisTemplate.delete(key[0]);
       }else{
           redisTemplate.delete(CollectionUtils.arrayToList(key));
       }
   }
}

/**


* 普通缓存放入
* @param key 键
* @param value 值
* @return true成功 false失败
*/
public boolean set(String key,Object value) {
   try {
       redisTemplate.opsForValue().set(key, value);
       return true;
   } catch (Exception e) {
       e.printStackTrace();
       return false;
   }
}


/**
* 普通缓存放入并设置时间
* @param key 键
* @param value 值
* @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期
* @return true成功 false 失败
*/
public boolean set(String key,Object value,long time){
   try {
       if(time>0){
           redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
       }else{
           set(key, value);
       }
       return true;
   } catch (Exception e) {
       e.printStackTrace();
       return false;
   }
}

SpringBoot集成redis集群的使用

5、第五步:redis的操作,比如set一个数据,删除一个数据,代码如下:

redisUtil.set("xx", "oo");


redisUtil.del("xx");

SpringBoot集成redis集群的使用

6、第五步:设置一个有过期时间的数据,和判断Key是否存在,代码如下:

// 设置数据过期时间


redisUtil.set("aaa", "xxx", 10000);


// 判断key是否存在
redisUtil.hasKey("aaa");

SpringBoot集成redis集群的使用

7、第七步:redis的方法很多,功能也很多,可以参考官方给出的文档

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢