Redis内存模型
used_memory: Redis 分配器分配的内存总量(单位是字节),包括使用的虚拟内存(即
swap); Redis 分配器后面会介绍。 used_memory_human 只是显示更友好。
used_memory rss: Redis 进程占据操作系统的内存(单位是字节),与 top 及ps 命
令看到的值是一致的;除了分配器分配的内存之外, used_memory_rss 还包括进程
运行本身需要的内存、内存碎片等,但是不包括虚拟内存。
mem fragmentationratio: 内 存 碎 片 比 率 , 该 值 是 usedmemoryrss/used
memory 的比值。
mem allocator:Redis使用的内存分配器,在编译时指定;可以是libc、jemalloc或者
tcmalloc,默认是jemalloc;截图中使用的便是默认的jemalloc。
进程本身运行需要的内存
Redis主进程本身运行肯定需要占用内存,如代码、常量池等等;这部分内存大约
几兆,在大多数生产环境中与Redis数据占用的内存相比可以忽略。这部分内存不
是由 jemalloc 分配,因此不会统计在 used_memory 中。
缓冲内存
Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存
的大小或者网络带宽。既然单线程容易实现,而且CPU不会成为瓶颈,那就顺理成
章地采用单线程的方案了(毕竟采用多线程会有很多麻烦!)。