Redis Common Sense
笔记碎片 Memory Model 内存主要包括:对象内存 + 缓冲内存 + 自身内存 + 内存碎片。如下 对象内存 对象内存是 Redis 内存中占用最大的一块,存储着所有的用户数据。我们知道 Redis 是一个 key-value 的内存数据库,所有的数据都采用 key-value 型数据类型,每次在创建 key-value 键值对对象的时候都要创建两个对象:key 对象和 value 对象。其中 key 对象是字符串,value 对象我们知道有五中数据类型-String、Hash、List、Set、Zset,每种数据类型在使用的时候占用的内存不同。 缓冲内存 主要包括:客户端缓冲、AOF 缓冲区、复制积压缓冲区。 客户端缓冲:普通的客户端连接 AOF 缓冲区:Redis 持久化分为两种:RDB 和 AOF,其中 RDB 是内存快照,AOF 是将 Redis 的命令 append 在文件中,不过在写入文件之前会先写入到缓冲区,然后根据不同的持久化策略向磁盘进行同步。在进行 AOF 重写时也有一个 AOF 重写缓冲区。一般 AOF 缓冲区都会比较小。 复制积压缓冲区:主要用于主从同步。在进行主从同步时,Redis 会将最新的命令写入到复制积压缓冲区,在进行复制的时候,会校验复制偏移量是否在复制积压缓冲区中,如果是则进行部分复制,否则进行全量复制。它默认情况下是 1MB,我们需要根据实际请求适当调整他的大小,毕竟设置太小的话,可能会使部分复制退化为全量复制。 自身内存 自身内存主要指 AOF/RDB 的时候 Redis 创建子进程内存的消耗,一般这部分的消耗会比较小。 内存碎片 目前可选的分配器有 jemalloc、glibc、tcmalloc,默认 jemalloc。...