本地缓存与分布式失效是一个常见的问题,可以通过以下几种方式来解决:
示例代码:
@Service
public class UserService {
@Cacheable(value = "userCache", key = "#userId")
public User getUserById(int userId) {
// 从数据库中获取用户信息
return userRepository.findById(userId);
}
@CacheEvict(value = "userCache", key = "#userId")
public void deleteUserById(int userId) {
// 删除用户信息
userRepository.deleteById(userId);
}
}
示例代码:
@Service
public class UserService {
@Autowired
private RedisTemplate redisTemplate;
public User getUserById(int userId) {
String key = "user:" + userId;
// 从缓存中获取用户信息
User user = redisTemplate.opsForValue().get(key);
if (user == null) {
// 从数据库中获取用户信息
user = userRepository.findById(userId);
// 将用户信息存入缓存
redisTemplate.opsForValue().set(key, user);
}
return user;
}
public void deleteUserById(int userId) {
String key = "user:" + userId;
// 从缓存中删除用户信息
redisTemplate.delete(key);
// 删除数据库中的用户信息
userRepository.deleteById(userId);
}
}
以上是一些常见的解决方法,可以根据具体的需求选择合适的方法来解决本地缓存与分布式失效的问题。
上一篇:本地缓存数据库一致性
下一篇:本地缓存与缓存目录中的缓存