2

不幸的是,redis-py 库似乎没有 Monitor 例程。我想阅读redis服务器收到的所有命令,过滤它们,然后记录我感兴趣的命令。有人知道如何做到这一点吗?

4

2 回答 2

8

这是一些在 python 中实现监视器代码的最小代码。

笔记 :

  1. 我改编自 redis-py 中的 PubSub 类。见客户端.py
  2. 这不会解析响应,但这应该足够简单
  3. 不进行任何类型的错误处理
导入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 回答