首页 > 数据库 >Springboot中通过模糊匹配Redis中的key来删除对应的数据

Springboot中通过模糊匹配Redis中的key来删除对应的数据

时间:2023-01-02 12:23:51浏览次数:52  
标签:Springboot redis Redis springframework key import 序列化 redisTemplate

Springboot中通过模糊匹配Redis中的key来删除对应的数据

在指定情况中,redis中存储的key值为指定前缀+可变的id组成,所以需要批量删除改前缀存储的所有数据,那么由于key的不确定性,就需要用到模糊匹配的方式来进行批量删除

1.准备reids序列化配置类

import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

/**
 * @author hzc8893 2022/12/12 18:00
 */
@Configuration
public class RedisConfig {
    /**
     * springboot 默认帮我们创建的RedisTemplate的key和value的序列化方式是jdk默认的方式,
     * 我们有时候手动向redis中添加的数据可能无法被查询解析出来,所以我们需要修改序列化方式
     * @param connectionFactory
     * @return
     */
    @Bean
    public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory connectionFactory) {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(connectionFactory);
        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
        redisTemplate.setKeySerializer(stringRedisSerializer); //设置key的序列化方式
        redisTemplate.setHashKeySerializer(stringRedisSerializer);//设置hash类型的数据的key的序列化方式

        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);//非final类型的数据才会被序列化
        jackson2JsonRedisSerializer.setObjectMapper(objectMapper);

        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);//设置value的序列化方式为json
        redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);

        return redisTemplate;
    }
}

2.reids模糊匹配并批量删除

//生成模糊匹配的对应的set集合,字符串后面追加的*号做模糊匹配使用
Set<String> keys = redisTemplate.keys("指定前缀" + "*");
redisTemplate.delete(keys);

标签:Springboot,redis,Redis,springframework,key,import,序列化,redisTemplate
From: https://www.cnblogs.com/hzxc/p/17019706.html

相关文章