Spring整合Redis

Spring整合Redis

依赖

<!-- spring data框架,提供了redis的整合支持,内部支持lettuce以及Jedis客户端 -->
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-redis</artifactId>
    <version>2.5.6</version>
    <exclusions>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
        </exclusion>
    </exclusions>
</dependency>

配置类

@Configuration
public class RedisConfig {
    /**
     * Redis 的连接工厂
     *
     * @return
     */
    @Bean
    public RedisConnectionFactory connectionFactory() {
        // 创建单机模式的redis配置(还有集群模式-多个redis)
        // 构造方法指定主机地址、端口(也可以在set中设置)
        RedisStandaloneConfiguration configuration = new RedisStandaloneConfiguration("www.lldwb.top",7890);
        // 设置密码
        configuration.setPassword("@lldwb_redis");
        // 选择要访问的数据库
        configuration.setDatabase(0);
        // 创建lettuce连接工厂
        return new LettuceConnectionFactory(configuration);
    }

//    /**
//     * 装配String类型的RedisTemplate,用于操作redis数据库,这个template只能用于操作key和value都是String类型的数据
//     * @return
//     */
//    @Bean
//    public RedisTemplate<String,String> stringRedisTemplate(){
//        // 创建StringRedisTemplate并注入连接工厂
//        return new StringRedisTemplate(connectionFactory());
//    }

    /**
     * 市场推荐使用这种方法
     * 装配自定义的RedisTemplate,通过使用不同的序列化器,来定制序列化key和value的数据类型
     */
    @Bean
    public RedisTemplate<String,Object> redisTemplate(){
        RedisTemplate<String,Object> template = new RedisTemplate();
        // 使用StringRedisSerializer来序列化和反序列化key
        template.setKeySerializer(RedisSerializer.string());
        template.setHashKeySerializer(RedisSerializer.string());
        // 使用Jackson序列化器来序列化和反序列化value
        // 底层使用 js序列化 的包
        template.setValueSerializer(RedisSerializer.json());
        template.setHashValueSerializer(RedisSerializer.json());
        // 注入RedisConnectionFactory
        template.setConnectionFactory(connectionFactory());
        return template;
    }
}