SpringBoot集成Redis

1. SpringBoot集成Redis

        Redis是一个缓存,消息代理和功能丰富的键值存储。 Spring Boot为Jedis客户端库和在它基础上的Spring Data Redis提供的抽象类提供了基本的自动配置。 有一个spring-boot-starter-data-redis'Starter'以方便的方式收集依赖关系。

2. 连接到Redis

        可以像其他Spring Bean一样注入自动配置的RedisConnectionFactory,StringRedisTemplate或RedisTemplate实例。 默认情况下,实例将尝试使用localhost:6379连接到Redis服务器。

3. 配置Redis

在application.properties文件中加入Redis相关配置参数:

## Redis 配置
## Redis数据库索引(默认为0)
spring.redis.database=0
## Redis服务器地址
spring.redis.host=127.0.0.1
## Redis服务器连接端口
spring.redis.port=6379
## Redis服务器连接密码(默认为空)
spring.redis.password=
## 连接池最大连接数(使用负值表示没有限制)
spring.redis.pool.max-active=8
## 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.pool.max-wait=-1
## 连接池中的最大空闲连接
spring.redis.pool.max-idle=8
## 连接池中的最小空闲连接
spring.redis.pool.min-idle=0
## 连接超时时间(毫秒)
spring.redis.timeout=0

配置RedisTemplate

/**
 * @Author: 落叶飞翔的蜗牛
 * @Description:
 * @Date: Create in 2018/2/27 0027 上午 0:15.
 * @Version: 1.0.0
 */
@Configuration
@EnableCaching
public class RedisCacheConfig {
    @Bean
    public CacheManager cacheManager(RedisTemplate<?, ?> redisTemplate){
        CacheManager cacheManager = new RedisCacheManager(redisTemplate);
        return cacheManager;
    }
    @Bean
    public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory){
        RedisTemplate<String, String> redisTemplate = new RedisTemplate<String,String>();
        redisTemplate.setConnectionFactory(factory);
        // key序列化方式;(不然会出现乱码;),但是如果方法上有Long等非String类型的话,会报类型转换错误;
        // 所以在没有自己定义key生成策略的时候,以下这个代码建议不要这么写,可以不配置或者自己实现ObjectRedisSerializer
        // 或者JdkSerializationRedisSerializer序列化方式;
        RedisSerializer<String> redisSerializer = new StringRedisSerializer();
        redisTemplate.setKeySerializer(redisSerializer);
        redisTemplate.setHashKeySerializer(redisSerializer);
        return redisTemplate;
    }

}
PS:需要注意的是:

        RedisTemplate 操作redis时发现存储在redis中的key值,前面还多出了许多类似\xac\xed\x00\x05t\x00\x04,这是因为spring-data-redis的RedisTemplate<K, V>模板类在操作redis时默认使用JdkSerializationRedisSerializer来进行序列化,如下:

if (defaultSerializer == null) {


   defaultSerializer = new JdkSerializationRedisSerializer(classLoader != null ? classLoader : this.getClass().getClassLoader());
}

解决方案如下:

4. SpringBoot集成Redis Demo地址

Demo地址:https://github.com/PerseveranceForever/springboot_redis_demo.git
以上demo是SpringBoot整合mybatis+redis。通过从mysql中读取数据,存入redis。

猜你喜欢

转载自blog.csdn.net/shixuetanlang/article/details/79605196