redis lua实现频次限制,超频的不加1
时间: 2023-08-18 09:06:11 浏览: 154
Golang使用lua脚本实现redis原子操作
5星 · 资源好评率100%
可以使用以下的 Redis Lua 脚本实现频次限制:
```
local key = KEYS[1]
local limit = tonumber(ARGV[1])
local current = tonumber(redis.call('get', key) or "0")
if current < limit then
redis.call('incr', key)
return 1
else
return 0
end
```
假设你要对某个键执行频次限制,那么你可以将这个键的名称作为 KEYS 数组的第一个元素,将频次限制值作为 ARGV 数组的第一个元素来调用这个脚本。
当你调用这个脚本时,它会先尝试从 Redis 中获取当前键对应的值,然后将这个值解析为一个数字。如果这个数字小于限制值,那么它会将键的值加 1 并返回 1,否则它会直接返回 0。
这个脚本使用了 Redis 的原子性操作,因此可以保证在并发情况下,限制的频次不会被超过。
阅读全文