
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
掌握不同的数据库类型能够让程序员在开发软件的时候满足更多的编程开发场景,而本文我们就通过案例分析来简单了解一下,redis内存优化常用方法都有哪些。
1、对象内存
对象内存,也即真实存储的数据所占用的内存。
redisk-v结构存储,对象占用可以简单的理解为k-size+v-size。
redis的键统一都为字符串类型,值包含多种类型:string、list、hash、set、zset五种基本类型及基于string的Bitmaps和HyperLogLog类型等。
2、缓冲内存
缓冲内存包括三部分:客户端缓存、复制积压缓存及AOF缓冲区。
1)客户端缓存
接入redis服务器的TCP连接输入输出缓冲内存占用,TCP输入缓冲占用是不受控制的,大允许空间为1G。输出缓冲占用可以通过client-output-buffer-limit参数配置。
redis客户端主要分为从客户端、订阅客户端和普通客户端。
从客户端连接占用:
也就是我们所说的slave,主节点会为每一个从节点建立一条连接用于命令复制,缓冲配置为:client-output-buffer-limitslave256mb64mb60。
主从之间的间络延迟及挂载的从节点数量是影响内存占用的主要因素。因此在涉及需要异地部署主从时要特别注意,另外,也要避免主节点上挂载过多的从节点(<=2);
订阅客户端内存占用:
发布订阅功能连接客户端使用单独的缓冲区,默认配置:client-output-buffer-limitpubsub32mb8mb60。
当消费慢于生产时会造成缓冲区积压,因此需要特别注意消费者角色配比及生产、消费速度的监控。
普通客户端内存占用:
除了上述之外的其它客户端,如我们通常的应用连接,默认配置:client-output-buffer-limitnormal1000。
可以看到,普通客户端没有配置缓冲区限制,通常一般的客户端内存消耗也可以忽略不计。
但是当redis服务器响应较慢时,容易造成大量的慢连接,主要表现为连接数的突增,如果不能及时处理,此时会严重影响redis服务节点的服务及恢复。
关于此,在实际应用中需要注意几点:
->maxclients大连接数配置必不可少。
->合理预估单次操作数据量(写或读)及网络时延ttl。
->禁止线上大吞吐量命令操作,如keys等。
高并发应用情景下,redis内存使用需要有实时的监控预警机制,
2)复制积压缓冲区
v2.8之后提供的一个可重用的固定大小缓冲区,用以实现向从节点的部分复制功能,避免全量复制。配置单数:repl-backlog-size,默认1M。单个主节点配置一个复制积压缓冲区。
3)AOF缓冲区
AOF重写期间增量的写入命令保存,此部分缓存占用大小取决于AOF重写时间及增量。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加抖音太原达内IT培训学习了解。