工作专题springboot-webflux学习(转)(完)java学习

06-整合Redis

2018-10-16  本文已影响404人  郭艺宾

前面讲了如何整合 MongoDB,这里继续讲如何操作 Redis 这个数据源,那什么是 Reids?

Redis 是一个高性能的 key-value 数据库。GitHub 是这么描述的:

Redis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes, HyperLogLogs, Bitmaps.

Redis 是内存式数据库,存储在磁盘,支持的数据类型很多:Strings、Lists、Sets、Sorted Sets、Hashes、HyperLogLogs、Bitmaps 等。具体文档和安装参见相关资料,此处直接使用已经安装好的redis。

下面开始写代码。

首先创建项目:

从上面可以看到添加了两个组件依赖。

工程结构如图:

目录核心如下:

1    pom.xml maven 配置

2    application.properties 配置文件

3    domain 实体类

4    controller 控制层,本文要点

类似 MongoDB 配置,在 application.properties 配置连接 Redis:

对象City代码如下:

值得注意点:

1     @Id 注解标记对应库表的主键或者唯一标识符。因为这个是我们的 DO,数据访问对象一一映射到数据存储。

2     City 必须实现序列化,因为需要将对象序列化后存储到 Redis。如果没实现 Serializable,会引出异常:java.lang.IllegalArgumentException: DefaultSerializer requires a Serializable payload but received an object of type。

3     如果不使用默认的序列化,需要自定义序列化实现,只要实现 RedisSerializer 接口去实现即可,然后在使用 RedisTemplate.setValueSerializer 方法去设置你实现的序列化实现,支持 JSON、XML 等。

控制层 CityWebFluxController,代码如下:

代码详解:

1    使用 @Autowired 注入 RedisTemplate 对象,这个对象和 Spring 的 JdbcTemplate 功能十分相似,RedisTemplate 封装了 RedisConnection,具有连接管理、序列化和各个操作等,还有针对 String 的支持对象 StringRedisTemplate。

2    删除 Redis 某对象,直接通过 key 值调用 delete(key)。

3    Redis 操作视图接口类用的是 ValueOperations,对应的是 Redis String/Value 操作,get 是获取数据;set 是插入数据,可以设置失效时间,这里设置的失效时间是 60 s。

4    还有其他的操作视图,ListOperations、SetOperations、ZSetOperations 和 HashOperations。

运行工程

一个  Spring Boot WebFlux 工程就开发完毕了,下面运行工程验证下。在 IDEA 中执行 Application 类启动,任意正常模式或者 Debug 模式,可以在控制台看到成功运行的输出:

打开 Postman。进行下面操作:

新增城市信息 POST http://127.0.0.1:8006/city:

获取城市信息 GET http://127.0.0.1:8006/city/2:

如果等待 60s 以后,再次则会获取为空,因为保存的时候设置了失效时间是 60 s。

注意:RedisTemplate 实现操作 Redis,但操作是同步的,不是 Reactive 的。自然,支持 Reactive 的操作类为 ReactiveRedisTemplate。

下面写个小案例,新建 CityWebFluxReactiveController 类,路由为 /city2 开头:

写法和以前保持一致,@Autowired 注入 ReactiveRedisTemplate 对象。

ReactiveValueOperations 是 String(或 value)的操作视图,操作视图还有 ReactiveHashOperations、ReactiveListOperations、ReactiveSetOperations 和 ReactiveZSetOperations 等。

不一样的是,操作视图 set 方法是操作 City 对象,但可以 get 回 Mono 或者 Flux 对象。

可以自行测试上面几个接口,过程略。。。

总结

这里探讨了 Spring WebFlux 的如何整合 Redis,介绍了如何通过 RedisTemplate 去操作 Redis。因为 Redis 在获取资源性能极佳,常用 Redis 作为缓存存储对象,下面我们利用 Reids 实现缓存操作。

原文:https://gitbook.cn/gitchat/column/5acda6f6d7966c5ae1086f2b/topic/5acdaa47d7966c5ae108707b

代码:https://gitee.com/blueses/springboot-webflux

上一篇下一篇

猜你喜欢

热点阅读