欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Redis的異步,響應(yīng)式和RxJava2接口

在優(yōu)銳課的java 分享學(xué)習(xí)中,討論關(guān)于讓我們探索redis的異步,反應(yīng)式和RxJava2接口。碼了很多知識(shí)點(diǎn),分享給大家參考學(xué)習(xí)。

成都創(chuàng)新互聯(lián)2013年至今,先為平城等服務(wù)建站,平城等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為平城企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

異步,響應(yīng)式和RxJava2都是Java編程語(yǔ)言中的所有相關(guān)編程模型。 但是,它們不能在Redis(用于實(shí)現(xiàn)內(nèi)存中數(shù)據(jù)存儲(chǔ)的開源軟件項(xiàng)目)中自動(dòng)提供。

好消息是,這三種編程模型都可以在Redis中使用Redisson(Redisson)來(lái)使用,Redisson是將Redis與Java集成的第三方客戶端庫(kù)。 在本文中,我們將討論這三種模型中的每一種,以及如何使用Redisson在Redis中部署它們。

Redis的異步接口

異步編程是一種并行編程,其中任務(wù)與主應(yīng)用程序在不同的線程上分別運(yùn)行。 這允許應(yīng)用程序在任務(wù)執(zhí)行時(shí)繼續(xù)運(yùn)行。 一旦任務(wù)完成,它將通知主應(yīng)用程序其成功或失敗。
在Redisson中,每個(gè)異步方法都返回一個(gè)RFuture對(duì)象,該對(duì)象代表異步計(jì)算的結(jié)果。 RFuture在Java中實(shí)現(xiàn)java.util.concurrent.Future和java.util.concurrent.CompletionStage接口。

下面是一個(gè)如何使用RFuture在Redisson中應(yīng)用異步編程模型的示例:

package redis.demo;
import org.redisson.Redisson;
import org.redisson.api.RBucket;
import org.redisson.api.RFuture;
import org.redisson.api.RMap;
import org.redisson.api.RedissonClient;
public class RedisAsyncTest {
    public static void main( String[] args )
    {
        // connects to 127.0.0.1:6379 by default
        RedissonClient redisson = Redisson.create();
        // perform operations
        RBucket<String> bucket = redisson.getBucket("simpleObject");
        RFuture<Void> setFuture = bucket.setAsync("This is object value");
        setFuture.onComplete((value, exception) -> {
            // on invocation completion
        });
        RMap<String, String> map = redisson.getMap("simpleMap");
        RFuture<String> putFuture = map.putAsync("mapKey", "This is map value");
        putFuture.onComplete((value, exception) -> {
            System.out.println("previous value: " + value);
        });
        RFuture<String> getFuture = bucket.getAsync();
        getFuture.onComplete((value, exception) -> {
            System.out.println("stored object value: " + value);
        });
        RFuture<String> getMapFuture = map.getAsync("mapKey");
        getMapFuture.onComplete((value, exception) -> {
            System.out.println("stored map value: " + value);
        });
        redisson.shutdown();
    }
}

Redis的反應(yīng)式界面

反應(yīng)式編程模型是在Java 8的Reactor核心庫(kù)中實(shí)現(xiàn)的。反應(yīng)式流是異步流處理的規(guī)范,在該規(guī)范中,可以異步產(chǎn)生和使用許多不同的事件。 為了應(yīng)對(duì)這種快速步伐,系統(tǒng)需要產(chǎn)生事件的速度不超過(guò)消耗事件的速度。

在Redisson中,每個(gè)反應(yīng)式方法都返回一個(gè)react..core.publisher.Mono對(duì)象,該對(duì)象通過(guò)發(fā)出一個(gè)元素來(lái)表示已成功完成計(jì)算。

以下代碼示例演示了如何在Redisson中使用Mono對(duì)象:

package redis.demo;
import org.redisson.Redisson;
import org.redisson.api.RBucketReactive;
import org.redisson.api.RMapReactive;
import org.redisson.api.RedissonReactiveClient;
import reactor.core.publisher.Mono;
public class RedisReactiveTest {
    public static void main( String[] args )
    {
        // connects to 127.0.0.1:6379 by default
        RedissonReactiveClient redisson = Redisson.createReactive();
        // perform operations
        RBucketReactive<String> bucket = redisson.getBucket("simpleObject");
        Mono<Void> setMono = bucket.set("This is object value");
        setMono.subscribe(value -> {
            // on invocation completion
        });
        RMapReactive<String, String> map = redisson.getMap("simpleMap");
        Mono<String> putMono = map.put("mapKey", "This is map value");
        putMono.subscribe(value -> {
            System.out.println("previous value: " + value);
        });
        Mono<String> getMono = bucket.get();
        getMono.subscribe(value -> {
            System.out.println("stored object value: " + value);
        });
        Mono<String> getMapMono = map.get("mapKey");
        getMapMono.subscribe(value -> {
            System.out.println("stored map value: " + value);
        });
        redisson.shutdown();
    }
}

