前言
本章基于上一章应用进行改造,增加redis
响应式与非响应式
SpringBoot2中已经把redis的驱动从Jedis改为Lettuce,这也是实现响应式最关键的地方。
那什么是响应式呢?
简单理解响应式
比如我们在使用excel时,单元格c1的值为2,单元格c2的值是3,单元格c3是一个公式(c1+c2)
如果改变c1或c2的值,c3单元格也会变更。这就是响应式。响应式在前端页面应用非常广泛。
1.引入需要的jar包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis-reactive</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
注意commons-pool2是必须要引用的。
2. 配置redis连接配置
spring.redis.host=192.168.222.12
spring.redis.password=123456
#连接池最小空闲连接,默认0
spring.redis.lettuce.pool.min-idle=5
#连接池最大空闲连接,默认8
spring.redis.lettuce.pool.max-idle=10
#连接池最大连接数,负值表示没有限制,默认8
spring.redis.lettuce.pool.max-active=20
#连接池最大等待时间,负值表示没有限制,默认-1ms
spring.redis.lettuce.pool.max-wait=1000
3.使用样例
@RestController
public class RedisController {
@Autowired
private ReactiveRedisTemplate reactiveRedisTemplate;
@Autowired
private ReactiveStringRedisTemplate stringRedisTemplate;
@RequestMapping("/redis/setData")
public String setData(){
Mono<Boolean> momo = reactiveRedisTemplate.opsForValue().set("test|string", "this is a string value");
momo.subscribe(System.out::println);
return "setData";
}
@RequestMapping("/redis/getData")
public Mono getData(){
Mono momo = reactiveRedisTemplate.opsForValue().get("test|string");
momo.subscribe(System.out::println);
return momo;
}
@RequestMapping("/redis/getData2")
public Mono getData2(){
Mono momo = reactiveRedisTemplate.opsForValue().get("test|string");
momo.subscribe(System.out::println);
return momo;
}
}
如果启动正常,直接使用@Autowired
即可。
另外要注意,不同的Template的序列化方案不同,比如样例中,如果set使用的是ReactiveRedisTemplate
,那用ReactiveStringRedisTemplate
是get不到数据的。
这一点在做系统升级时一定要注意多测试。
结束语
本章主要实现接入数据库。
如果对您有帮助,请给个赞。