不幸的是,redis-py 库似乎没有 Monitor 例程。我想阅读redis服务器收到的所有命令,过滤它们,然后记录我感兴趣的命令。有人知道如何做到这一点吗?
2988 次
2 回答
8
这是一些在 python 中实现监视器代码的最小代码。
笔记 :
- 我改编自 redis-py 中的 PubSub 类。见客户端.py
- 这不会解析响应,但这应该足够简单
- 不进行任何类型的错误处理
导入redis
班长():
def __init__(self, connection_pool):
self.connection_pool = 连接池
self.connection = 无
def __del__(self):
尝试:
self.reset()
除了:
经过
定义重置(自我):
如果self.connection:
self.connection_pool.release(self.connection)
self.connection = 无
def 监视器(自我):
如果 self.connection 为无:
self.connection = self.connection_pool.get_connection(
“监视器”,无)
self.connection.send_command("监视器")
返回 self.listen()
def parse_response(self):
返回 self.connection.read_response()
def 听(自我):
而真:
产生 self.parse_response()
如果 __name__ == '__main__':
pool = redis.ConnectionPool(host='localhost', port=6379, db=0)
监视器 = 监视器(池)
命令 = monitor.monitor()
对于 c 命令:
打印(c)
于 2012-05-05T18:24:46.183 回答
1
Now, the redis library already included the monitor support itself. https://github.com/andymccurdy/redis-py/blob/master/redis/client.py#L3422
于 2020-08-26T04:20:41.977 回答