多语言展示
当前在线:159今日阅读:113今日分享:31

SpringBoot集成redis集群的使用

springboot里面经常使用的就是redis了,很方便,这里就分享springboot集成redis并使用
工具/原料
1

redis

2

springboot

方法/步骤
1

第一步:在springboot项目里面引入redis的依赖,可以在创建的时候勾选redis,maven如下:     org.springframework.boot     spring-boot-starter-data-redis-reactive 勾选如图:

2

第二步:写一个redis配置类文件,词配置类主要是定义存储数据序列化的格式,代码如下:@Bean public RedisTemplate redisTemplate(RedisConnectionFactory factory) {      RedisTemplate 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; }

3

第三步:获取redisTemplate的返回的数据类型,代码如下:/**  * 对hash类型的数据操作  *  * @param redisTemplate  * @return  */ @Bean public HashOperations hashOperations(RedisTemplate redisTemplate) {     return redisTemplate.opsForHash(); } /**  * 对redis字符串类型数据操作  *  * @param redisTemplate  * @return  */ @Bean public ValueOperations valueOperations(RedisTemplate redisTemplate) {     return redisTemplate.opsForValue(); }  /**  * 对链表类型的数据操作  *  * @param redisTemplate  * @return  */ @Bean public ListOperations listOperations(RedisTemplate redisTemplate) {     return redisTemplate.opsForList(); }  /**  * 对无序集合类型的数据操作  *  * @param redisTemplate  * @return  */ @Bean public SetOperations setOperations(RedisTemplate redisTemplate) {     return redisTemplate.opsForSet(); }  /**  * 对有序集合类型的数据操作  *  * @param redisTemplate  * @return  */ @Bean public ZSetOperations zSetOperations(RedisTemplate redisTemplate) {     return redisTemplate.opsForZSet(); }

4

第四步:编写一个redis工具类,方便对数据的操作,代码如下:@Autowired private RedisTemplate redisTemplate;   public RedisUtil(RedisTemplate 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;     } }

5

第五步:redis的操作,比如set一个数据,删除一个数据,代码如下:redisUtil.set('xx', 'oo'); redisUtil.del('xx');

6

第五步:设置一个有过期时间的数据,和判断Key是否存在,代码如下:// 设置数据过期时间 redisUtil.set('aaa', 'xxx', 10000);  // 判断key是否存在 redisUtil.hasKey('aaa');

7

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

注意事项
1

redis开启状态

2

springboot没有配置redis默认就是127.0.0.1

推荐信息