本文共 3846 字,大约阅读时间需要 12 分钟。
老早就想记录一下Springboot项目中整合Redis的过程,今天终于忍不住对它下手了(在整合Redis之前,需确保redis处于启动状态)
废话不多说,直接新建Springboot项目。Springboot整合Redis |
1.创建项目选择依赖
2.在项目的pom.xml文件中手动引入commons-pool2
连接池依赖
org.apache.commons commons-pool2 2.7.0
3.在application.properties配置文件中配置redis连接信息
server: port: 8082spring: redis: database: 4 #使用redis中哪个库 port: 6379 host:192.168.138.121 password: 123456 #redis连接密码 timeout: 60000 #连接超时时间 lettuce: #由于Spring Boot2.x 的改动,连接池相关配置需要通过spring.redis.lettuce.pool或者 spring.redis.jedis.pool 进行配置 pool: max-active: 200 #连接池最大连接数(使用负值表示没有限制) 默认8 max-wait: -1 #连接池最大阻塞等待时间(使用负值表示没有限制) min-idle: 0 #连接池中的最小空闲连接 max-idle: 10 #连接池中的最大空闲连接
4.写一个测试controller(当然也可以用Junit启动进行测试,我个人习惯写个controller,通过浏览器访问进行测试)
@RestControllerpublic class testController { @Autowired private StringRedisTemplate stringRedisTemplate; /** *在redis中有两个模板可以使用,最后专门说明 */// private RedisTemplate
5.启动项目,首先访问localhost:8082//set
,然后redis就会在4号库中以key value的形式将name 和 zhangsan
存储起来。
Redis Desktop Manager
工具来操作的redis。这样方便我们查看redis中的值的存储情况。 7.从redis管理工具中我们可以看到4号库中确实存了一个key为name,value为zhangsan的一组数据。说明我们的reids集成正常。下面看一个get取值。 在浏览器中访问localhost:8082//get
,然后看看返回的结果。 返回结果正常。到这里,简单的redis集成OK了,下面说一下集成的过程中,有哪些点需要注意的。 需要留意的点 |
在前面创建项目的过程中,提到了Redis中默认是有两个模板可以使用,分别是StringRedisTemplate
和RedisTemplate
,这个当我们在引入了Redis相关的依赖之后,在其自动配置类RedisAutoConfiguration
中就可以看到(可以在idea中 搜索此配置类进行查看)。
@Configuration(proxyBeanMethods = false)@ConditionalOnClass(RedisOperations.class)@EnableConfigurationProperties(RedisProperties.class)@Import({ LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class })public class RedisAutoConfiguration { @Bean @ConditionalOnMissingBean(name = "redisTemplate") public RedisTemplate
两种模板的区别 |
StringRedisTemplate
:
RedisTemplate
:
我们在测试controller中,使用redisTemplate模板来存值,看一下redis中的值是什么款式
@RestControllerpublic class testController { @Autowired// private StringRedisTemplate stringRedisTemplate; /** *在redis中有两个模板可以使用,最后专门说明 */ private RedisTemplate总结: 1.因为两种模板的序列化方式不同,所以存储的数据互不相同。也就是说: 用RedisTemplate存的值不能用StringRedisTemplate来取值 用StringRedisTemplate存的值不能用RedisTemplate来取值redisTemplate; @RequestMapping("/set") @ResponseBody public Object setValue() { redisTemplate.opsForValue().set("name", "zhangsan"); return "走了 set "; } @RequestMapping("/get") @ResponseBody public Object getValue() { return redisTemplate.opsForValue().get("name"); }}
2.两种模板如何选择?
StringRedisTemplate适合用来存储字符串类型的数据 RedisTemplate适合用来存储复杂的对象类型的数据转载地址:http://pjhwi.baihongyu.com/