CSDN博主:【java_wxid】
CSDN博主:点击【Java廖志伟】
CSDN社区:点击【幕后大佬】
码云:点击【互联网Java工程师知识扫盲】
随笔 - 882,  文章 - 0,  评论 - 1,  阅读 - 51602

数据类型的底层数据结构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 on   我是廖志伟  阅读(2)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

南北踏尘
点击右上角即可分享
微信分享提示