数据类型的底层数据结构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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?