当前位置首页 > 信息公告

redis进程内消耗主要是什么?如何解决内存问题

更新时间:2024-02-25 文章作者:佚名 信息来源:网络整理 阅读次数:

记忆。 因为redis数据是保存在内存中的。 与一般关系型数据库相比,内存数据库的读取速度更快,但消耗的内存资源也更多。rHi物理好资源网(原物理ok网)

对象内存(推荐学习:Redis视频教程)rHi物理好资源网(原物理ok网)

对象内存是Redis内存中最大的一块,存储所有用户数据。 Redis中的所有数据都采用key-value数据类型。 每次创建键值对时,至少会创建两种类型对象:键对象和值对象。 内存消耗可以简单理解为(keys)+()。 关键对象都是字符串。 使用Redis时,很容易忽略key对内存消耗的影响。 您应该避免使用太长的键。 值对象比较复杂,主要包括5种基本数据类型:字符串、列表、哈希、集合、有序集合。 每个值对象类型根据使用规模占用不同的内存。 使用时必须合理估计和监控值对象占用情况,避免内存溢出。rHi物理好资源网(原物理ok网)

缓冲存储器rHi物理好资源网(原物理ok网)

缓冲存储器主要包括:客户端缓冲区、复制积压缓冲区、AOF缓冲区。rHi物理好资源网(原物理ok网)

客户端缓冲是指与Redis服务器的所有TCP连接的输入和输出缓冲。 输入和输出缓冲区无法控制。 最大空间为1G。 如果超过,连接将被断开。 输入缓冲由参数 ---limit 控制:rHi物理好资源网(原物理ok网)

1、普通客户端:对于除复制和订阅客户端之外的所有连接rddis主要消耗什么物理资源,Redis的默认配置为: ---limit 0 0 0。Redis不限制普通客户端的输出缓冲区。 一般情况下,普通客户端的输出缓冲区内存消耗可以忽略不计,但是当连接大量慢速连接客户端时,这部分内存消耗就不能忽略了,可以设置限制。 注意不要只使用输出大量数据的命令,导致数据无法及时推送到客户端。 此类命令很容易导致Redis服务器的内存突然激增。rHi物理好资源网(原物理ok网)

从客户端:主节点会为每个从节点建立单独的连接,用于命令复制。 默认配置为: ---limit Slave 256mb 64mb 60。当主从节点之间的网络延迟较高或者主节点挂载大量从节点时,这部分内存消耗会占据很大一部分。 建议主节点挂载不超过2个从节点,并且主从节点不要部署在较差的位置。 在一定的网络环境下,比如跨不同机房,防止复制客户端连接速度慢导致溢出。rHi物理好资源网(原物理ok网)

订阅客户端:使用发布订阅功能时,连接客户端使用单独的输出缓冲区。 默认配置为: ---limit 32mb 8mb 60。当订阅服务的消息生产速度快于消费速度时,就会产生输出缓冲区。 积压导致输出缓冲区空间溢出。rHi物理好资源网(原物理ok网)

复制积压缓冲区:Redis在2.8版本之后提供了可重用的固定大小缓冲区来实现一些复制功能。 根据repl--size参数控制,默认为1MB。 整个主节点只有一个复制积压缓冲区,所有从节点共享这个缓冲区,因此可以设置较大的缓冲区空间,比如100MB。rHi物理好资源网(原物理ok网)

AOF缓冲区:这部分空间用于保存Redis重写时最近的写入命令。rHi物理好资源网(原物理ok网)

3、内存碎片rHi物理好资源网(原物理ok网)

Redis 使用默认的内存分配器。 可选分配器包括:glibc。 为了更好的管理和复用内存,内存分配器一般使用固定范围的内存块来分配内存。rHi物理好资源网(原物理ok网)

以下场景容易出现内存碎片高的问题:rHi物理好资源网(原物理ok网)

频繁执行更新操作rddis主要消耗什么物理资源,例如对现有的key频繁执行更新操作等。rHi物理好资源网(原物理ok网)

大量过期密钥被删除。 关键对象过期删除后,释放的空间无法充分利用,导致碎片率增加。rHi物理好资源网(原物理ok网)

发表评论

统计代码放这里