python3 统计redis中每个DB占用的内存大小

这篇具有很好参考价值的文章主要介绍了python3 统计redis中每个DB占用的内存大小。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        在一些业务中,会使用多个DB来缓存不同类型的业务数据,有时候redis占用内存过高,造成服务异常。

        redis可以通过dbsize命令来查看当前选择的DB的key的数量,有时候仅仅看key的数量可能还不能直观反映哪块业务数据占用内存多,redis也没有直接的命令可以查询每个DB占用的内存大小。

        这时候通过python开发一个脚本统计每个DB占用的内存大小,可以大致分析是哪些类型业务占用了过高内存。以下是一个统计redis内存并删除占用内存超过10kB的key的样例。

安装python3 redis依赖

pip3 install redis

复制保存为checkRedisMem.py,运行文章来源地址https://www.toymoban.com/news/detail-792951.html

python3 checkRedisMem.py
# -*- coding: utf-8 -*-
import redis
import random

# Connect to Redis server
r = redis.StrictRedis(host='127.0.0.1', port=6379, password='password')

# Get the number of databases
num_dbs = r.config_get('databases')['databases']

# Iterate over each database
for db_num in range(int(num_dbs)):
    r.select(db_num)  # Select the current database

    # Get all keys in the current database
    keys = r.keys('*')

    # Calculate memory usage for each key and sum them up
    # total_memory = sum(r.memory_usage(key) for key in keys)
    total_memory = 0
    delete_keys = 0
    dbsize = len(keys)
    for key in keys:
        mem = r.memory_usage(key)
        total_memory = total_memory + mem
        # 删除占用内存超过10kB的key
        if mem > 10*1024:
            mem = mem/1024
            delete_keys = delete_keys + 1
            #print(f"DB {db_num} {key}: {mem} kB, delete it!")
            r.delete(key)
        total_memory = total_memory / (1024*1024)
    print(f"DB {db_num}: delete {delete_keys} keys")
    print(f"DB {db_num}: {dbsize} keys, {total_memory} MB")

到了这里,关于python3 统计redis中每个DB占用的内存大小的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 优化Java内存过大的情况,通过启动参数控制java运行中程序的内存占用大小

    在生产服务运行中,如果在小服务器上Java如果不做任何处理,一个Java程序最少默认能达到200m左右。在1gb的服务器上如果多挂几个Java程序,会经常出现宕机的情况。所以要进行优化 -Xms 最小内存数 m为单位,参数后面不加空格,不加等于号直接写 –Xmx1m 最大内存数 m为单位,

    2024年02月09日
    浏览(62)
  • 2023-06-13:统计高并发网站每个网页每天的 UV 数据,结合Redis你会如何实现?

    2023-06-13:统计高并发网站每个网页每天的 UV 数据,结合Redis你会如何实现? 答案2023-06-13: 如果统计 PV (页面浏览量)那非常好办,可以考虑为每个网页创建一个独立的 Redis 计数器,并将日期添加为键(key)的后缀。当网页收到请求时,对应的计数器将被递增。对于每天的

    2024年02月08日
    浏览(89)
  • Redis降低内存占用(二)分片结构

    一、分区方法: 分片,也称为分区。Redis提供了多种分区实现方案: 1、哈希分区 2、区间分区 3、一致性哈希分区 4、虚拟分区 5、LUA脚本实现分片 二、

    2024年02月22日
    浏览(42)
  • Redis内存空间占用及避免数据丢失的方法

    在现代的互联网应用中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、会话管理和消息队列等场景。然而,Redis的内存资源是有限的,过多的内存占用可能会导致数据丢失。因此,对于项目中使用Redis的架构师来说,合理预估Redis内存空间的占用,并采取相应的措施

    2024年02月11日
    浏览(48)
  • python统计每个单词出现的次数

    编程要求 请按照函数的注释,补充程序中缺失部分语句,按要求实现如下程序功能:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬ word_frequency() 函数统计并以字典类型返回每个

    2024年02月11日
    浏览(46)
  • 力扣:117. 填充每个节点的下一个右侧节点指针 II(Python3)

    给定一个二叉树: 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为  NULL  。 初始状态下,所有 next 指针都被设置为  NULL  。 来源:力扣(LeetCode) 链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 示

    2024年02月07日
    浏览(44)
  • Python3.6统计模块statsmodels的安装教程及使用方法

    Python3.6统计模块statsmodels的安装教程及使用方法 如果你需要对数据进行深入的统计分析和建模,那么Python编程语言中的statsmodels模块会是你的不二之选。该模块提供了多种统计模型、工具和功能,用于进行统计建模、推断、预测以及数据探索。本文将为大家详细介绍Python3.6下

    2024年02月11日
    浏览(38)
  • python实现监控指定进程的CPU利用率、内存占用

            因为需要一直关注被测软件的CPU利用率和内存占用,人工记录十分麻烦,所以想做一个应用程序来代替手工记录。 思路: 1.弹窗,输入进程号 2.获取进程对象 3.日志保存在一个csv文件中,文件命名方式为:进程名+Process+进程号 4.文件第一行写入进程名,第二行表

    2023年04月12日
    浏览(44)
  • python使用迭代生成器yield减少内存占用的方法

    在python编码中for循环处理任务时,会将所有的待遍历参量加载到内存中。 其实这本没有必要,因为这些参量很有可能是一次性使用的,甚至很多场景下这些参量是不需要同时存储在内存中的,这时候就会用到本文所介绍的迭代生成器yield。 首先我们用一个例子来演示一下迭代

    2024年04月28日
    浏览(31)
  • 在python中实现使用迭代生成器yield减少内存占用的方法

    在python编码中for循环处理任务时,会将所有的待遍历参量加载到内存中。其实这本没有必要,因为这些参量很有可能是一次性使用的,甚至很多场景下这些参量是不需要同时存储在内存中的,这时候就会用到本文所介绍的迭代生成器yield。 首先我们用一个例子来演示一下迭代

    2024年02月11日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包