设为首页 加入收藏

TOP

Redis中的数据对象
2017-06-26 10:22:57 】 浏览:294
Tags:Redis 数据 对象

redis中有五种常用对象


我们所说的对象的类型大多是值的类型,键的类型大多是字符串对象,值得类型大概有以下几种,但是无论哪种都是基于redisObject实现的


redisObject的结构如下


type的可选值有五种.分别是


encoding的可选值有八种


type和encoding共同决定了数值对象的底层结构和存储


字符串对象的编码可以是int,embstr和row


redis中的字符串对象是最常用的数据对象之一,redis中的许多键都是采用的字符串对象


字符串类型在redis中根据情况不同有3中情况


ps: embstr类型的字符串在修改后总会变成row编码类型


列表的编码可以是linkedlist或者ziplist


这个时候会使用,ziplist来作为列表对象的编码, 当不满足这两个条件的时候使用linkedlist


ps:这两个值是更改的,list-max-ziplist-value 和 list-max-ziplist-entries


哈希对象的编码可以是ziplist或者hashtable


字典的每一个键和值都是一个字符串对象


满足以上两个条件,使用ziplist存储,否则采用hashtable存储


ps:这两个值是更改的,hash-max-ziplist-value 和 hash-max-ziplist-entries


集合对象的编码可以是intset或者hashtable


当集合对象满足以下两个条件的时候采用intset


不满足以上两个条件都是用hashtable存储


ps: 该数值可以使用set-max-intset-entries设置


有序集合对象的编码可以是ziplist或者skiplist


有序集合对象跟前面的几个对象不大一样


zsl中保存一个跳跃表,表节点的对象即使键,score即是分值,该结构主要为 zrange,zrank等函数服务


同时还保存一个dict,dict中也保存有键和对应的分值,获取某键的函数zscore使用这个结构,


同时持有字典和跳跃表是为了性能考虑


当有序集合满足一下两个条件时候,使用ziplist编码


不能满足以上两个条件的使用skiplist


redis的对象资源垃圾回收是基于引用计数


当一个对象被使用一次,引用计数增加1


当一个引用被销毁,对象的引用计数会减1


当一个对象的引用计数为0,会被销毁


redis默认创建了0到9999的数字对象供1万个


其他用到这些对象的时候可以不用创建新对象,直接使用已有的对象。


下面关于Redis的文章您也可能喜欢,不妨参考下:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Oracle使用联机重定义来给表增加.. 下一篇Python3操作MySQL数据库

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目