Skip to content

基于 Redis-Cell 模块的限流措施

#Redis #限流

Redis 在 4.0 之后提供了一个限流模块,叫 Redis-Cell,该模块使用了漏斗算法,并提供了原子的限流指令;

bash
cl.throttle pano:reply 15 30 60 1

1) (integer) 0		# 0表示允许 1表示拒绝
2) (integer) 15		# 漏斗容量 capacity
3) (integer) 14    	# 漏斗剩余空间 left_quota    
4) (integer) -1 	# 如果被拒绝了下次重试间隔(秒)
5) (integer) 2    	# 多长时间后,漏斗完全空出来

解释一下:

  • cl.throttle 是限流指令;
  • pano:reply 这个是 key,业务里可以放某种业务行为;
  • 15 指漏斗容量 capacity,也是一开始就可以使用的数量,之后才会被限流;
  • 30 60 前者指动作数量,后者指时间,结合起来就是限流频次,当前是 60s 内可以进行 30 个操作;
  • 1 可选参数,默认=1,可以不写,这里应该是每次漏水的数量,如果修改了,上一步的效率就会被影响;

学而时习之,不亦说乎?