一、導入pom.xml文件相關的依賴並配置
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> </dependency>
以下是在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 RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) { RedisTemplate<String, String> template = new RedisTemplate<>(); RedisSerializer<String> 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<String, Object> redisTemplate2(RedisConnectionFactory factory) { RedisTemplate<String, Object> template = new RedisTemplate<String, Object>(); 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; public <T> T 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測試。