【JavaP6大纲】Redis篇:数据类型的底层数据结构sds?

数据类型的底层数据结构sds?

每次在Redis数据库中创建一个键值对时,至少会创建两个对象,一个是键对象,一个是值对象,而Redis中的每个对象都是由 redisObject对象,对象的属性有type类型,encoding编码,*ptr指向底层数据结构的指针,refcount引用计数,lru记录最后一次被程序访问的时间

对象的type属性记录了对象的类型,就是前面讲的五大数据类型,在Redis中,键总是一个字符串对象,而值可以是字符串、列表、集合等对象。对象的 prt 指针指向对象底层的数据结构,而数据结构由 encoding 属性来决定,refcount引用计数用作内存回收机制:创建一个新对象,属性 refcount 初始化为1,对象被一个新程序使用,属性 refcount 加 1,对象不再被一个程序使用,属性 refcount 减 1,当对象的引用计数值变为 0 时,对象所占用的内存就会被释放。

字符串是Redis最基本的数据类型,不仅所有key都是字符串类型,字符串的长度不能超过512M。

①、编码:字符串对象的编码可以是int,raw或者embstr。int 编码是用来保存整数值,raw编码是用来保存长度大于44字节长字符串,而embstr是用来保存长度小于44字节短字符串。其实 embstr 编码是专门用来保存短字符串的一种优化编码,embstr与raw都使用redisObject和sds保存数据,区别在于,embstr的使用只分配一次内存空间(因此redisObject和sds是连续的),而r

posted @ 2021-04-06 18:55  javawxid  阅读(30)  评论(0编辑  收藏  举报