微服務-使用Redis實現分布式緩存


在單體中對於key信息和用戶信息是放在內存中放的,通過session進行管理。

微服務是要放在分布式緩存中,以實現服務的無狀態化

  @Autowired
  private StringRedisTemplate redisTemplate;

  @Value("${file.prefix}")
  private String imgPrefix;
  
  /**
   * 1.首先通過緩存獲取
   * 2.不存在將從通過數據庫獲取用戶對象
   * 3.將用戶對象寫入緩存,設置緩存時間5分鍾
   * 4.返回對象
   * @param id
   * @return
   */
  public User getUserById(Long id) {
    String key = "user:"+id;
    String json =  redisTemplate.opsForValue().get(key);
    User user = null;
    //如果為空則從數據庫中查找
    if (Strings.isNullOrEmpty(json)) {
      user =  userMapper.selectById(id);
      user.setAvatar(imgPrefix + user.getAvatar());
      //反序列化成json存入緩存
      String string  = JSON.toJSONString(user);
      redisTemplate.opsForValue().set(key, string);
      redisTemplate.expire(key, 5, TimeUnit.MINUTES);
    }else {
    //不為空則將緩存中的json對象反序列化成user對象
      user = JSON.parseObject(json,User.class);
    }
    return user;
  }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM