是用python脚本清理reids连接

高佳丰 / 2024-10-09 / 原文

背景:

  测试环境的redis不知道咋回事突然无法连接,服务器登录查了一下发现连接数用完了。研发说雨女无瓜,测试环境删了没事,正事要紧赶紧恢复。得嘞!

> info clients
# Clients
connected_clients:9997  # 连接中的数量
client_recent_max_input_buffer:54366
client_recent_max_output_buffer:0
blocked_clients:57  # 阻塞中的客户端数量

再查看一下具体的信息,发现确实很多客户端都存在很久了(单位是秒),所以清一下。

 以下是python清理脚本

import redis


def get_redis_connection_info():
    r = redis.Redis(host='192.168.1.33', port=6379, password='123456AAA')
    info = r.info('clients')
    # 打印当前客户端整体情况
    print(info)
    # 获取连接列表
    client_list = r.execute_command('CLIENT LIST')
    # 遍历删除连接,空闲时间大于一天的删除
    for conn in client_list:
        idle_time = int(conn.get('idle'))
        if idle_time > 86400:
            conn_id = conn.get('id')
            r.execute_command(f'CLIENT KILL ID {conn_id}')

    r.close()


if __name__ == "__main__":
    get_redis_connection_info()

 执行完再查看一下:

 虚浮。。。