008-Redis-数据结构-redisObject
Posted 花好夜猿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了008-Redis-数据结构-redisObject相关的知识,希望对你有一定的参考价值。
点击
蓝色
字体催更
Redis 针对不同的数据结构定义统一的数据结构 redisObject 来进行管理。
换句话说,redisObject 是所有数据结构的最外层的一层结构定义。
redisObject 介绍
redisObject 对应的 C 源码结构
`src/server.h 615行`
为了更直观我将这个代码结构以图片的形式画出来
redisObject 由五个属性组成
`type` 表示当前值对象的一个数据类型,在上一级视视频中,我们用来验证 bitmaps,typeloglogs ,geo底层的数据结构类型的时候使用的 type 命令。
Redis 5.x 支持六种数据类型:string,hash,set,list,zset,stream。
所以 type 的取值有六种。
小贴士
`type {key} ` 的方式查看当前 `kye-value` 的数据类型
enconding 表示当前值对象底层存储的编码格式。
Redis 针对每种数据结构都设计有多种编码格式进行数据存储。比如说:单纯一个字符串的编码Redis 就提供了 int,embstr,raw 三种编码格式。
关于编码后面会谈到。而 encoding 就是用来表示当前数据存储采用的是那种编码格式。
encoding 相关属性值在源码中有定义,相关代码如下:
`src/server.h` 文件
小贴士
`object encoding key` 查看当前 `kye-value` 的数据类型
`lru` 这个字段用来记录对象最后一次访问时间,当 Redis 配置了最大内存配置 maxmemory 后,再触发执行执行 lru 策略的时候,用来辅助 lru 策略删除数据用的。
`refcount` 记录了当前对象被引用的次数,当 refcount =0时,表示可以安全回收当前对象。
当配置有 maxmemory 时,存在共享对象池,[0-1000] 范围内的数值存在共享对象,这些共享对象被引用的次数越多相应的 refcount 越大。
小贴士
`refcount key` 查看当前 `key-value` 的引用次数
ptr 就是真实存储数据的指针。指向真实数据。
简单例子:redisObject 表示字符串
set age 18
假设此时 Redis 中存在一个字符串,如上
此时该字符串对应的一个 redisObject 抽象图如下:
根据图片我们能够知道Redis中该字符串的讯息
首先 age 的数据结构类型为 string,
并且 该字符串的编码为 int 。
lru 是这个对象最近一次被访问的时间
refcount 表示的当前对象被引用的次数
ptr 存储的是当前这个 age 对应的值,也就是 18。
【回复:Redis资料包】
获取相关Redis资料,资料实时更新....
往期推荐
end
扫码催更
获取资料
小视频
以上是关于008-Redis-数据结构-redisObject的主要内容,如果未能解决你的问题,请参考以下文章