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;
    }
}
最后修改:2022 年 04 月 05 日 09 : 29 AM
如果觉得我的文章对你有用,请随意赞赏