Browsed by
日期:2020年6月4日

Redis的内存和实现机制

Redis的内存和实现机制

閱讀本文約花費: 23 (分鐘)1. Reids内存的划分# 数据 内存统计在used_memory中 进程本身运行需要内存 Redis主进程本身运行需要的内存占用,代码、常量池等 缓冲内存,客户端缓冲区、复制积压缓冲区、AOF缓冲区。有jemalloc分配内存,会统计在used_memory中 内存碎片 Redis在分配、回收物理内存过程中产生的。内存碎片不会统计在used_memory中。如果Redis服务器中的内存碎片已经很大,可以通过安全重启的方式减小内存碎片:因为重启之后,Redis重新从备份文件中读取数据,在内存中进行重排,为每个数据重新选择合适的内存单元,减小内存碎片。 2. Redis的数据存储的细节# 涉及到内存分配器jemalloc, 简单动态字符串(SDS),5种值类型对象的内部编码,redisObject, DictEntry: Redis 是key-value数据库,因此对每个键值对都会有一个dictEntry,里面存储了指向Key和Value的指针;next指向下一个dictEntry,与本Key-Value无关 Key: 并不是以字符串存储,而是存储在SDS结构中 RedisObject: 5种值对象不是直接以对应的类型存储的,而是被封装为redisObject来存储 jemalloc: 无论是DictEntry对象,还是redisObject, SD…

Read More Read More