当前位置: 首页 > article >正文

如何使用redis做限流(golang实现小样)

在实际开发中,限流(Rate Limiting)是一种保护服务、避免接口被恶意刷流的常见技术。常用的限流算法有令牌桶、漏桶、固定窗口、滑动窗口等。由于Redis具备高性能和原子性操作,常常被用来实现分布式限流。

下面给出使用Golang结合Redis实现简单限流的几种常见方式(以“固定窗口计数”和“滑动窗口”为例)。使用的Go Redis库为go-redis。


1. 固定窗口计数(Fixed Window Counter)

在单位时间窗口(如1秒、1分钟)内计数,超过阈值则限流。

伪代码思路:

  1. 用Redis的INCR自增某个key记录当前窗口内的访问次数。
  2. 使用EXPIRE设置Key过期时间为窗口大小。
  3. 如果计数超过阈值,说明被限流。

Go代码示例:

package mainimport ("context""fmt""github.com/redis/go-redis/v9""time"
)var ctx = context.Background()func FixedWindowRateLimit(client *redis.Client, key string, limit int, window time.Duration) (bool, error) {// 每次请求自增计数cnt, err := client.Incr(ctx, key).Result()if err != nil {
http://www.lryc.cn/news/2385830.html

相关文章:

  • lanqiaoOJ 4185:费马小定理求逆元
  • 深度剖析ZooKeeper
  • 深入解析 MySQL 中的 SHOW_ROUTINE 权限
  • 电脑网络如何改ip地址?ip地址改不了怎么回事
  • 打开小程序提示请求失败(小程序页面空白)
  • C语言速成12之指针:程序如何在内存迷宫里找宝藏?
  • 一张纸决定的高度
  • IP查询基础介绍
  • 常见的gittee开源项目推荐
  • 日常效率工具【Tools】【持续更新】
  • PyTorch中TensorBoardX模块与torch.utils.tensorboard模块的对比分析
  • 数据结构与算法——链式二叉树
  • Android12 launcher3修改App图标白边问题
  • 【iOS】分类、扩展、关联对象
  • 内蒙古工程系列建设工程技术人才评审条件
  • Elasticsearch超详细安装部署教程(Windows Linux双系统)
  • 第十六章:数据治理之数据架构:数据模型和数据流转关系
  • 目标检测DINO-DETR(2023)详细解读
  • 基于 STM32 的蔬菜智能育苗系统硬件与软件设计
  • 实现一个带有授权码和使用时间限制的Spring Boot项目
  • SGlang 推理模型优化(PD架构分离)
  • TuyaOpen横空出世!涂鸦智能如何用开源框架重构AIoT开发范式?
  • Vue语法【2】
  • 2.2.1 05年T2
  • 每日c/c++题 备战蓝桥杯(修理牛棚 Barn Repair)
  • 6个月Python学习计划 Day 3
  • Linux虚拟文件系统(2)
  • 【数据结构】栈和队列(上)
  • 科技赋能·长效治理|无忧树建筑修缮渗漏水长效治理交流会圆满举行!
  • 【闲聊篇】java好丰富!