首页 > 数据库 >python监控redis demo

python监控redis demo

时间:2023-08-18 15:45:18浏览次数:38  
标签:aof used last python demo redis mem memory

下载aioredis 为了提升性能我们使用一部redis

pip install aioredis

demo:

import asyncio
import aioredis
# 每隔10s获取redis信息


async def monitor_redis(host, port, interval):
    # 建立异步Redis连接
    redis_uri = f"redis://{host}:{port}"
    redis = await aioredis.from_url(redis_uri, decode_responses=True)

    while True:
        try:
            # 获取连接数和内存使用信息
            info = await redis.info()
            print(info)  # 打印监控信息
        except aioredis.RedisError as e:
            await redis.close()
            print("Error connecting to Redis:", e)

        # 等待指定的时间间隔
        await asyncio.sleep(interval)


async def main():
    redis_servers = [
        {"host": "localhost", "port": 6379},
        # 添加更多的Redis服务器信息
    ]
    monitoring_interval = 10  # 监控间隔(秒)

    tasks = []
    for server in redis_servers:
        task = asyncio.create_task(monitor_redis(server["host"], server["port"], monitoring_interval))
        tasks.append(task)

    await asyncio.gather(*tasks)


if __name__ == "__main__":
    asyncio.run(main())
{'redis_version': '5.0.9', 'redis_git_sha1': '9414ab9b', 'redis_git_dirty': 0, 'redis_build_id': '25845e7feb545d77', 'redis_mode': 'standalone', 'os': 'Windows  ', 'arch_bits': 64, 'multiplexing_api': 'WinSock_IOCP', 'atomicvar_api': 'pthread-mutex', 'process_id': 4248, 'run_id': '258f17c72776228a0c943ae0a1aa928191c76f39', 'tcp_port': 6379, 'uptime_in_seconds': 112002, 'uptime_in_days': 1, 'hz': 10, 'configured_hz': 10, 'lru_clock': 14622326, 'executable': 'D:\\Redis\\"d:\\redis\\redis-server.exe"', 'config_file': 'D:\\Redis\\redis.windows-service.conf', 'connected_clients': 1, 'client_recent_max_input_buffer': 2, 'client_recent_max_output_buffer': 0, 'blocked_clients': 0, 'used_memory': 757704, 'used_memory_human': '739.95K', 'used_memory_rss': 694808, 'used_memory_rss_human': '678.52K', 'used_memory_peak': 757704, 'used_memory_peak_human': '739.95K', 'used_memory_peak_perc': '100.00%', 'used_memory_overhead': 715590, 'used_memory_startup': 665136, 'used_memory_dataset': 42114, 'used_memory_dataset_perc': '45.50%', 'allocator_allocated': 1150072, 'allocator_active': 322961408, 'allocator_resident': 486539264, 'total_system_memory': 0, 'total_system_memory_human': '0B', 'used_memory_lua': 37888, 'used_memory_lua_human': '37.00K', 'used_memory_scripts': 0, 'used_memory_scripts_human': '0B', 'number_of_cached_scripts': 0, 'maxmemory': 209715200, 'maxmemory_human': '200.00M', 'maxmemory_policy': 'noeviction', 'allocator_frag_ratio': 280.82, 'allocator_frag_bytes': 321811336, 'allocator_rss_ratio': 1.51, 'allocator_rss_bytes': 163577856, 'rss_overhead_ratio': 0.0, 'rss_overhead_bytes': -485844456, 'mem_fragmentation_ratio': 1.0, 'mem_fragmentation_bytes': 0, 'mem_not_counted_for_evict': 0, 'mem_replication_backlog': 0, 'mem_clients_slaves': 0, 'mem_clients_normal': 49950, 'mem_aof_buffer': 0, 'mem_allocator': 'jemalloc-5.2.1', 'active_defrag_running': 0, 'lazyfree_pending_objects': 0, 'loading': 0, 'rdb_changes_since_last_save': 0, 'rdb_bgsave_in_progress': 0, 'rdb_last_save_time': 1692231924, 'rdb_last_bgsave_status': 'ok', 'rdb_last_bgsave_time_sec': -1, 'rdb_current_bgsave_time_sec': -1, 'rdb_last_cow_size': 0, 'aof_enabled': 0, 'aof_rewrite_in_progress': 0, 'aof_rewrite_scheduled': 0, 'aof_last_rewrite_time_sec': -1, 'aof_current_rewrite_time_sec': -1, 'aof_last_bgrewrite_status': 'ok', 'aof_last_write_status': 'ok', 'aof_last_cow_size': 0, 'total_connections_received': 7, 'total_commands_processed': 9, 'instantaneous_ops_per_sec': 0, 'total_net_input_bytes': 200, 'total_net_output_bytes': 25132, 'instantaneous_input_kbps': 0.0, 'instantaneous_output_kbps': 0.0, 'rejected_connections': 0, 'sync_full': 0, 'sync_partial_ok': 0, 'sync_partial_err': 0, 'expired_keys': 0, 'expired_stale_perc': 0.0, 'expired_time_cap_reached_count': 0, 'evicted_keys': 0, 'keyspace_hits': 0, 'keyspace_misses': 0, 'pubsub_channels': 0, 'pubsub_patterns': 0, 'latest_fork_usec': 0, 'migrate_cached_sockets': 0, 'slave_expires_tracked_keys': 0, 'active_defrag_hits': 0, 'active_defrag_misses': 0, 'active_defrag_key_hits': 0, 'active_defrag_key_misses': 0, 'role': 'master', 'connected_slaves': 0, 'master_replid': 'a28318958e19a47d60009b7f5604c77d4297909a', 'master_replid2': 0, 'master_repl_offset': 0, 'second_repl_offset': -1, 'repl_backlog_active': 0, 'repl_backlog_size': 1048576, 'repl_backlog_first_byte_offset': 0, 'repl_backlog_histlen': 0, 'used_cpu_sys': 3.578125, 'used_cpu_user': 23.96875, 'used_cpu_sys_children': 0.0, 'used_cpu_user_children': 0.0, 'cluster_enabled': 0, 'db0': {'keys': 1, 'expires': 0, 'avg_ttl': 0}, 'db1': {'keys': 5, 'expires': 0, 'avg_ttl': 0}, 'db3': {'keys': 1, 'expires': 0, 'avg_ttl': 0}}

