阅读 113

Redis 实现单位时间内限制频率功能

1.使用场景

1.重要日志每小时触发次数。 2.限制登录次数。 3.分布式部署情况下的上述情况...

2.代码

示例中为限制1小时内15次

/**  * 每个人每小时限制触发次数  */ private final int LOCK_TIMES = 15; // 自定义Key String key = "Ltz:" + sid; // 获取已触发次数 String sendUser = redisTemplate.opsForValue().get(key); // 为空,说明之前没有触发过 if (ObjectUtil.isEmpty(sendUser)) {     // 空,说明是第一次,写入1,并且设置过期时间(1小时)     redisTemplate.opsForValue().set(key, "1", 1, TimeUnit.HOURS); } else {     // 后续发送     if (Integer.parseInt(sendUser) >= LOCK_TIMES) {         // 超过限制次数         // TODO     }     redisTemplate.opsForValue().increment(key); } 复制代码

3.一个

使用redisTemplate时,需要在使用时,注入RedisTemplate<String, String> redisTemplate

如果使用RedisTemplate<String, Object>会报如下错。
ERR value is not an integer or out of range


作者:LitongZero
链接:https://juejin.cn/post/7025887047055310856


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