Vert.x 使用Redis

1,937 阅读1分钟
Redis

首先安装Redis,网上有很多教程,不多说了,说一下Redis的配置文件,让其可以在外网访问 redis.conf

# 设置密码
requirepass xxxx 
# 把下面这一行注释掉
bind 127.0.0.1
# 由 yes 改为 no
protected-mode no

重启 redis

./redis-server redis.conf
Vert.x

pom文件中添加Vert.x Redis依赖

<dependency>
     <groupId>io.vertx</groupId>
    <artifactId>vertx-redis-client</artifactId>
     <version>3.4.1</version>
</dependency>

Demo.java

public class Demo extends AbstractVerticle {

  private static final Logger logger = LogManager.getLogger(Demo.class);
  private RedisClient redisClient;

  @Override
  public void start() throws Exception {
    RedisOptions config = new RedisOptions().setHost("xxx.xxx.xxx").setPort(6379).setAuth("password");
    redisClient = RedisClient.create(vertx, config);

    Router router = Router.router(vertx);
    router.route().handler(BodyHandler.create());
    router.get("/red").handler(this::queryRedis);

    vertx.createHttpServer().requestHandler(router::accept).listen(8081, r -> {
      if (r.succeeded()) {
        logger.info("服务启动成功,端口 8081");
      } else {
        logger.error("服务启动失败,error :" + r.cause().getMessage());
      }
    });
  }

private void queryRedis(RoutingContext routingContext) {
    redisClient.get("sweet", res -> {
      if (res.succeeded()) {
        routingContext.response().end(Json.encodePrettily(res.result()));
      }else {
        logger.error(res.cause().getMessage());
        res.cause().printStackTrace();
        routingContext.response().setStatusCode(500).end();
      }
    });
  }

public static void main(String[] args) {
    Runner.runExample(Demo.class);
  }
}