首页 > 数据库 >基于Redis的简单漏桶算法

基于Redis的简单漏桶算法

时间:2023-12-29 21:44:59浏览次数:23  
标签:writeLock return String Redis FALSE 算法 Boolean key 漏桶

下列代码是限制每秒10QPS的简单算法,需要修改频率请修改Duration.ofMillis(100)

public class LimitationManage {
    private static final String VALUE = "A";


    @Resource
    private RedissonClient redissonClient;


    public Boolean tryAcquire(String key) {
        try {
            RBucket<String> rBucket = redissonClient.getBucket(key);
            if (rBucket.get() != null) {
                return Boolean.FALSE;
            } else {
                String lockStr = "LOCK:" + key;
                RReadWriteLock rReadWriteLock = redissonClient.getReadWriteLock(lockStr);
                RLock writeLock = rReadWriteLock.writeLock();
                if (writeLock.tryLock(0, 1, TimeUnit.SECONDS)) {
                    boolean absent = rBucket.setIfAbsent(VALUE, Duration.ofMillis(100));
                    if (!absent) {
                        return Boolean.FALSE;
                    }
                } else {
                    return Boolean.FALSE;
                }
                if (writeLock.isLocked()) {
                    if (writeLock.isHeldByCurrentThread()) {
                        writeLock.unlock();
                    }
                }
            }
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        return Boolean.TRUE;
    }
}

最后编辑时间:2023年12月29日21:37:27

标签:writeLock,return,String,Redis,FALSE,算法,Boolean,key,漏桶
From: https://www.cnblogs.com/tothk/p/17935735.html

相关文章

  • RSA算法学习
    RSA算法学习介绍:RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。RSA是1977年由罗纳德·李维斯特(RonRivest)、阿迪·萨莫尔(AdiShamir)和伦纳德·阿德曼(LeonardAdleman)一起提出的。RSA就是他们三人姓氏开头字母拼在一起组成的。RSA......
  • 3大平台流量算法机制
    3大主流平台,【抖音】【小红书】【视频号】的流量算法底层逻辑和优化建议!......
  • 华为云耀云服务器L实例-微人事前后端分离人力资源管理系统-Redis配置
     华为云耀云服务器L实例-微人事前后端分离人力资源管理系统-Redis配置   产品官网:https://www.huaweicloud.com/product/hecs-light.html 项目源代码地址:https://github.com/lenve/vhr  今天我们采用可靠更安全、智能不卡顿、价优随心用、上手更简单、管理特......
  • 区域人数超员AI算法模型的应用介绍
    视频AI智能分析技术已经深入到人类生活的各个角落,与社会发展的方方面面紧密相连。从日常生活中的各种场景,如人脸识别、车牌识别,到工业生产中的安全监控,如工厂园区的翻越围栏识别、入侵识别、工地的安全帽识别、车间流水线产品的品质缺陷AI检测等,AI智能分析都发挥着不可或缺的作用。......
  • 方案:智能分析网关V4区域人数超员AI算法模型的应用场景介绍
    视频AI智能分析技术已经深入到人类生活的各个角落,与社会发展的方方面面紧密相连。从日常生活中的各种场景,如人脸识别、车牌识别,到工业生产中的安全监控,如工厂园区的翻越围栏识别、入侵识别、工地的安全帽识别、车间流水线产品的品质缺陷AI检测等,AI智能分析都发挥着不可或缺的作用......
  • 文心一言 VS 讯飞星火 VS chatgpt (167)-- 算法导论13.1 7题
    七、用go语言,试描述一棵含有n个关键字的红黑树,使其红色内部结点个数与黑色内部结点个数的比值最大。这个比值是多少?该比值最小的树又是怎样呢?比值是多少?文心一言:红黑树是一种自平衡的二叉查找树,它满足以下性质:每个节点或是红色,或是黑色。根节点是黑色。每个叶节点(NIL或空节......
  • day02 代码随想录算法训练营 977. 有序数组的平方
    题目:977. 有序数组的平方我的感悟:这道题,仔细观察,平方后两头的大。用双指针,取两头,放到新的数组里。新数组要求排序所以,新的数组从后往前放理解难点:无他,多练习。代码难点:无总结概括:双指针代码示例:classSolution:defsortedSquares(self,nums:List[in......
  • day01 代码随想录算法训练营 27. 移除元素
    题目:27.移除元素感悟:用快慢指针。本题是要原地删除。而删除这个行为在真实的计算机的数组里,是覆盖。所以,就用两个指针,(人)一个跑的快,一个跑的慢。他们身上带了个对讲机。跑的快的那个人负责检测后面的数字符合要求不,比如,要不等于3的,遇到一个2,告诉跑的慢的说2符合要求。遇......
  • 【GC】Java中常见的垃圾回收算法
    Java中常见的垃圾回收算法有以下几种:标记-清除算法(Mark-and-Sweep):该算法分为两个阶段,标记阶段和清除阶段。在标记阶段,垃圾回收器会遍历堆中的对象,并标记所有可达对象。在清除阶段,垃圾回收器会遍历堆中的对象,清除所有未被标记的对象。复制算法(Copying):该算法将堆分成两个区域......
  • 【算法】Java版
    二分查找算法二分查找算法(BinarySearchAlgorithm)是一种在有序数组中查找特定元素的搜索算法。该算法的基本思想是将数组从中间分成两部分,然后与目标元素进行比较,进而确定目标元素位于左半部分还是右半部分,不断缩小搜索范围,直到找到目标元素或确定目标元素不存在。以下是一个使......