zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

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

Redis 实现 基于 示例 讲解 限流
2023-06-13 09:19:50 时间

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的限流器的实现(示例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题

本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 基于Redis的限流器的实现(示例讲解)