基础原理Amazing Redis

Redis学习--理解内存

2019-04-09  本文已影响17人  何何与呵呵呵
内存消耗
info memory详细解释

当mem_fragmentation_ratio>1时,说明used_memory_rss-used_memory多出的部分内存并没有用于数据存储,而是被内存碎片所消耗,如果两者相差很大,说明碎片率严重。
当mem_fragmentation_ratio<1时,这种情况一般出现在操作系统把Redis内存交换(Swap)到硬盘导致,出现这种情况时要格外关注,由于硬盘速度远远慢于内存,Redis性能会变得很差,甚至僵死。

内存管理

1.用于缓存场景,当超出内存上限maxmemory时使用LRU等删除策略释放空间。
2.防止所用内存超过服务器物理内存。

服务器分配4个4GB的Redis进程

删除到达过期时间的键对象。
内存使用达到maxmemory上限时触发内存溢出控制策略。

1.删除过期键对象
惰性删除:惰性删除用于当客户端读取带有超时属性的键时,如果已经超过键设置的过期时间,会执行删除操作并返回空
定时任务删除:Redis内部维护一个定时任务,默认每秒运行10次(通过配置hz控制),采用了自适应算法,根据键的过期比例、使用快慢两种速率模式回收键.


定时任务删除过期键逻辑
内存优化
总结

1)Redis实际内存消耗主要包括:键值对象、缓冲区内存、内存碎片。
2)通过调整maxmemory控制Redis最大可用内存。当内存使用超出时,根据maxmemory-policy控制内存回收策略。
3)内存是相对宝贵的资源,通过合理的优化可以有效地降低内存的使用量,内存优化的思路包括:

上一篇下一篇

猜你喜欢

热点阅读