用于Redis的RxJava2接口

RxJava2是另一個(gè)實(shí)現(xiàn)異步和反應(yīng)式編程的Java范例。 RxJava2的主要區(qū)別在于“可觀察對(duì)象”(偵聽發(fā)出數(shù)據(jù)的數(shù)據(jù)源)和“訂戶”(偵聽一個(gè)或多個(gè)可觀察對(duì)象)之間。
在Redisson中,每個(gè)RxJava方法都返回以下可觀察對(duì)象之一:io.reactivex.Completable,io.reactivex.Maybe,io.reactivex.Flowable或io.reactivex.Single。

?單一的:可觀察的僅發(fā)出一個(gè)項(xiàng)目或一個(gè)值或引發(fā)錯(cuò)誤。
?也許:一個(gè)觀測(cè)值發(fā)出零個(gè)或一個(gè)項(xiàng)目或值或引發(fā)錯(cuò)誤。
?可完成:任務(wù)完成時(shí)發(fā)出或拋出錯(cuò)誤的可觀察對(duì)象。

以下是如何在Redis和Redisson中使用RxJava2編程模型的示例:

package redis.demo;
import org.redisson.Redisson;
import org.redisson.api.RBucketRx;
import org.redisson.api.RMapRx;
import org.redisson.api.RedissonRxClient;
import io.reactivex.Completable;
import io.reactivex.Maybe;
public class RedisRxTest {
    public static void main( String[] args )
    {
        // connects to 127.0.0.1:6379
        RedissonRxClient redisson = Redisson.createRx();
        // perform operations
        RBucketRx<String> bucket = redisson.getBucket("simpleObject");
        Completable completable = bucket.set("This is object value");
        completable.subscribe(() -> {
            // on invocation completion
        });
        RMapRx<String, String> map = redisson.getMap("simpleMap");
        Maybe<String> putMaybe = map.put("mapKey", "This is map value");
        putMaybe.subscribe(value -> {
            System.out.println("previous value: " + value);
        });
        Maybe<String> getMaybe = bucket.get();
        getMaybe.subscribe(value -> {
            System.out.println("stored object value: " + value);
        });
        Maybe<String> mapGetMaybe = map.get("mapKey");
        mapGetMaybe.subscribe(value -> {
            System.out.println("stored map value: " + value);
        });
        redisson.shutdown();
    }
}

文章寫道這里,如有不足之處,歡迎補(bǔ)充評(píng)論。

如果你對(duì)java技術(shù)很感興趣也可以一起交流學(xué)習(xí),共同學(xué)習(xí)進(jìn)步!

最近get了很多新知識(shí),希望能幫到大家。需要詳細(xì)的java架構(gòu)思維導(dǎo)圖路線也可以評(píng)論獲??!

標(biāo)題名稱:Redis的異步,響應(yīng)式和RxJava2接口
URL地址:http://aaarwkj.com/article20/igjjjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、服務(wù)器托管、定制網(wǎng)站品牌網(wǎng)站制作、品牌網(wǎng)站建設(shè)、小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
日本成人大片在线观看| av在线中文字幕乱码| 亚洲人色中文字幕天堂| 超碰国产精品一区二区| 国产乱国产乱老熟部视频| 亚洲精品国产精品乱码| 亚洲一区二区三区不卡伦理| 国产一区 亚洲精品| 亚洲国产日韩精品久久| 国产精品岛国片在线观看| 亚洲日本在线观看午夜视频| 日日插天天干夜夜操| 日韩亚洲欧美成人一区| 久久99精品久久久子伦| 国产精品国产成人生活片| 在线观看后入大屁股| 久久精品国产亚洲av波多| 成年爽片在线观看播放欧美| 日本免费一区中文字幕| 婷婷91麻豆精品国产人妻| 国产91精品网站在线| 蜜臀视频网站在线观看| 亚洲婷婷综合精品五月天| 中文在线中文天堂黄色片| 亚洲av少妇一区二区成年男人| 九九热视频在线观看色| 国产精品久久久久大屁股精品性色| 日韩av手机在线不卡| 日本在线视频精品一区| 一区二区三区人妻av| 精品丝袜熟女一区二区三区| 91亚洲蜜臀精品国产| 成人免费毛片内射视频| 国产亚洲欧美日韩中文字幕| 99久久精彩免费视频| 国产欧美日韩在线高清| 日韩免费中文视频不卡| 中文字幕在线成人影院| 欧美黄片一区二区三区三| 午夜一区二区三区精品| 老湿机午夜在线免费观看|