Vert.x 操作Redis

猿天飞

共 1747字,需浏览 4分钟

 · 2021-04-09

2dacd8404bcae65c34c7ab68db4dc7aa.webp

哈喽,大家好,欢迎阅读闲话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接口下分别对应三个实现类。所以后续的操作对开发者来讲都是没有感知的。

38404e7b6c2e3beca9db7917784c962d.webp

set方法

这个是对基础数据类型字符串的操作,字符串提供读和写的方法,set就是把数据放到缓存中。当然还有setex,setnx等。这个方法非常简单,这里就不再过多的解释了。

c9f9287bb0010d65c98c7d37fea2d84b.webp

get方法

这个方法也是非常简单的,这里也就不在多说了。

29fd61747635d641fa70680c9caccade.webp


总结

通过上面的操作,我们会发现,Redis的操作还是很简单的,只要你之前用过redis,转到Vert.x这边不会费太大劲。

上面的案例中仅仅展示了单机模式下的操作,对于哨兵和集群模式,get和set方法依然是相同的,只是在RedisOptions配置中有所变化。比如集群模式下我们可以指定多个服务器的ConnectionString参数。

Redis还提供发布-订阅模式,在Vert.x中也提供了支持,详细使用可以参考Vert.x的官方文档(https://vertx.io/docs/vertx-redis-client/java/),因为都比较简单,这里也就不在详细介绍了。

The End


浏览 116
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报