网站建设资讯

NEWS

网站建设资讯

Redis的异步,响应式和RxJava2接口-创新互联

在优锐课的java 分享学习中,讨论关于让我们探索Redis的异步,反应式和RxJava2接口。码了很多知识点,分享给大家参考学习。

创新互联公司服务项目包括息县网站建设、息县网站制作、息县网页制作以及息县网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,息县网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到息县省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

异步,响应式和RxJava2都是Java编程语言中的所有相关编程模型。 但是,它们不能在Redis(用于实现内存中数据存储的开源软件项目)中自动提供。

好消息是,这三种编程模型都可以在Redis中使用Redisson(Redisson)来使用,Redisson是将Redis与Java集成的第三方客户端库。 在本文中,我们将讨论这三种模型中的每一种,以及如何使用Redisson在Redis中部署它们。

Redis的异步接口

异步编程是一种并行编程,其中任务与主应用程序在不同的线程上分别运行。 这允许应用程序在任务执行时继续运行。 一旦任务完成,它将通知主应用程序其成功或失败。
在Redisson中,每个异步方法都返回一个RFuture对象,该对象代表异步计算的结果。 RFuture在Java中实现java.util.concurrent.Future和java.util.concurrent.CompletionStage接口。

下面是一个如何使用RFuture在Redisson中应用异步编程模型的示例:

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 bucket = redisson.getBucket("simpleObject");
        RFuture setFuture = bucket.setAsync("This is object value");
        setFuture.onComplete((value, exception) -> {
            // on invocation completion
        });
        RMap map = redisson.getMap("simpleMap");
        RFuture putFuture = map.putAsync("mapKey", "This is map value");
        putFuture.onComplete((value, exception) -> {
            System.out.println("previous value: " + value);
        });
        RFuture getFuture = bucket.getAsync();
        getFuture.onComplete((value, exception) -> {
            System.out.println("stored object value: " + value);
        });
        RFuture getMapFuture = map.getAsync("mapKey");
        getMapFuture.onComplete((value, exception) -> {
            System.out.println("stored map value: " + value);
        });
        redisson.shutdown();
    }
}

Redis的反应式界面

反应式编程模型是在Java 8的Reactor核心库中实现的。反应式流是异步流处理的规范,在该规范中,可以异步产生和使用许多不同的事件。 为了应对这种快速步伐,系统需要产生事件的速度不超过消耗事件的速度。

在Redisson中,每个反应式方法都返回一个react..core.publisher.Mono对象,该对象通过发出一个元素来表示已成功完成计算。

以下代码示例演示了如何在Redisson中使用Mono对象:

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 bucket = redisson.getBucket("simpleObject");
        Mono setMono = bucket.set("This is object value");
        setMono.subscribe(value -> {
            // on invocation completion
        });
        RMapReactive map = redisson.getMap("simpleMap");
        Mono putMono = map.put("mapKey", "This is map value");
        putMono.subscribe(value -> {
            System.out.println("previous value: " + value);
        });
        Mono getMono = bucket.get();
        getMono.subscribe(value -> {
            System.out.println("stored object value: " + value);
        });
        Mono getMapMono = map.get("mapKey");
        getMapMono.subscribe(value -> {
            System.out.println("stored map value: " + value);
        });
        redisson.shutdown();
    }
}

用于Redis的RxJava2接口

RxJava2是另一个实现异步和反应式编程的Java范例。 RxJava2的主要区别在于“可观察对象”(侦听发出数据的数据源)和“订户”(侦听一个或多个可观察对象)之间。
在Redisson中,每个RxJava方法都返回以下可观察对象之一:io.reactivex.Completable,io.reactivex.Maybe,io.reactivex.Flowable或io.reactivex.Single。

单一的:可观察的仅发出一个项目或一个值或引发错误。
也许:一个观测值发出零个或一个项目或值或引发错误。
可完成:任务完成时发出或抛出错误的可观察对象。

以下是如何在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 bucket = redisson.getBucket("simpleObject");
        Completable completable = bucket.set("This is object value");
        completable.subscribe(() -> {
            // on invocation completion
        });
        RMapRx map = redisson.getMap("simpleMap");
        Maybe putMaybe = map.put("mapKey", "This is map value");
        putMaybe.subscribe(value -> {
            System.out.println("previous value: " + value);
        });
        Maybe getMaybe = bucket.get();
        getMaybe.subscribe(value -> {
            System.out.println("stored object value: " + value);
        });
        Maybe mapGetMaybe = map.get("mapKey");
        mapGetMaybe.subscribe(value -> {
            System.out.println("stored map value: " + value);
        });
        redisson.shutdown();
    }
}

文章写道这里,如有不足之处,欢迎补充评论。

如果你对java技术很感兴趣也可以一起交流学习,共同学习进步!

最近get了很多新知识,希望能帮到大家。需要详细的java架构思维导图路线也可以评论获取!

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。


名称栏目:Redis的异步,响应式和RxJava2接口-创新互联
本文来源:http://cdweb.net/article/dcecgp.html