Spring-Boot 中 Redis 的简单使用以及简单模糊匹配删除

在 Spring-Boot 中使用 Redis 基本上只需要简单几步操作即可

集成 Redis

实际上只需要添加 Redis 依赖以及增加 Redis 连接设置即可

  1. 配置 pom.xml 文件
    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-redis</artifactId>
       <version>1.4.7.RELEASE</version>
    </dependency>
    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-data-redis</artifactId>
       <version>1.4.7.RELEASE</version>
    </dependency>
    

  2. 配置 application.yml 文件

    spring:
       redis:
         database: 0
         host: 127.0.0.1
         port: 6379
         password: 123456
    

至此就可以开始使用 Redis 了,是不是简单的有点惊讶

简单字符串存取 StringRedisTemplate

public class RedisTest {
    @Resource
    private StringRedisTemplate stringRedisTemplate;
    public void test() {
        stringRedisTemplate.opsForValue().set("Hello", "World");
        String value = stringRedisTemplate.opsForValue().get("Hello");
        System.out.println(value);
    }
}

存储 String-Object 形式对象结构,并序列化为 JSON 格式

我们不仅仅需要存储 String-String 形式的对象结构,有时候我们也需要存储一个对象,这里就需要使用 redisTemplate ,而其使用的是 JDK 的序列化,存储的是二进制字节码,不方便直接在 Redis 中查看,我们可以使用 JACKSON 来代替存储序列化。

@Configuration
public class RedisConfiguration {
    /**
     * redisTemplate 序列化使用的jdk Serializeable, 存储二进制字节码, 所以自定义序列化类
     */
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        // 使用Jackson2JsonRedisSerialize 替换默认序列化
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
        // 设置value的序列化规则和 key的序列化规则
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
        redisTemplate.afterPropertiesSet();
        return redisTemplate;
    }
}
public class RedisTest {
    @Resource
    private RedisTemplate<String, Object> redisTemplate;
    public void testObject() {
        RedisVo redisVo = new RedisVo();
        redisVo.setId(1);
        redisVo.setValue("test");
        redisTemplate.opsForValue().set("Hello", redisVo);
        RedisVo value = (RedisVo) redisTemplate.opsForValue().get("Hello");
        System.out.println(value);
    }
}
class RedisVo {
    private int id;
    private String value;
    //省略getter setter
}

这样存储后就可以在 Redis Desktop Managerredisclient 等 Redis 桌面管理工具中直观的查看存储的内容了

模糊删除 key 以固定前缀开头的所有数据

Set<String> keys = redisTemplate.keys("REDIS_HEADER" + "*");
redisTemplate.delete(keys);

参考链接

Spring-boot通过redisTemplate使用redis(无须手动序列化)

Spring Boot 集成Redis (1)

发表评论

发表回复

*

沙发空缺中,还不快抢~