IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> redis内存占用分析和清理 -> 正文阅读

[大数据]redis内存占用分析和清理

1、分析内存占用情况

redis内存分析工具redis-rdb-tools安装部署
项目地址:?https://github.com/sripathikrishnan/redis-rdb-tools

安装部署
安装Python2.7
下载redis-rdb-tools
git clone https://github.com/sripathikrishnan/redis-rdb-tools.git
安装redis-rdb-tools
pip2.7 install ?python-lzf
cd redis-rdb-tools
python2.7 setup.py install

# 以json格式输出
> rdb --command json /var/redis/6379/dump.rdb

# 以json格式输出,模糊查找
> rdb --command justkeyvals --key "user.*" /var/redis/6379/dump.rdb

user003 fname Ron,sname Bumquist,
user001 fname Raoul,sname Duke,
user002 fname Gonzo,sname Dr,
user_list user003,user002,user001

# 查找确定键信息
> redis-memory-for-key -s localhost -p 6379 -a mypassword person:1

Key 			person:1
Bytes				111
Type				hash
Encoding			ziplist
Number of Elements		2
Length of Largest Element	8

# rdb文件解析并输出为csv
> rdb -c memory /var/redis/6379/dump.rdb --bytes 128 -f memory.csv
> cat memory.csv

database,type,key,size_in_bytes,encoding,num_elements,len_largest_element
0,list,lizards,241,quicklist,5,19
0,list,user_list,190,quicklist,3,7
2,hash,baloon,138,ziplist,3,11
2,list,armadillo,231,quicklist,5,20
2,hash,aroma,129,ziplist,3,11

#  输出top10的键信息
rdb -c memory  --largest=10  /app/redis/data/7000/dump.rdb

2、清理内存

使用 SCAN 和 Pipeline 命令删除

Redis 的大 Key 删除操作会导致 Redis 线程阻塞,网上关于如何删除大 Key 也有一些不少,只有通过 SCAN 扫出 Key 后一个个删除。

这里结合 pipeline 介绍更加高效的操作方法,通过 pipeline 来批量删除。

下面以每次扫出1000个 field 为例子,每次通过 pipeline 删除1000个 field 来删除一个大 Hash Key。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import redis

# 每次 SCAN 和删除 field 的数量,可以根据实际调高以提高效率
COUNT = 1000

# Redis 连接
conn = redis.StrictRedis(host='127.0.0.1', port=6379)

# 要删除的 Key 的名字
key_to_be_deleted = 'key_to_be_deleted'

# 参考函数
def del_key(redis_conn, hash_key, del_count):
    cursor = '0'
    while cursor != 0:
        pl = redis_conn.pipeline()
        cursor, data =  redis_conn.hscan(hash_key, cursor=cursor, count=del_count)
        for item in data.items():
            pl.hdel(hash_key, item[0])
        pl.execute()

def main():
    del_key(conn, key_to_be_deleted, COUNT)

if __name__ == '__main__':
    main()

删除string 类型的key

redis-cli -h 127.0.0.1 -p 6379 keys 'blk_1*' | xargs  redis-cli -h 127.0.0.1  -p 6379  del

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 23:28:20  更:2022-04-01 23:31:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 19:37:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码