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