大数据、Java EE 学习资料请关注 B 站:https://space.bilibili.com/204792350

SpringBoot 2.x 整合 Redis 组件,作为缓存组件存在(粗糙版)

简介

实践

安装 Redis

使用 Docker 安装 Redis,只需要几行命令即可:

docker pull redis
docker run -d --name myredis -p 6379:6379 -v /usr/local/etc/redis/redis.conf:/usr/local/etc/redis/redis.conf docker.io/redis redis-server /usr/local/etc/redis/redis.conf

使用 -v 将本地的目录与 Redis 容器的目录进行映射,然后在本地的目录就可以对 Redis 进行配置;

引入依赖及配置

导入依赖:spring-boot-starter-data-redis

然后,在配置文件中配置 Redis 相关配置,默认的话,只需要配置主机即可;

这样就可以直接使用了,在 Redis 自动配置中,提供了两个模板类,通过这两个模板类就可以操作 Redis;

@Bean
@ConditionalOnMissingBean(name = "redisTemplate")
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory)
    throws UnknownHostException {
    RedisTemplate<Object, Object> template = new RedisTemplate<>();
    template.setConnectionFactory(redisConnectionFactory);
    return template;
}

@Bean
@ConditionalOnMissingBean
public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory)
    throws UnknownHostException {
    StringRedisTemplate template = new StringRedisTemplate();
    template.setConnectionFactory(redisConnectionFactory);
    return template;
}

从上面的代码就可以直接看错来有什么区别,更何况时名称;

  • RedisTemplate
    • key-value:都是 Object 类型
  • StringRedisTemplate
    • 针对 String 类型的模板类;

默认的序列化器是不会将对象转为 JSON 的,而是 16 位编码;

自定义配置:

@Bean
public RedisTemplate<Object, Object> redisTemplate1(RedisConnectionFactory redisConnectionFactory)
    throws UnknownHostException {
    RedisTemplate<Object, Object> template = new RedisTemplate<>();
    template.setConnectionFactory(redisConnectionFactory);
    Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<>(Object.class);
    template.setDefaultSerializer(serializer);
    return template;
}

默认的是 JdkSerializationRedisSerializer 序列化器,通过 setDefaultSerializer 可以设置默认的序列化器,记得最好还是使用 Object 类型,否则限制了单一类型才能使用这个模板转为 JSON;

# Java   Redis   SpringBoot  

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×