这节课我就教教大家如何通过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类可以根据自己的需求,使用其他功能特性。
文章作者:沃航科技