python - 如何使用 redis-py 在 python 脚本中模拟 redis MONITOR 命令?

标签 python redis

遗憾的是,redis-py库好像没有Monitor例程。我想读取 redis 服务器收到的所有命令,过滤它们,然后记录我感兴趣的命令。有人知道如何执行此操作吗?

最佳答案

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

注意:

  1. 我从 redis-py 中的 PubSub 类改编而来。参见 client.py
  2. 这不会解析响应,但应该足够简单
  3. 不做任何类型的错误处理
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/

相关文章:

redis - 用于保持访问配置数据 <10 GB 并从 Flink 流应用程序访问每条记录的最佳分布式缓存?

redis - 使用 Redis 命令 incr 和 expire 时的竞争条件

python - 使用python读取xbrl

java - SpringSession DefaultCookieSerializer.setJvmRoute 有效,但 HttpServletRequest 没有所需的 jvmRoute

python - 无法在 Windows 上安装 python

python - Matplotlib slider 颜色变化

javascript - 从Redis返回数据仅在第二次有效

c - hiredis 报错 1 REDIS_ERR_IO 没有那个文件或目录

python - 遍历数组两次(笛卡尔积)但只考虑一半的元素

python - 查询长列表