Redisson实现限流

1. 引入Redisson

参考: 这篇文章即可。

2. 使用RedissonClinet实现

代码如下:

java 复制代码
import org.redisson.api.RRateLimiter;
import org.redisson.api.RateIntervalUnit;
import org.redisson.api.RateType;
import org.redisson.api.RedissonClient;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * redis 限流管理器
 * @author xxx
 * @version 1.0
 * @date xxx
 */

@Service
public class RedisLimiterManager {
    @Resource
    private RedissonClient redissonClient;

    /**
     * 限流操作
     *
     * @param key 限流key
     * @param limit 指定时间内允许的请求数
     * @param ttl 指定时间
     * @param ttl message 限流的提示信息
     */
    public void doRateLimit(String key, int limit, int ttl, String message) {
        // 创建限流器
        RRateLimiter rateLimiter = redissonClient.getRateLimiter(key);
        rateLimiter.trySetRate(RateType.OVERALL, limit,
                ttl, RateIntervalUnit.SECONDS);
        // 获取令牌
        boolean result = rateLimiter.tryAcquire(1);
        if (!result){
            throw new RuntimeException(message);
        }
    }
}

3. 使用用限流

如下:

java 复制代码
// 限流, 一天只能访问10次, 被限流会抛异常
String limitKey = "prefix:" + loginUser.getId();
int limitTime = 24 * 60 * 60;
redisLimiterManager.doRateLimit(limitKey, 10, limitTime, "今天的请求次数为0");
相关推荐
二宝哥10 小时前
CentOS 7.9 系统下 Redis 5.0.4 单机安装与源码编译安装指南
redis·centos
ShiXZ21316 小时前
Redis docker-compose 部署指南
redis·docker·eureka
青山木18 小时前
Redis 缓存一致性全解:从 Cache Aside 到延迟双删、Canal+MQ 的进阶之路
java·数据库·redis·后端·缓存
YDS82919 小时前
大营销平台 —— 活动SKU库存扣减业务及其一致性处理
java·spring boot·redis·rabbitmq·ddd
爬也要爬着前进1 天前
redis主从搭建
数据库·redis·缓存
用户095367515832 天前
在系统的学习 redis 前的疑惑
redis·go
吴声子夜歌2 天前
Redis 3.x——集群故障转移
java·数据库·redis·集群
明豆2 天前
Redis 分布式缓存生产实战
redis·分布式·缓存
海兰2 天前
【高速缓存】RedisVL 指南:从向量搜索到 AI 应用落地
人工智能·redis
weixin_727535622 天前
双Token认证体系深度拆解:Spring Security + JWT + Redis
redis·spring·wpf