标签:aof,used,last,python,demo,redis,mem,memory
From: https://www.cnblogs.com/yangyucai/p/17640678.html

相关文章

  • python 利用imagezmq实现图片传输
    1.需求背景由于项目需求,需要在一个网页显示9个摄像头过算法的实时画面,项目初期,拟用ffmpeg实现二次推流过算法,后期由于ffmpeg仅能用于命令行命令,而且不易实现音频同步,故而使用ffmpeg进阶版pyav实现,后因pyav太占用服务器CPU性能,升级为将视频流的每一帧转为图片存入redis,前端实时从......
  • 使用 OpenCV Python 检测和可视化两个图像之间的差异
    使用OpenCVPython检测和可视化两个图像之间的差异转自:使用OpenCVPython检测和可视化两个图像之间的差异-Glasshost如果您需要比较两个图像并确定它们之间的差异,OpenCVPython提供了一种简单有效的方法来完成此任务。本指南将向您展示如何使用OpenCVPython检测和可视......
  • 必备Python代码段
    1.反转字符串以下代码使用Python切片操作来反转字符串。#Reversingastringusingslicingmy_string="ABCDE"reversed_string=my_string[::-1]print(reversed_string)#Output#EDCBA2.使用标题类(首字母大写)以下代码可用于将字符串转换为标题类。这是通过使用字符串类中......
  • python使用netmiko连接交换机绑定mac
    环境背景python3.8,华为交换机每次手动登录交换机再进行绑定操作,太过机械化啊,本着懒人原则,写一个脚本真不是事情脚本fromnetmikoimportConnectHandlerimporttimedefbing_mac(mac):sw_ip='10.10.10.10'#交换机ipusername='admin'#交换机账号......
  • Python打包时的MANIFEST.in如何使用
    MANIFEST.in文件用于控制在Python包的源码分发中应该包含哪些文件和目录。这对于包含在源码分发中但不是Python源代码文件的文件(如文档、配置文件、数据文件等)特别有用。以下是MANIFEST.in中的主要指令及其描述:include:包含匹配指定模式的文件。includeexample.txt......
  • (一)Qt与Python—PySide的简介及安装
    目录1.Pyside的简介2.pyside的安装3.pyside的Helloworld程序4.参考文献及网站连接1.Pyside的简介​PySide(在本文中指代PySide2和PySide6)是一个Python的图形化界面(GUI)库,由C++版的Qt开发而来,在用法上基本与C++版没有特别大的差异。PySide是一个python绑定的跨平台图形化......
  • Redis扩容与一致性Hash算法解析
    推荐阅读AI文本OCR识别最佳实践AIGamma一键生成PPT工具直达链接玩转cloudStudio在线编码神器玩转GPUAI绘画、AI讲话、翻译,GPU点亮AI想象空间资源分享「java、python面试题」来自UC网盘app分享,打开手机app,额外获得1T空间https://drive.uc.cn/s/2aeb6c2dcedd4AIGC资料......
  • python初阶语法
    python基础语法长文警告!!!本文适合初学py的小白阅读(根据需要进行跳转)。输出函数print()#输出数字print(98.5)#输出字符串print("Hello,clovershrub")print('hello,world')#输出表达式print(3+1)#将数据输出文件中,注意点,1.所指定的盘存在,2.使用file=fpfp=open('D:......
  • Python 矢量数据库和矢量索引:构建 LLM 应用程序
    推荐:使用NSDT场景编辑器助你快速搭建可二次编辑的3D应用场景由于使用其硬件创建的生成式AI应用程序,Nvidia经历了显着的增长。另一项软件创新,矢量数据库,也正在乘着生成式人工智能的浪潮。开发人员正在向量数据库上用Python构建AI驱动的应用程序。通过将数据编码为向量,他们可以利......
  • Python字符串定义的三种方法!
    字符串是Python编程语言中的基本数据类型,也是Python编程中非常重要的数据类型之一。在Python中,我们可以通过三种不同的方式来定义字符串,分别是:单引号、双引号、三引号,接下来是具体的内容介绍。1、使用单引号在Python中,使用单引号来定义字符串是最基本的方式。单引号用......