用Redis做QPS限制

  1. 通过set(final String key, final String value, final String nxxx, final String expx, final int time)
/**
 *
 * @param key
 * @param value
 * @param nxxx NX = 仅当key不存在时设置;XX = 仅当key存在时设置
 * @param expx EX = 秒;PX = 毫秒
 * @param time 过期时间
 * @return 设置成功返回“OK”
 */
public String set(final String key, final String value, final String nxxx, final String expx,
      final int time) {
    checkIsInMultiOrPipeline();
    client.set(key, value, nxxx, expx, time);
    return client.getStatusCodeReply();
}
  1. 通过过期时间和值加1
/**
 * 每分钟限制访问数
 */
private static final long limitPerMinute = 200;

public boolean limitQps(final String key) {
    if(redis.exists(key)) {
        long count = redis.incr(key);
        if(count > limitPerMinute) {
            return false;
        }
    } else {
        redis.setex(key, 60, "1");
    }
    return true;
}

你可能感兴趣的:(用Redis做QPS限制)