在单体中对于key信息和用户信息是放在内存中放的,通过session进行管理。
微服务是要放在分布式缓存中,以实现服务的无状态化。
@Autowired privateStringRedisTemplate redisTemplate; @Value("${file.prefix}") privateString imgPrefix; /** * 1.首先通过缓存获取 * 2.不存在将从通过数据库获取用户对象 * 3.将用户对象写入缓存,设置缓存时间5分钟 * 4.返回对象 * @param id * @return */ publicUser 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); } returnuser; }