使用redis进行缓存用户相关信息
使用redis进行查询之后缓存的流程:
- 优先从缓存中取值
- 取不到时去数据库查询,并初始化缓存数据
- 数据变更时清除缓存数据
主体代码实现
//根据id查找用户
@Override
public User selectById(int id) {
// User user = userDao.selectById(id);
// return user;
//先去缓存中去user数据,如果没有的话就去数据库中找,并在缓存中初始化一个数据。
User user = getCache(id);
if (user == null){
user = initCache(id);
}
return user;
}
//1.优先从缓存中取值
private User getCache(int userId){
String redisKey = RedisKeyUtil.getUserKey(userId);
return (User) redisTemplate.opsForValue().get(redisKey);
}
//2.取不到时初始化缓存数据
private User initCache(int userId){
User user = userDao.selectById(userId);
String redisKey = RedisKeyUtil.getUserKey(userId);
redisTemplate.opsForValue().set(redisKey,user,3600, TimeUnit.SECONDS);
return user;
}
//3.数据变更时清除缓存数据
private void clearCache(int userId){
String redisKey = RedisKeyUtil.getUserKey(userId);
redisTemplate.delete(redisKey);
}