您好,欢迎访问沃航(武汉)科技有限公司官方网站
一点一点学vart.x(七)
2019-06-22 14:47:16

这节课我就教教大家如何通过java的vert.x框架读写redis。redis是一个由C语言开发的高效缓存数据库,它用内存作为存储设备,写入与读出速度非常的快。

包括java在内的所有带有垃圾回收功能的开发语言,均存在一个叫做所谓的STW 问题(Stop The World),因为算法在标记时必须暂停整个程序,否则其他线程的代码可能会改变对象状态,从而可能把不应该回收的对象当做垃圾收集掉。

因此所有具有gc功能的开发语言,都不能定义太多的离散内存,如果需要存储很多小的内存单元,就需要使用redis了。

首先由于vert.x是一个异步io函数,其get方法是异步的。因此需要使用一个abstract类作为数据回调。

package REDIS;

public abstract class CallBack {
    public abstract void ReturnStr (String r);
}

然后写一个专门用户调用redis的方法类如下:

package REDIS;
import io.vertx.core.Vertx;
import io.vertx.redis.RedisClient;
import io.vertx.redis.RedisOptions;

public class Redis {

    private static RedisClient client = null;

    public static void Init(Vertx vertx) {
        client = RedisClient.create(vertx, new RedisOptions()
                .setHost("localhost"));
    }

    public static void set (String key, String value) {
        client.set(key, value, res -> {
            if (res.failed()) {
                System.out.println("Connection or Operation Failed " + res.cause());
            }
        });
    }

    public static void get(String key, CallBack r) {
        client.get(key, res -> {
            if (res.failed()) {
                System.out.println("Connection or Operation Failed " + res.cause());
            }
            r.ReturnStr(res.result());
        });
    }
}

主函数中调用Redis类并且设置set与get等方法:

import REDIS.CallBack;
import REDIS.Redis;
import io.vertx.core.Vertx;

public class Main {
    public static void main (String args[]) {
        System.out.println("Hello world");
        // Create an HTTP server which simply returns "Hello World!" to each request.
        Vertx vertx = Vertx.vertx();
        Redis.Init(vertx); // 初始化redis
        vertx.createHttpServer()
            .requestHandler(req -> {
                req.bodyHandler(body -> {
                    Redis.set("name", "jevian"); // 写redis数据
                    Redis.get("name", new CallBack() { // 读redis数据
                        @Override
                        public void ReturnStr(String res) {
                            System.out.println(res);
                        }
                    });
                    req.response()
                            .putHeader("content-type", "text/plain")
                            .putHeader("Access-Control-Allow-Origin", "*")
                            .end("mothod:" + req.method() + "    path:" + req.path() + "    body:" + body);
                });
            })
            .listen(8080, handler -> { 
                if (handler.succeeded()) {
                    System.out.println("create httpserver success");
                } else {
                    System.err.println("create httpserver fail");
                }
            });
    }
}

其中Redis类可以根据自己的需求,使用其他功能特性。

文章作者:沃航科技

联系我们
地址:
武汉市洪山区蓝晶国际7栋903
QQ:
932773931
电话:
027-59761089-806
手机:
13397158231
邮箱:
jevian_ma@worldflying.cn
×
物联网组态平台
试用账号:123456
试用密码:123456
如需测试更多功能或者有疑问可发送邮件至:jevian_ma@worldflying.cn
×
积木编程平台
试用方式:试用手机号码注册即可使用
如需测试更多功能或者有疑问可发送邮件至:jevian_ma@worldflying.cn