查询数据时:先查看redis 缓存中有没有数据,如果有从redis中取。如果没有查询数据库并设置到redis中。
更新数据时:先更新数据库,再删除redis中数据。
//使用redis 缓存
//1.优先从缓冲中取值
public User getCache(int userId){
String redisKey = RedisKeyUtils.getUserKey(userId);
User user = (User) redisTemplate.opsForValue().get(redisKey);
return user;
}
//2.取不到时初始化缓存数据
public User initCache(int userId){
String redisKey = RedisKeyUtils.getUserKey(userId);
User user = userMapper.selectById(userId);
redisTemplate.opsForValue().set(redisKey, user,3600, TimeUnit.SECONDS);
return user;
}
//3.数据变更时删除缓存数据
public void clearCache(int userId){
String redisKey = RedisKeyUtils.getUserKey(userId);
redisTemplate.delete(redisKey);
}
public User findUserById(int id){
// User user = userMapper.selectById(id);
User user = getCache(id);
if(user == null){
user = initCache(id);
}
return user;
}