Redis设计与实现(一)——内存模型

一、Redis内存统计

Redis是一个基于内存的缓存中间件,所以,我们可能需要去查看Redis的内存使用情况,我们可以使用info命令来查看内存占用
info memory
info命令可以显示redis服务器的许多信息,包括服务器基本信息、CPU、内存、持久化、客户端连接信息等等;memory是参数,表示只显示内存相关的信息。

二、Redis内存划分

Redis是一个基于内存的中间件,所以对于我们需要存储的数据,肯定是需要占用内存的,但是Redis是一个进程,是在不断运行的,所以肯定也会有其他需要的内存

1、数据

作为缓存中间件,数据肯定会占用内存,也是主要占用内存的部分,这部分会被记录在used_memory中
Redis使用键值对存储数据,支持五种基本的类型和其他三种高级的类型,例如字符串,哈希,列表,集合,有序集合,bitmap等等,这部分是调用者看到的,但是对于这些数据类型的实现,又分为了多种编码,不同场景下会使用不同的编码,我们的Redis会将我们的数据包装成一个个的RedisObject,然后加入到内存中

2、进程本身运行需要的内存

Redis是一个进程,进程的运行是需要占用内存的,例如代码,创建子进程等

3、缓冲区

例如我们的复制时候的复制积压缓冲区,AOF缓冲区等等

4、内存碎片

当内存占用后又被销毁,这一块就没有被占用,但是提供的块太小,无法插入数据,这部分数据就无法进行有效利用,如果这一部分的占用很大,可以使用重启的方式,然后进行规整

你可能感兴趣的:(redis,redis,缓存,数据库)