从客户端:主节点会为每个从节点单独建立一条连接用于命令复制,默认配置是:client-output-buffer-limit slave 256mb 64mb 60。当主从节点之间网络延迟较高或主节点挂载大量从节点时这部分内存消耗将占用很大一部分,建议主节点挂载的从节点不要多于2个,主从节点不要部署在较差的网络环境下,如异地跨机房,防止复制客户端连接缓慢造成溢出。
订阅客户端:当使用发布订阅功能时,连接客户端使用单独的输出缓冲区,默认配置为:client-output-buffer-limit pubsub 32mb 8mb 60,当订阅服务的消息生产快于消费速度时,输出缓冲区会产生积压造成输出缓冲区空间溢出。
复制积压缓冲区:Redis在2.8版本之后提供了一个可重用的固定大小缓冲区用于实现部分复制功能,根据repl-backlog-size参数控制,默认为1MB。对于复制积压缓冲区整个主节点只有一个,所有从节点共享此缓冲区,因此可以设置较大的缓冲区空间,如100MB。
AOF缓冲区:这部分空间用于在Redis重写期间保存最近的写入命令。
3.内存碎片
Redis默认的内存分配器采用jemalloc,可选的分配器还有:glibc、tcmalloc。内存分配器为了更好地管理和重复利用内存,分配内存策略一般采用固定范围的内存块进行分配。
以下场景容易出现高内存碎片问题:
频繁做更新操作,例如频繁对已存在的键执行append、setrange等更新操作。
大量过期键删除,键对象过期删除后,释放的空间无法得到充分利用,导致碎片率上升。
更多Redis相关技术文章,请访问Redis数据库使用入门教程栏目进行学习!
以上就是redis主要消耗什么资源的详细内容,更多文章请关注木庄网络博客!
相关阅读 >>
更多相关阅读请进入《Redis》频道 >>

数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。