Redis 支持的数据类型以及底层编码方式

名词解释

Redis 采用 对象 redisObject 来表示数据库中的键和值,当在 Redis 数据库中新建一个键值对时,会至少创建两个对象——键对象与值对象。

set msg "hello world"为例,键对象是一个包含了字符串值 msg 的对象,它一定是 String 类型,即 type = String;

值对象是包含了 hello world 值的对象,它的 type 可以为 String、List、Hash、Set、ZSet

所以一般来说,Redis 支持的数据类型 type,实际描述的是 Redis 值对象的类型

/*src/redis.h/redisObject */
typedef struct redisObject {
   
    // 刚刚好32 bits
    // 对象的类型,字符串/列表/集合/哈希表
    unsigned type:4;
    // 未使用的两个位
    unsigned notused:2; /* Not used */
    // 编码的方式,Redis 为了节省空间,提供多种方式来保存一个数据
    // 譬如:“123456789” 会被存储为整数123456789
    unsigned encoding:4;
    // 当内存紧张,淘汰数据的时候用到
    unsigned lru:22; /* lru time (relative to server.lruclock) */
    // 引用计数
    int refcount;
    /
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值