Vert.x 操作Redis

哈嘍,大家好,歡迎閱讀閑話Java的Vert.x部分,本篇是閑話Vert.x的第五期,《Vert.x操作Redis》。本期由閑話哥帶您了解,如何通過Vert.x來連接Redis。
后續(xù)所使用的代碼均開源在:https://github.com/happy-fly/wxcode
Redis簡介
Redis是一個高性能的存儲鍵值對的內(nèi)存服務(wù)器,我們在項目中經(jīng)常會用到Redis做一些熱點數(shù)據(jù)的緩存,實現(xiàn)分布式鎖或者做序列生成器等。
Redis非常簡單,包括提供了簡單的API,封裝了簡單的網(wǎng)絡(luò)協(xié)議,提供了簡單的集群部署方案.....總之,Redis對開發(fā)者、運維人員、架構(gòu)師都非常友好,并且性能非常高,那么肯定是非常受到大眾的青睞了。
Vert.x提供了對Redis的支持,像數(shù)據(jù)庫一樣,對于Redis的操作也是異步的,因此不能夠使用原來的Jedis那套API。Vert.x提供的異步的API和Jedis那套也是非常類似的,只是把同步響應(yīng)換成了異步的而已。下面我們就簡單的來看下如何使用Vert.x提供的API來操作Redis吧。
Redis基本操作
Redis有5種基本數(shù)據(jù)類型,分別是字符串、哈希、列表、集合和有序集合。這五種基本數(shù)據(jù)類型,基本上都對應(yīng)了存值操作、取值操作、刪除操作、列表操作,所以每個數(shù)據(jù)類型都有很多的API,我們這里不是對Redis進行講解,因此不再逐一列出,只挑一些基礎(chǔ)性的操作進行展示。
同樣的,我們還是會先創(chuàng)建一個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方法中實現(xiàn)如下代碼。
這里必須要說明一下,Redis有三種部署模式,分別是單機模式,哨兵模式和集群模式。在早期的Vert.x版本中,僅支持單機模式,其他的模式需要自己寫代碼來進行適配。現(xiàn)在發(fā)布的穩(wěn)定版本,已經(jīng)對這三種模式都進行了適配,所以最開始開放的API和現(xiàn)在版本也有較大的改動。
原來操作Redis就像數(shù)據(jù)庫一樣,創(chuàng)建RedisClient,通過RedisClient提供的方法對redis進行操作。
新的版本,需要先來創(chuàng)建一個Redis接口,這個接口中只是抽象了Redis的網(wǎng)絡(luò)協(xié)議,提供了send方法。如果熟悉Redis網(wǎng)絡(luò)協(xié)議的朋友,可以直接用send方法來操作redis,但這樣并不優(yōu)雅。于是官方在Redis的上一層提供了RedisAPI,封裝了具體的操作。
通過RedisOptions的setType方法,可以指定連接類型,是單機還是哨兵還是集群。Redis接口下分別對應(yīng)三個實現(xiàn)類。所以后續(xù)的操作對開發(fā)者來講都是沒有感知的。

set方法
這個是對基礎(chǔ)數(shù)據(jù)類型字符串的操作,字符串提供讀和寫的方法,set就是把數(shù)據(jù)放到緩存中。當然還有setex,setnx等。這個方法非常簡單,這里就不再過多的解釋了。

get方法
這個方法也是非常簡單的,這里也就不在多說了。

總結(jié)
通過上面的操作,我們會發(fā)現(xiàn),Redis的操作還是很簡單的,只要你之前用過redis,轉(zhuǎn)到Vert.x這邊不會費太大勁。
上面的案例中僅僅展示了單機模式下的操作,對于哨兵和集群模式,get和set方法依然是相同的,只是在RedisOptions配置中有所變化。比如集群模式下我們可以指定多個服務(wù)器的ConnectionString參數(shù)。
Redis還提供發(fā)布-訂閱模式,在Vert.x中也提供了支持,詳細使用可以參考Vert.x的官方文檔(https://vertx.io/docs/vertx-redis-client/java/),因為都比較簡單,這里也就不在詳細介紹了。
The End
