,进而提高整体执行效率
并且SDS还提供了惰性空间释放的功能,即对字符串缩短操作而言,不会立刻使用内存重分配算法来回收多出来的字节,而是通过一个free属性进行记录,当后面需要进行字符串增长时,就会用到...table的大小和掩码
n.size = realsize;
n.sizemask = realsize-1;
if (malloc_failed) {
n.table...,实现却更为简单
RedisObject
Redis中的任意数据类型的键和值都会被封装为一个RedisObject,也叫做Redis对象,源码如下:
Redis通过引用计数实现了相关内存回收机制,并且还利用该引用计数实现了对象共享机制...通过记录对象最后一次访问时间,可以在服务器启用了maxmemory功能的情况下,将那么较长时间无人访问的键优先淘汰
对象类型与编码
Redis使用对象来表示数据库中的键和值,每次当我们在Redis的数据库中新创建一个键值对时...个db数据库,c->db是去指定的数据库寻找这个key
//拿到这个key对应的redisObject对象
robj *lobj = lookupKeyWrite(c->db, c->argv