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。