All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.edgar615.util.vertx.redis.RedisDeletePattern Maven / Gradle / Ivy

The newest version!
package com.github.edgar615.util.vertx.redis;

import io.vertx.core.AsyncResult;
import io.vertx.core.Future;
import io.vertx.core.Handler;
import io.vertx.core.json.JsonArray;
import io.vertx.redis.RedisClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 先通过keys查找对应的键值,然后再删除它们.
 * Created by edgar on 17-5-28.
 */
public class RedisDeletePattern {

  private static final Logger LOGGER = LoggerFactory.getLogger(RedisDeletePattern.class);

  private final RedisClient redisClient;

  private RedisDeletePattern(RedisClient redisClient) {
    this.redisClient = redisClient;
  }

  public static RedisDeletePattern create(RedisClient redisClient) {
   return new RedisDeletePattern(redisClient);
  }

  public void deleteByPattern(String key, Handler> handler) {
    redisClient.keys(key, ar -> {
      if (ar.failed()) {
        handler.handle(Future.failedFuture(ar.cause()));
        return;
      }
      JsonArray result = ar.result();
      if (result == null || result.isEmpty()) {
        LOGGER.debug("no keys:{}", key);
        handler.handle(Future.succeededFuture(0l));
        return;
      }
      redisClient.delMany(result.getList(), ar2 -> {
        if (ar2.succeeded()) {
          LOGGER.debug("delete keys:{}", result.encode());
          handler.handle(Future.succeededFuture(ar2.result()));
        } else {
          LOGGER.warn("failed delete keys->{}, error->{}", result, ar2.cause());
          handler.handle(Future.failedFuture(ar2.cause()));
        }
      });
    });
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy