在单体中对于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, , TimeUnit.MINUTES);
}else {
//不为空则将缓存中的json对象反序列化成user对象
user = JSON.parseObject(json,User.class);
}
return user;
}

最新文章

  1. Windows on Device 项目实践 2 - 感光灯制作
  2. ZeroMQ接口函数之 :zmq_init - 初始化ZMQ环境上下文
  3. [原创]Visual Studio 使用 Just My Code引起无法断点
  4. python之haproxy配置文件操作(第三天)
  5. php中的curl使用入门教程和常见用法实例
  6. ACM/ICPC 之 快排+归并排序-记录顺序对(TSH OJ-LightHouse(灯塔))
  7. 在cmd下编译一个简单的servlet时出现程序包javax.servlet不存在
  8. Mybatis typeAliases别名
  9. Android 内存分析工具 MAT(Memory Analyzer Tool)
  10. NSURLConnect 的简单实用(iOS8淘汰)
  11. Unicode字符集,各个语言的区间
  12. 5.1 TLP的格式
  13. cesium-navigation 使用(非require,es6引用)
  14. 让WinSCP和Putty一直保持连接
  15. 7.Odoo产品分析 (二) – 商业板块(3) –CRM(1)
  16. 接口转换 数据库列表的内容 显示在datagrid
  17. GetCheckProxy
  18. C#中使用log4net框架做日志输出
  19. BOS物流项目第十一天
  20. 微信小程序 - 步骤条组件

热门文章

  1. 自定义View中的Path
  2. .net Session延长过期时间
  3. 让asp.net程序在修改web.config后不重启
  4. 170309、MySQL存储引擎MyISAM与InnoDB区别总结整理
  5. R中实现脚本调用,以及函数调用
  6. Vim 字符集问题
  7. web容器与web服务器
  8. Storm-源码分析-EventManager (backtype.storm.event)
  9. 3.2 - FTP文件上传下载
  10. 网络编程 - socket通信/粘包/文件传输/udp - 总结