一、导入pom.xml文件相关的依赖并配置
org.springframework.boot spring-boot-starter-data-redis org.apache.commons commons-pool2
以下是在application.xml中进行redis相关的配置(本文采用的springboot版本为2.1.7):
######配置redis####### # Redis 数据库索引(默认为 0) spring.redis.database=0 # Redis 服务器地址 spring.redis.host=127.0.0.1 # Redis 服务器连接端? spring.redis.port=6379 # Redis 服务器连接密码(默认为空) spring.redis.password= # 连接池最?连接数(使?负值表示没有限制) 默认 8 spring.redis.lettuce.pool.max-active=8 # 连接池最?阻塞等待时间(使?负值表示没有限制) 默认 -1 spring.redis.lettuce.pool.max-wait=-1 # 连接池中的最?空闲连接 默认 8 spring.redis.lettuce.pool.max-idle=8 # 连接池中的最?空闲连接 默认 0 spring.redis.lettuce.pool.min-idle=0
项目运行前记得启动redis的server服务器。。
二、配置Redis的set、get模板
这里配置了两个模板,一个是设置存放的值为String的模板redisTemplateForStr,一个是设置存放的值为Object的模板redisTemplateForObj:
@Configuration @EnableCaching public class MyRedisConfig extends CachingConfigurerSupport { @Bean(name="redisTemplateForStr") public RedisTemplateredisTemplate(RedisConnectionFactory factory) { RedisTemplate template = new RedisTemplate<>(); RedisSerializer redisSerializer = new StringRedisSerializer(); template.setConnectionFactory(factory); //key序列化方式,如果不设置,会有乱码 template.setKeySerializer(redisSerializer); //value序列化 template.setValueSerializer(redisSerializer); //value hashmap序列化 template.setHashValueSerializer(redisSerializer); //key haspmap序列化 template.setHashKeySerializer(redisSerializer); return template; } @Bean(name="redisTemplateForObj") public RedisTemplate redisTemplate2(RedisConnectionFactory factory) { RedisTemplate template = new RedisTemplate (); template.setConnectionFactory(factory); 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); StringRedisSerializer stringRedisSerializer = new StringRedisSerializer(); // key采用String的序列化方式 template.setKeySerializer(stringRedisSerializer); // hash的key也采用String的序列化方式 template.setHashKeySerializer(stringRedisSerializer); // value序列化方式采用jackson template.setValueSerializer(jackson2JsonRedisSerializer); // hash的value序列化方式采用jackson template.setHashValueSerializer(jackson2JsonRedisSerializer); template.afterPropertiesSet(); return template; } }
三、然后编写相应的工具类
/** * 利用RedisTemplate进行相关set、get方法的封装 */ @Repository public class RedisTemplateForGetSet { @Resource(name="redisTemplateForObj") RedisTemplate redisTemplate; @Resource(name="redisTemplateForStr") RedisTemplate redisTemplateStr; publicT getObjectFromRedis(String id){ return (T)redisTemplate.opsForValue().get(id); } public void setObjectToRedis(String id, Object object){ redisTemplate.opsForValue().set(id,object); } public void setCheckCodeToRedis(String id, String checkCode){ redisTemplateStr.opsForValue().set(id,checkCode); } public String getCheckCodeFromRedis(String id){ String checkCode = (String)redisTemplateStr.opsForValue().get(id); return checkCode; } }
四、测试
在注解为RestController的控制层中进行测试:
@RequestMapping("redis") public TUser testRedis(TUser tUser){ String key = tUser.getId().toString(); userRedisTemplate.setObjectToRedis(key,tUser); TUser user = userRedisTemplate.getObjectFromRedis(key); System.out.println(user.toString()); return user; }
以下是测试结果:
以上便是简单的redis配置并进行简单的set、get测试。