2.3.2 @CacheEvict注解
@CacheEvict:删除缓存的注解,这对删除旧的数据和无用的数据是非常有用的。这里还多了一个参数(allEntries),设置allEntries=true时,可以对整个条目进行批量删除
示例代码:
@Service
@CacheConfig(cacheNames = "role")
public class RoleServiceImpl implements IRoleService {
@Autowired
private RoleMapper roleMapper;
/**
* .@CacheEvict 缓存清除
* key:指定要清除的数据
*/
@CacheEvict(key = "#id")
@Override
public Integer delete(Integer id) {
return roleMapper.deleteByPrimaryKey(id);
}
}
查看redis
测试代码
/**
* 测试缓存淘汰
* 剔除缓存数据
*/
@Test
public void testDelete(){
Integer count = roleService.delete(4);
System.out.println(count);
}
运行完查看redis
查看控制台
JDBC Connection [HikariProxyConnection@898959467 wrapping com.mysql.cj.jdbc.ConnectionImpl@627d35ff] will not be managed by Spring
==> Preparing: delete from role where id = ?
==> Parameters: 4(Integer)
<== Updates: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6d6f6ca9]
1