深入了解一下Redis的内存模型!
发布时间:2019-03-18 03:30:54 所属栏目:MySql教程 来源:编程迷思
导读:一、前言 Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Redis是实现网站高并发不可或缺的一部分。 我们使用Redis时,会接触Redis的5种对象类型(字符串、哈希、列表、集合、有序集合),丰富的类型是Redis相对于M
就目前的实现来说,Redis服务器在初始化时,会创建10000个字符串对象,值分别是0~9999的整数值;当Redis需要使用值为0~9999的字符串对象时,可以直接使用这些共享对象。10000这个数字可以通过调整参数REDIS_SHARED_INTEGERS(4.0中是OBJ_SHARED_INTEGERS)的值进行改变。 共享对象的引用次数可以通过object refcount命令查看,如下图所示。命令执行的结果页佐证了只有0~9999之间的整数会作为共享对象。 (3.5)ptr ptr指针指向具体的数据,如前面的例子中,set hello world,ptr指向包含字符串world的SDS。 (3.6)总结 综上所述,redisObject的结构与对象类型、编码、内存回收、共享对象都有关系;一个redisObject对象的大小为16字节: 4bit+4bit+24bit+4Byte+8Byte=16Byte。 4、SDS Redis没有直接使用C字符串(即以空字符’ |