1. 程式人生 > >微服務-使用Redis實現分布式緩存

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

minutes template 分布 expire temp str bject 圖片 mage

在單體中對於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; }

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