Redis数据结构和对象三
2024-09-07 05:50:05
1.Redis 对象系统
Redis用到的所有主要数据结构,简单动态字符串(SDS)、双端链表、字典、压缩列表、整数集合、跳跃表。
Redis并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这个系统包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象这五种类型的对象,而每种对象又通过不同的编码映射到不同的底层数据结构。
typedef struct redisObiect{
//类型
unsigned type:4;
//编码
unsigned encoding:4;
//指向底层数据结构的指针
void *ptr;
}
类型:type
对象的type属性记录了对象的类型,这个属性值是常量之一
REDIS_STRING=字符串对象,REDIS_LIST=列表对象,REDIS_HASH=哈希对象,REDIS_SET=集合对象,REDIS_ZSET=有序集合对象
编码和底层实现
对象的ptr指针指向对象的底层实现的数据结构,而这些数据结构由对象的encoding属性决定的。下列常量之一
编码常量 | 编码对应的底层数据结构 |
---|---|
REDIS_ENCODING_INT | Long类型整数 |
REDIS_ENCODING_EMBSTR | embstr编码的简单动态字符串 |
REDIS_ENCODING_RAW | 简单动态字符串 |
REDIS_ENCODING_HT | 字典 |
REDIS_ENCODING_LINKEDLIST | 双端链表 |
REDIS_ENCODING_ZIPLIST | 压缩列表 |
REDIS_ENCODING_INTSET | 整数集合 |
REDIS_ENCODING_SKIPLIST | 跳跃表和字典 |
最新文章
- 有关“数据统计”的一些概念 -- PV UV VV IP跳出率等
- TinkPad E40 CentOS 6.5 无线网卡驱动 RTL8191SEvB 安装
- 通过JAVA程序测试闰年
- 利用Selenium自动化web测试
- Shanghai InfoSys .NET engineer telephone interview
- Kooboo 加Search功能 必须先ReBuild Index Data
- Unity 关于属性的get/set
- cocos2d-x场景切换与过渡效果
- ssh中的 Write operations are not allowed in read-only mode (FlushMode.MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.
- JavaScript中的数据结构及实战系列(2):栈
- 如何用命令将本地项目上传到github
- Ubuntu16.04安装Qt5.12.2
- Spring之AOP在XML中的配置方法
- 开源后的.Net 如何选择使用
- python+kafka,从指定位置消费数据
- ABAP-多线程处理
- SQLServer------基本操作
- 关于vue Unexpected identifier 问题
- Laravel + Vue 之 OPTIONS 请求的处理
- RHEL-7.0重置root密码
热门文章
- 牛客编程巅峰赛S2第7场 - 钻石&;王者 A.牛牛的独特子序列 (字符串,二分)
- EGADS介绍(二)--时序模型和异常检测模型算法的核心思想
- jenkins:实现Jenkinsfile与Json的转换
- 3.Work Queues
- woj1018(HDU4384)KING KONG 循环群
- codeforces 1C (非原创)
- codevs1068乌龟棋-四维DP,五维如何缩减一维
- CSS pseudo element All In One
- Publish/Subscribe Pattern &; Vanilla JavaScript
- .bashrc &; rename hostname &; rename username