在单体中对于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; }