查看redis内存使用情况及总内存量

import redis

# 配置 Redis 主机和端口
redis_hosts =  [{"域名或ip1", "port": "端口号1"},
             {"域名或ip2", "port": "端口号2"},
            ]
all_used_port=[端口号1,端口号2]
# 转换字节为GB
def bytes_to_gb(bytes_value):
    return bytes_value / (1024 ** 3)

# 解析 nodes_info 数据
def parse_nodes_info(nodes_info):
    instances = []
    for address, node_data in nodes_info.items():
        if node_data['connected']:
            host, port_info = address.split(":")
            port = port_info.split("@")[0]
            instances.append((host, int(port)))
    return instances

# 获取Redis节点的内存信息并计算总内存
def get_memory_info_and_total(instances):
    total_system_memory_bytes = 0
    total_used_memory_bytes = 0
    all_port={}
    
    for host, port in instances:
        try:
            r = redis.StrictRedis(host=host, port=port)
            info = r.info("memory")
            instance_system_memory_bytes = info.get('total_system_memory', 0)
            instance_used_memory_bytes = info.get('used_memory', 0)
            
            if port not in all_port and port in all_used_port:
                total_system_memory_bytes += instance_system_memory_bytes
                all_port[port]=1
            total_used_memory_bytes += instance_used_memory_bytes
            
            instance_system_memory_gb = bytes_to_gb(instance_system_memory_bytes)
            instance_used_memory_gb = bytes_to_gb(instance_used_memory_bytes)
            
#             print(f"Instance: {host}:{port}")
#             print(f"Total System Memory: {instance_system_memory_gb:.2f} GB")
#             print(f"Used Memory: {instance_used_memory_gb:.2f} GB")
#             print(f"Memory Fragmentation Ratio: {info.get('mem_fragmentation_ratio', 'N/A')}")
#             print("-" * 40)
        except Exception as e:
            print(f"Could not connect to instance {host}:{port}")
            print(f"Error: {e}")
            print("-" * 40)
    
    total_system_memory_gb = bytes_to_gb(total_system_memory_bytes)/1.7 #除以大致的备份比,根据实际情况换算
    total_used_memory_gb = bytes_to_gb(total_used_memory_bytes)/2 #除以大致的备份比,根据实际情况换算

    
    print("Total Memory Information Across All Instances")
    print(f"Total System Memory: {total_system_memory_gb:.2f} GB")
    print(f"Total Used Memory: {total_used_memory_gb:.2f} GB")


# 遍历每个集群节点并获取实例信息
redis_hosts=redis_hosts[:1]
for cluster in redis_hosts:
    host = cluster["host"]
    port = cluster["port"]
    
    try:
        r = redis.StrictRedis(host=host, port=port)
        nodes_info = r.cluster("NODES")
        # 获取实例列表
        instances = parse_nodes_info(nodes_info)
        print("",len(instances))

        # 获取每个实例的内存信息并计算总内存
        get_memory_info_and_total(instances)
        
        
    except Exception as e:
        print(f"Could not connect to cluster node {host}:{port}")
        print(f"Error: {e}")
        print("-" * 40)

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值