mirror of
https://github.com/qiurunze123/miaosha.git
synced 2023-11-19 22:41:03 +08:00
提交lua限流
This commit is contained in:
parent
7bc644a647
commit
ed68ca4b99
|
@ -64,6 +64,7 @@
|
||||||
| 022 |mysql主从复制思路及实操(未更新代码) |[解决思路](/docs/mysql-master-slave.md) |
|
| 022 |mysql主从复制思路及实操(未更新代码) |[解决思路](/docs/mysql-master-slave.md) |
|
||||||
| 023 |如何进行分库分表 |[解决思路](/docs/mysql-master-slave.md) |
|
| 023 |如何进行分库分表 |[解决思路](/docs/mysql-master-slave.md) |
|
||||||
| 024 |秒杀类似场景sql的写法注意事项有哪些?|[解决思路](/docs/mysql-master-slave.md) |
|
| 024 |秒杀类似场景sql的写法注意事项有哪些?|[解决思路](/docs/mysql-master-slave.md) |
|
||||||
|
| 025 |如何利用lua脚本进行原子性 -- 操作限流?|[解决思路](/docs/mysql-master-slave.md) |
|
||||||
|
|
||||||
#### [分布式系统发展历程(已更新)](/docs/fenbushi.md)
|
#### [分布式系统发展历程(已更新)](/docs/fenbushi.md)
|
||||||
#### [分布式系统](/docs/redis-code.md)
|
#### [分布式系统](/docs/redis-code.md)
|
||||||
|
|
|
@ -120,5 +120,17 @@
|
||||||
2. 原子操作,redis会将整个脚本作为一个整体执行,中间不会被其他命令插入。换句话说,编写脚本的过程中无需担心会出现竞态条件
|
2. 原子操作,redis会将整个脚本作为一个整体执行,中间不会被其他命令插入。换句话说,编写脚本的过程中无需担心会出现竞态条件
|
||||||
3. 复用性,客户端发送的脚本会永远存储在redis中,这意味着其他客户端可以复用这一脚本来完成同样的逻辑
|
3. 复用性,客户端发送的脚本会永远存储在redis中,这意味着其他客户端可以复用这一脚本来完成同样的逻辑
|
||||||
|
|
||||||
|
例子: 利用lua脚本进行电话号或则IP限流
|
||||||
|
KEYS[1] ARGV[1] ARGV[2] key 参数1 参数2
|
||||||
|
local num=redis.call('incr',KEYS[1])
|
||||||
|
if tonumber(num)==1 then
|
||||||
|
redis.call('expire',KEYS[1],ARGV[1])
|
||||||
|
return 1
|
||||||
|
elseif tonumber(num)>tonumber(ARGV[2]) then
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user