redis-cell限流模块
Redis 4.0 提供了一个限流 Redis 模块,它叫 redis-cell。该模块也使用了漏斗算法,并
提供了原子的限流指令。有了这个模块,限流问题就非常简单了。
如何安装
- 模块文档:https://redis.io/modules
- redis-cell文档: https://github.com/brandur/redis-cell
- release版本:https://github.com/brandur/redis-cell/releases
下载
[root]# wget "https://github.com/brandur/redis-cell/releases/download/v0.2.4/redis-cell-v0.2.4-x86_64-unknown-linux-gnu.tar.gz"
[root@]# tar vxfz redis-cell-v0.2.4-x86_64-unknown-linux-gnu.tar.gz
加载
./redis-server ./../redis.conf --loadmodule /opt/cache/libredis_cell.so
如果无法启动,参见:https://www.jianshu.com/p/2e51af7c7728
使用
127.0.0.1:6379> cl.throttle user1 2 2 60
1) (integer) 0
2) (integer) 3
3) (integer) 2
4) (integer) -1
5) (integer) 30
127.0.0.1:6379> cl.throttle user1 2 2 60 2
1) (integer) 0
2) (integer) 3
3) (integer) 0
4) (integer) -1
5) (integer) 86
127.0.0.1:6379> cl.throttle user1 2 2 60
1) (integer) 1
2) (integer) 3
3) (integer) 0
4) (integer) 23
5) (integer) 83
-
参数释义
image.png - 答复释义
cl.throttle laoqian:reply 15 30 60 1)
(integer) 0 # 0 表示允许,1 表示拒绝 2)
(integer) 15 # 漏斗容量 capacity 3)
(integer) 14 # 漏斗剩余空间 left_quota 4)
(integer) -1 # 如果拒绝了,需要多长时间后再试(漏斗有空间了,单位秒) 5)
(integer) 2 # 多长时间后,漏斗完全空出来(left_quota==capacity,单位秒)
网友评论