CC00057.Redis——|Hadoop&Redis.V02|——|Redis.v02|RedisDB结构.v02|

一、RedisObject结构
### --- RedisObject结构

~~~     Value是一个对象
~~~     包含字符串对象,列表对象,哈希对象,集合对象和有序集合对象
### --- 结构信息概览

typedef struct redisObject {
    unsigned type:4;                # 类型 五种对象类型
    unsigned encoding:4;            # 编码
    void *ptr;                      # 指向底层实现数据结构的指针
    //...
    int refcount;                   # 引用计数
    //...
    unsigned lru:LRU_BITS;          # LRU_BITS为24bit 记录最后一次被命令程序访问的时间
    //...
}robj;
二、结构信息概览
### --- 4位type

~~~     type 字段表示对象的类型,占 4 位;
~~~     REDIS_STRING(字符串)、REDIS_LIST (列表)、REDIS_HASH(哈希)、
~~~     REDIS_SET(集合)、REDIS_ZSET(有序集合)。
~~~     # 当我们执行 type 命令时,便是通过读取 RedisObject 的 type 字段获得对象的类型

127.0.0.1:6379> type a1
string
### --- 4位encoding
~~~     encoding 表示对象的内部编码,占 4 位
~~~     每个对象有不同的实现编码
~~~     Redis 可以根据不同的使用场景来为对象设置不同的编码,大大提高了 Redis 的灵活性和效率。
~~~     通过 object encoding 命令,可以查看对象采用的编码方式

127.0.0.1:6379> object encoding a1
"int"
### --- 24位LRU
~~~     lru 记录的是对象最后一次被命令程序访问的时间,( 4.0 版本占 24 位,2.6 版本占 22 位)。
~~~     高16位存储一个分钟数级别的时间戳,低8位存储访问计数(lfu : 最近访问次数)

lru----> 高16位: 最后被访问的时间
lfu----->低8位:最近访问次数
### --- refcount

~~~     refcount 记录的是该对象被引用的次数,类型为整型。
~~~     refcount 的作用,主要在于对象的引用计数和内存回收。
~~~     当对象的refcount>1时,称为共享对象
~~~     Redis 为了节省内存,当有一些对象重复出现时,
~~~     新的程序不会创建新的对象而是仍然使用原来的对象。
### --- ptr

~~~     ptr 指针指向具体的数据,比如:set hello world,ptr 指向包含字符串 world 的 SDS。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yanqi_vip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值