前言
我有一个朋友, 在我刚发完上面那篇限流功能实现之后问我, 为啥没有写用python调用redis-cell的方法, 在网上也没有找见案例, 我瞅瞅还真是, 机会来了, 可以水一篇文章
其实实现也很简单, 只不过因为这个要用到reids-cell插件, 用的人不是很多, 所以官方没有提供对应的sdk而已, 但是, 上帝关了一扇门, 就一定会在给你留一扇窗, 毕竟都得恰饭的嘛
安装过程就不写了啊, 网上教程太多了, 自己玩的话可以看我上篇限流文章, 有用docker部署redis-cell的教程
正文
写个连接redis的脚本, 随便找个命令跳进redis源码(redis/client.py),
你就会发现所有的命令执行都调用的是self.execute_command 这个方法,看看这个方法里面干了什么
就是发送执行命令给redis服务端, 这不就好办了, 我直接发送CL.THROTTLE 这个命令不就行, 而且也有提供了主动调用execute_command的sdk, 理论上是这样, 行不行还得试一下
import redis
client = redis.Redis(host="127.0.0.1", port=6379)
print(client.execute_command('CL.THROTTLE', "user:api", 15, 10, 20, 5))
# 返回 [0, 16, 11, -1, 10]
答案是可以的, 前提是必须需要安装好redis-cell插件啊, 不然的话命令也执行不了