Vert.x 操作Redis
哈喽,大家好,欢迎阅读闲话Java的Vert.x部分,本篇是闲话Vert.x的第五期,《Vert.x操作Redis》。本期由闲话哥带您了解,如何通过Vert.x来连接Redis。
后续所使用的代码均开源在:https://github.com/happy-fly/wxcode
Redis简介
Redis是一个高性能的存储键值对的内存服务器,我们在项目中经常会用到Redis做一些热点数据的缓存,实现分布式锁或者做序列生成器等。
Redis非常简单,包括提供了简单的API,封装了简单的网络协议,提供了简单的集群部署方案.....总之,Redis对开发者、运维人员、架构师都非常友好,并且性能非常高,那么肯定是非常受到大众的青睐了。
Vert.x提供了对Redis的支持,像数据库一样,对于Redis的操作也是异步的,因此不能够使用原来的Jedis那套API。Vert.x提供的异步的API和Jedis那套也是非常类似的,只是把同步响应换成了异步的而已。下面我们就简单的来看下如何使用Vert.x提供的API来操作Redis吧。
Redis基本操作
Redis有5种基本数据类型,分别是字符串、哈希、列表、集合和有序集合。这五种基本数据类型,基本上都对应了存值操作、取值操作、删除操作、列表操作,所以每个数据类型都有很多的API,我们这里不是对Redis进行讲解,因此不再逐一列出,只挑一些基础性的操作进行展示。
同样的,我们还是会先创建一个Verticle,在Verticle的start方法中来编写示例代码。在编码之前,不要忘记先要引入redis的依赖包。
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-redis-client</artifactId>
<version>4.0.0</version>
</dependency>
主方法
在Vert.x的世界里,所有的都是Verticle,所以我们这里还是定义了一个Vertcle,在start方法中实现如下代码。
这里必须要说明一下,Redis有三种部署模式,分别是单机模式,哨兵模式和集群模式。在早期的Vert.x版本中,仅支持单机模式,其他的模式需要自己写代码来进行适配。现在发布的稳定版本,已经对这三种模式都进行了适配,所以最开始开放的API和现在版本也有较大的改动。
原来操作Redis就像数据库一样,创建RedisClient,通过RedisClient提供的方法对redis进行操作。
新的版本,需要先来创建一个Redis接口,这个接口中只是抽象了Redis的网络协议,提供了send方法。如果熟悉Redis网络协议的朋友,可以直接用send方法来操作redis,但这样并不优雅。于是官方在Redis的上一层提供了RedisAPI,封装了具体的操作。
通过RedisOptions的setType方法,可以指定连接类型,是单机还是哨兵还是集群。Redis接口下分别对应三个实现类。所以后续的操作对开发者来讲都是没有感知的。
set方法
这个是对基础数据类型字符串的操作,字符串提供读和写的方法,set就是把数据放到缓存中。当然还有setex,setnx等。这个方法非常简单,这里就不再过多的解释了。
get方法
这个方法也是非常简单的,这里也就不在多说了。
总结
通过上面的操作,我们会发现,Redis的操作还是很简单的,只要你之前用过redis,转到Vert.x这边不会费太大劲。
上面的案例中仅仅展示了单机模式下的操作,对于哨兵和集群模式,get和set方法依然是相同的,只是在RedisOptions配置中有所变化。比如集群模式下我们可以指定多个服务器的ConnectionString参数。
Redis还提供发布-订阅模式,在Vert.x中也提供了支持,详细使用可以参考Vert.x的官方文档(https://vertx.io/docs/vertx-redis-client/java/),因为都比较简单,这里也就不在详细介绍了。
The End