方法一请参考之前博文 spring boot 整合 redis
自己的版本 java8 + redis3.0 + springboot 2.0.0
1 spring boot已经支持集成 redis,在 mvn 中只需添加依赖即可。pom 配置片段如下
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.0.RELEASE</version> </parent> <!-- 添加 redis 缓存支持 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
1.2 对 redis 进行配置,修改配置文件 application.properties
## Redis 配置 ## Redis数据库索引(默认为0) spring.redis.database=0 ## Redis服务器地址 spring.redis.host=127.0.0.1 ## Redis服务器连接端口 spring.redis.port=6379 ## Redis服务器连接密码(默认为空) spring.redis.password=
2.1 创建 RedisConfig 配置类
@Configuration public class RedisConfig { @Bean public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory redisConnectionFactory){ StringRedisTemplate redisTemplate = new StringRedisTemplate(redisConnectionFactory); Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); /** * 通用的序列化和反序列化设置 * ObjectMapper类是Jackson库的主要类。它提供一些功能将转换成Java对象匹配JSON结构,反之亦然。 */ ObjectMapper objectMapper = new ObjectMapper(); objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(objectMapper); redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); redisTemplate.afterPropertiesSet(); return redisTemplate; } }
2.2 创建 RedisService 泛型服务方法
@Service public class RedisService <T> { @Autowired private RedisTemplate redisTemplate; /** * 一天有多少分钟,默认时间是一天 */ private static final long MINUTES_OF_ONE_DAY = 24 * 60; /** * 将 key,value 存放到redis数据库中,默认设置过期时间为一天 * * @param key * @param value */ public void set(String key, T value) { set(key, value, MINUTES_OF_ONE_DAY); } /** * 将 key,value 存放到redis数据库中,设置过期时间单位是分钟 * * @param key * @param value * @param expireTime 单位是秒 */ public void set(String key, T value, long expireTime) { ValueOperations<String, T> valueOperations = redisTemplate.opsForValue(); valueOperations.set(key,value,expireTime,TimeUnit.MINUTES); } /** * 判断 key 是否在 redis 数据库中 * * @param key * @return */ public boolean exists(final String key) { return redisTemplate.hasKey(key); } /** * 获取 key 对应的字符串 * @param key * @return */ public T get(String key) { ValueOperations<String, T> valueOperations = redisTemplate.opsForValue(); return valueOperations.get(key); } /** * 获得 key 对应的键值,并更新缓存时间,时间长度为默认值 * @param key * @return */ public T getAndUpdateTime(String key) { T result = get(key); if (result != null) { set(key, result); } return result; } /** * 删除 key 对应的 value * @param key */ public void delete(String key) { redisTemplate.delete(key); } }
3 接下来就可以使用 RedisService 进行缓存使用了。需要开启Redis服务,并没有设置密码