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