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