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

Redis 中的数据类型包括 String, List, Hash, Set, ZSet 和 Bitmaps等,每种类型有不同的编码方式如 SDS, ZipList, QuickList, HashTable 和 SkipList。String 使用 SDS 存储,List 在数据量小时用 ZipList,大时用 QuickList,Hash 可以是 ZipList 或者字典,Set 用 intSet 或 HashTable,ZSet 小量时用 ZipList,大量时用 SkipList 跳表。Bitmaps 是基于 String 的位操作。Redis 利用这些编码方式优化内存使用和操作效率。" 81143812,7525188,JavaScript实现Prime与Kruskal最小生成树算法,"['图算法', '数据结构', 'JavaScript算法', '网络算法', '图论算法']
摘要由CSDN通过智能技术生成

名词解释

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;
    /
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值