遗憾的是,redis-py库好像没有Monitor例程。我想读取 redis 服务器收到的所有命令,过滤它们,然后记录我感兴趣的命令。有人知道如何执行此操作吗?
最佳答案
这里是一些在 python 中实现监控代码的最小代码。
注意:
- 我从 redis-py 中的 PubSub 类改编而来。参见 client.py
- 这不会解析响应,但应该足够简单
- 不做任何类型的错误处理
import redis class Monitor(): def __init__(self, connection_pool): self.connection_pool = connection_pool self.connection = None def __del__(self): try: self.reset() except: pass def reset(self): if self.connection: self.connection_pool.release(self.connection) self.connection = None def monitor(self): if self.connection is None: self.connection = self.connection_pool.get_connection( 'monitor', None) self.connection.send_command("monitor") return self.listen() def parse_response(self): return self.connection.read_response() def listen(self): while True: yield self.parse_response() if __name__ == '__main__': pool = redis.ConnectionPool(host='localhost', port=6379, db=0) monitor = Monitor(pool) commands = monitor.monitor() for c in commands : print(c)
关于python - 如何使用 redis-py 在 python 脚本中模拟 redis MONITOR 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10458146/