基于Redis的限流器的实现(示例讲解)

 更新时间:2017年12月28日 10:16:50   作者:秦霜  
下面小编就为大家分享一篇基于Redis的限流器的实现(示例讲解),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

1 概述

系统中的接口通常都有限流,比如 70次/秒 ,如何保证我们的接口的调用次数在超过第三方接口限流的时候快速失败呢?这时候就需要限流器了。下面是笔者用redis实现限流器的流程图。

2 代码

/**
 * 获取限流权限
 * @param key
 * @param millisecond 毫秒数
 * @param limitCount 限流次数
 * @return
 */
public static boolean getCurrentLimiting(String key, Long millisecond, Integer limitCount){
  try {
    boolean currentLimitingLock = RedisDistributeLockUtil.lock(key);
    if(currentLimitingLock){
      Long llen = RedisClient.llen(getCurrentLimitingRedisKey(key));
      if(llen < limitCount){
        RedisClient.lpush(getCurrentLimitingRedisKey(key), DateUtil.current(false) + "");
        return true;
      }else{
        Long lastTime = Long.parseLong(RedisClient.lindex(getCurrentLimitingRedisKey(key), -1));
        if((DateUtil.current(false) - lastTime) >= millisecond){
          RedisClient.lpush(getCurrentLimitingRedisKey(key), DateUtil.current(false) + "");
          RedisClient.ltrim(getCurrentLimitingRedisKey(key), 0, limitCount);
          return true;
        }
      }
    }
  }finally {
    RedisDistributeLockUtil.unlock(key);
  }
  return false;
}

以上这篇基于Redis的限流器的实现(示例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Redis3.2开启远程访问详细步骤

    Redis3.2开启远程访问详细步骤

    redis默认只允许本地访问,要使redis可以远程访问可以修改redis.conf
    2018-03-03
  • redis如何清理缓存

    redis如何清理缓存

    本文主要介绍了redis如何清理缓存,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • 使用宝塔在服务器上配置Redis的详细图文教程

    使用宝塔在服务器上配置Redis的详细图文教程

    这篇文章主要给大家介绍了关于使用宝塔在服务器上配置Redis的相关资料,包括下载和安装Redis,开放端口,修改配置文件以允许远程访问和设置密码,该过程对于理解Redis在项目部署中的配置提供了实用指导,需要的朋友可以参考下
    2024-11-11
  • Redis配置文件代码讲解

    Redis配置文件代码讲解

    在本篇文章里小编给大家整理的是一篇关于Redis配置文件的说明内容,需要的朋友们可以学习下。
    2020-03-03
  • redis5集群如何主动手工切换主从节点命令

    redis5集群如何主动手工切换主从节点命令

    这篇文章主要介绍了redis5集群如何主动手工切换主从节点命令,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • redis lua限流算法实现示例

    redis lua限流算法实现示例

    这篇文章主要为大家介绍了redis lua限流算法实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • Redis和MySQL保证双写一致性的问题解析

    Redis和MySQL保证双写一致性的问题解析

    Redis和MySQL的双写一致性指的是在同时使用缓存和数据库存储数据的时候,保证Redis和MySQL中数据的一致性,那么如何才能保证他们的一致性呢,下面小编就来为大家详细讲讲
    2023-11-11
  • redis过期key的删除策略介绍

    redis过期key的删除策略介绍

    这篇文章主要介绍了redis过期key的删除策略,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • 简介Lua脚本与Redis数据库的结合使用

    简介Lua脚本与Redis数据库的结合使用

    这篇文章主要介绍了简介Lua脚本与Redis数据库的结合使用,Redis是基于主存的高性能数据库,需要的朋友可以参考下
    2015-06-06
  • Windows系统安装redis数据库

    Windows系统安装redis数据库

    这篇文章介绍了Windows系统安装redis数据库的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03

最新评论