网站制度建设模板,辽宁建设科技信息网网站,怎么黑入网站,网站开发哪家公司口碑好对象类型和结构
在Redis中#xff0c;无论是键key还是值value都是一个对象#xff0c;每次对Redis数据库创建一个新的键值对时#xff0c;就至少会创建两个对象。 常见的对象类型有#xff1a;
字符串列表哈希集合有序集合
这些对象在Redis中统一用一个结构体redisObjec…对象类型和结构
在Redis中无论是键key还是值value都是一个对象每次对Redis数据库创建一个新的键值对时就至少会创建两个对象。 常见的对象类型有
字符串列表哈希集合有序集合
这些对象在Redis中统一用一个结构体redisObject来表示只不过type属性不同。
typeof struct redisObject {// 类型unsigned type;// 编码格式 unsigned encoding;// 指向底层实现的数据结构的指针 void *ptr; // ....
} robj; 对这些对象的操作在Redis中有对应的命令这里就不说了。
内存回收
Redis的对象内存回收比较简单引用计数法 在redisObject结构体还有一个重要的变量是refcount用来表示对此对象的引用次数。 在刚创建一个新对象时引用计数的值会被初始化为1 当对象被一个新程序使用时引用计数值加1 当一个对象不再被一个程序使用时引用计数值减1 当引用计数变量为0时表示没有程序继续引用此对象了那么就需要回收此对象占用的内存。
对象共享
引用计数变量除了实现内存回收机制外还有对象共享的作用。 举个例子当key1已经创建了value是100的值对象此时key2也要创建一个value是100的值对象此时我们的认为有两种做法
为key2新创建一个value是100的对象让key2与key1共享同一个值对象 在Redis中为了节约内存采用了让两个key共享值对象的方式具体的做法是
让key2指向现有的value对象该value对象的引用计数加1 当数据库中保存相同的值越多那么对象共享的优势就更明显。