Redis 笔记之:内存调优
Redis 的 memory info
Redis 的内存使用状况可以使用info memory
来获取。
需要重点关注的值是
used_memory_rss
(用于存储消耗的物理内存),used_memory
(用于存储消耗的内存= 物理内存 + 硬盘),以及他们的比值mem_fragmentation_ratio(used_memory_rss/used_memory)
。
used_memory_rss
或者used_memory
很高时,意味着当前的 Redis 实例正在蚕食系统中的内存/硬盘资源。
当这个mem_fragmentation_ratio
大于 1 的时候,意味着用于存储消耗的物理内存超过了 Redis 自己掌控的内存值,也就意味着当前有些未能回收的内存泄漏或者碎片。
当这个mem_fragmentation_ratio
小于 1 的时候,这意味着有一部分用于存储的内存,实际上是在使用虚拟内存中的 swap 空间,此时 Redis 的性能会非常差。
Redis 的内存轮廓
memory_used = 进程自身消耗的内存 + 存储对象的内存(大头) + buffer 内存
memory_used_rss - memory_used = 内存碎片
每次 Redis 构造 k-v 的时候,总好创建 key 对象和 value 对象,内存消耗 = sizeof(key) + sizeof(value)
。特别地,bitmap 和 hyperloglog 是由字符串实现的,GEO 是由 zset 实现的。
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.