详解Redis内存管理机制和实现.docx
- 文档编号:7506363
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:3
- 大小:78.33KB
详解Redis内存管理机制和实现.docx
《详解Redis内存管理机制和实现.docx》由会员分享,可在线阅读,更多相关《详解Redis内存管理机制和实现.docx(3页珍藏版)》请在冰豆网上搜索。
详解Redis内存管理机制和实现
详解Redis内存管理机制和实现
来源关注程序员历小冰,
作者历小冰
Redis是一个基于内存的键值数据库,其内存管理是非常重要的。
本文内存管理的内容包括:
过期键的懒性删除和过期删除以及内存溢出控制策略。
最大内存限制
Redis使用maxmemory参数限制最大可用内存,默认值为0,表示无限制。
限制内存的目的主要有:
用于缓存场景,当超出内存上限maxmemory时使用LRU等删除策略释放空间。
防止所用内存超过服务器物理内存。
因为Redis默认情况下是会尽可能多使用服务器的内存,可能会出现服务器内存不足,导致Redis进程被杀死。
maxmemory限制的是Redis实际使用的内存量,也就是used_memory统计项对应的内存。
由于内存碎片率的存在,实际消耗的内存可能会比maxmemory设置的更大,实际使用时要小心这部分内存溢出。
具体Redis内存监控的内容请查看一文了解Redis内存监控和内存消耗。
Redis默认无限使用服务器内存,为防止极端情况下导致系统内存耗尽,建议所有的Redis进程都要配置maxmemory。
在保证物理内存可用的情况下,系统中所有Redis实例可以调整maxmemory参数来达到自由伸缩内存的目的。
内存回收策略
Redis回收内存大致有两个机制:
一是删除到达过期时间的键值对象;二是当内存达到maxmemory时触发内存移除控制策略,强制删除选择出来的键值对象。
删除过期键对象
Redis所有的键都可以设置过期属性,内部保存在过期表中,键值表和过期表的结果如下图所示。
当Redis保存大量的键,对每个键都进行精准的过期删除可能会导致消耗大量的CPU,会阻塞Redis的主线程,拖累Redis的性能,因此Redis采用惰性删除和定时任务删除机制实现过期键的内存回收。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 详解 Redis 内存 管理机制 实现