立即学习:https://edu.csdn.net/course/play/3365/56865?utm_source=blogtoedu

导出redis内存进行分析:

1.提取业务特点

2.了解业务瓶颈

3.发现业务Bug

 

分析可能会发现大key.

一般是离线分析,导出rdb文件。

redis-rdb-tools

 

学习笔记(01):Redis内存管理和优化-Redis内存管理和优化(下)

 

或者导到sqlite

 

在线内存分析:

Redis-cli -h host -p port -bigkeys

列出各种类型的bigkey

 

其它也有可能占用内存:

查看client占用内存,比如命令的缓存也用了大量内存;

 

 

最佳实践:

1. 选择正确的数据类型。

浮点数-> 整数

Id等的值优先使用整数而不是字符串

 

使用压缩列表(Hash):

学习笔记(01):Redis内存管理和优化-Redis内存管理和优化(下)

 

减少大Hash所占用空间。

 

 

优先使用Bigmap

 

HyperLogLog

 

避免大Key

(1) Json封装的Value使用Hash替代

(2)按日期,前缀等方式 拆成多个

(3)确保不会有无限增长的key(只有push没有pop操作的list等)

(4)可以定期对实例内存进行分析,找出大key进行优化

 

 

Scan命令替换keys

 

对大Key的操作(删除),要分批操作;

 

pipeline 命令批量发送。减少网络传输。

Lua脚本,原子性。

相关文章: