Redis作为内存数据库,在内存中存储的内容主要是数据(键值对)除了数 据以外,Redis的其他部分也会占⽤内存。
![6f1c64fd9f7e1ea8f67e062c33456b34.png](https://img-blog.csdnimg.cn/img_convert/6f1c64fd9f7e1ea8f67e062c33456b34.png)
redis存储示意图
数据内存
作为数据库,数据是最主要的部分;这部分占⽤的内存会统计在used_memory中。 Redis使⽤键值对存储数据,其中的值(对象)包括5种类型,即字符串、哈希、列表、集合、有序集 合。这5种类型是Redis对外提供的,实际上,在Redis内部,每种类型可能有2种或更多的内部编码实 现;此外,Redis在存储对象时,并不是直接将数据扔进内存,⽽是会对对象进⾏各种包装:如 redisObject、SDS等。
进程内存
Redis主进程本身运⾏肯定需要占⽤内存,如代码、常量池等等;这部分内存⼤约⼏兆,在⼤多数⽣产环 境中与Redis数据占⽤的内存相⽐可以忽略。这部分内存不是由jemalloc分配,因此不会统计在 used_memory中。
注意:除了主进程外,Redis创建的⼦进程运⾏也会占⽤内存,如Redis执⾏AOF、RDB重写时 创建的⼦进程。当然,这部分内存不属于Redis进程,也不会统计在used_memory和 used_memory_rss中。