Spring使用redis时的常见问题及解决方法-创新互联

这篇文章主要介绍“Spring使用redis时的常见问题及解决方法”,在日常操作中,相信很多人在Spring使用redis时的常见问题及解决方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Spring使用redis时的常见问题及解决方法”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

创新互联建站专注于企业网络营销推广、网站重做改版、綦江网站定制设计、自适应品牌网站建设、HTML5商城网站定制开发、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为綦江等各大城市提供网站开发制作服务。

本人在spring中使用redis作为缓存时,遇到两个坑,现在记录如下,算是作为自己的备忘吧,文笔不好,望大家见谅;

一、配置文件


  
    
      
        classpath*:config.properties
      
    
    
  

  
  
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
  

  
  
    
    
    
    
    
    
  

  
  
    
    
    
      
    
    
      
    
    
      
    
    
      
    
    
    
  

注:可以看到我redis的配置中,对于hash的key使用的是StringRedisSerializer序列化,而对于value使用的是GenericJackson2JsonRedisSerializer序列化。

二、坑一

// 源代码
HashOperations ho = redisTemplate.opsForHash();
Boolean flag = ho.hasKey(“key”, "key1");
if (flag) {
  // 处理逻辑
}

上面这段代码,当redis中值不存在时,按照官方的说明文档,应该返回false。但是我使用的时候,hasKey方法时而返回的是null,时而返回的false,导致空指针异常。搞了半天我也没搞明白为啥返回false,最后没办法我妥协了(大神如果知道可以回复我)。

// 妥协后代码
HashOperations ho = redisTemplate.opsForHash();
Boolean flag = ho.hasKey(“key”, "key1");
if (flag != null && flag) {
  // 处理逻辑
}

三、坑二

// 将Map放到redis的hash中
  public void putRedisHash2(){
    HashOperations ho = redisTemplate.opsForHash();
    Map tempMap = new HashMap(3){{
      put("isRegistered",false);
      put("isWeChat",false);
      put("isAliPay",false);
    }};
    ho.put("key", "key1", tempMap);
  }

  // 将Map放到redis的hash中
  public void putRedisHash3(){
    HashOperations ho = redisTemplate.opsForHash();
    Map tempMap = new HashMap(3);
    tempMap.put("isRegistered",false);
    tempMap.put("isWeChat",false);
    tempMap.put("isAliPay",false);
    ho.put("key", "key1", tempMap);
  }

这两个方法的功能是一样的,但是第一个方法是在Map初始化同时将值放入其中,第二个方法是Map初始化以后将值放入其中,执行结果是一样,但是在redis中的存储形式完全不同。由于Hash的value使用的是GenericJackson2JsonRedisSerializer序列化,所以为了反序列化方便,它会存储

@class“”这个字段,由于Map初始化时机不同,导致相同内容在redis中@class内容不一致,为了使用方便,推荐第二种,即在Map初始化以后将值放入其中。

Spring使用redis时的常见问题及解决方法

到此,关于“Spring使用redis时的常见问题及解决方法”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站建设公司网站,小编会继续努力为大家带来更多实用的文章!

另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站栏目:Spring使用redis时的常见问题及解决方法-创新互联
网页地址:http://pwwzsj.com/article/ccspgp.html