从零学spring boot-集成redis

添加依赖

<!-- spring boot2.0后,默认使用的redisConnectionFactory为LettuceConnectionFactory,这里想要继续用jedis,就做个exclusion -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
    <exclusions>
        <exclusion>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
        </exclusion>
        <exclusion>
            <groupId>io.lettuce</groupId>
            <artifactId>lettuce-core</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
</dependency>
<!-- 添加jackson依赖用来解决redis序列化和反序列化的问题 -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.9.5</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.5</version>
</dependency>

添加配置

## 连接属性配置
spring.redis.host=
spring.redis.database=
spring.redis.port=
spring.redis.password=
spring.redis.timeout=

## 连接池配置
spring.redis.jedis.pool.max-active=
spring.redis.jedis.pool.max-idle=
spring.redis.jedis.pool.max-wait=
spring.redis.jedis.pool.min-idle=

上面的连接属性配置,spring data redis都已经做了默认的配置,如果连接数据和默认配置一样,则可以无需填写,下面的连接池配置虽然也做了默认配置,但是如果全部不填写,则会造成未使用连接池的情况

注入bean,解决序列化问题

redisTemplate默认使用的是JdkSerializationRedisSerializer,是不支持自定义对象的序列化的。

@Configuration
public class RedisConfig {


    @Bean
    public RedisTemplate<Object,Object> redisTemplate(RedisConnectionFactory connectionFactory){
        //设置序列化
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(om);
        // 配置redisTemplate
        RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(connectionFactory);
        redisTemplate.setKeySerializer(jackson2JsonRedisSerializer);
        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
        redisTemplate.setHashKeySerializer(jackson2JsonRedisSerializer);
        redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
        redisTemplate.afterPropertiesSet();
        return redisTemplate;
    }
}

注入RedisTemplate进行redis操作

@Autowired
private RedisTemplate redisTemplate;

redisTemplate.opsForValue().set("key", "value");
发布了81 篇原创文章 · 获赞 16 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/mazhen1991/article/details/101103096
今日推荐