本文摘自PHP中文网,作者(*-*)浩,侵删。
Redis进程内消耗主要包括:自身内存+对象内存+缓冲内存+内存碎片。内存。因为redis的数据都是存储在内存当中。内存数据库相比一般的关系型数据库,读取速度要更快,但是消耗的内存资源会更多。
对象内存(推荐学习:Redis视频教程)
对象内存是Redis内存占用最大的一块,存储着用户所有的数据。Redis所有数据都采用key-value数据类型,每次创建键值对时,至少创建两个类型对象:key对象和value对象。内存消耗可以简单的理解为sizeof(keys)+sizeof(values)。键对象都是字符串,在使用Redis时很容易忽略键对内存消耗的影响,应当避免使用过长的键。value对象更复杂些,主要包括5种基本数据类型:字符串、列表、哈希、集合、有序集合。每种value对象类型根据使用规模不同,占用内存不同。在使用时一定要合理预估并监控value对象占用情况,避免内存溢出。
缓冲内存
缓冲内存主要包括:客户端缓冲、复制积压缓冲区、AOF缓冲区。
客户端缓冲指的是所有接入到Redis服务器TCP连接的输入输出缓冲。输入输出缓冲无法控制,最大空间为1G,如果超过将断开连接。输入缓冲通过参数client-output-buffer-limit控制:
1.普通客户端:除了复制和订阅的客户端之外的所有连接,Redis的默认配置是:client-output-buffer-limit normal 0 0 0,Redis并没有对普通客户端的输出缓冲区做限制,一般普通客户端的内存消耗可以忽略不计,但是当有大量慢连接客户端接入时这部分内存消耗就不能忽略了,可以设置maxclients做限制。注意不要只用大量数据输出的命令且数据无法及时推送给客户端,如 monitor命令,容易造成Redis服务器内存突然飙升。
相关阅读 >>
学习spring session和Redis解决分布式session跨域共享问题
更多相关阅读请进入《Redis》频道 >>
数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。