1、根据指定Key的前缀 + “*” ,查询出所有匹配到的key
2、调用RedisTemplate的delete方法,把当前获取到的指定前缀key的集合传进去
redisUtil.allDel(keys);
/**
* 全量删除缓存
* @param key 可以传一个值 或多个
*/
public void allDel(String key) {
Set<String> keys = redisTemplate.keys(key + "*");
redisTemplate.delete(keys);
}
当遇到redisTemplate.keys()无返回值的情况,可能是key值序列化失败的问题,加上这个配置后可解决
@Configuration
public class RedisTemplateConfig {
/**
* 解决模糊查询失效的问题
* @param redisConnectionFactory
* @return
*/
@Bean(name = "redisTemplate")
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<Object, Object> template = new RedisTemplate<>();
// key的序列化采用StringRedisSerializer
template.setKeySerializer(new StringRedisSerializer());
template.setHashKeySerializer(new StringRedisSerializer());
template.setConnectionFactory(redisConnectionFactory);
return template;
}
}