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 跳跃表和字典

最新文章

  1. 有关“数据统计”的一些概念 -- PV UV VV IP跳出率等
  2. TinkPad E40 CentOS 6.5 无线网卡驱动 RTL8191SEvB 安装
  3. 通过JAVA程序测试闰年
  4. 利用Selenium自动化web测试
  5. Shanghai InfoSys .NET engineer telephone interview
  6. Kooboo 加Search功能 必须先ReBuild Index Data
  7. Unity 关于属性的get/set
  8. cocos2d-x场景切换与过渡效果
  9. 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.
  10. JavaScript中的数据结构及实战系列(2):栈
  11. 如何用命令将本地项目上传到github
  12. Ubuntu16.04安装Qt5.12.2
  13. Spring之AOP在XML中的配置方法
  14. 开源后的.Net 如何选择使用
  15. python+kafka,从指定位置消费数据
  16. ABAP-多线程处理
  17. SQLServer------基本操作
  18. 关于vue Unexpected identifier 问题
  19. Laravel + Vue 之 OPTIONS 请求的处理
  20. RHEL-7.0重置root密码

热门文章

  1. 牛客编程巅峰赛S2第7场 - 钻石&王者 A.牛牛的独特子序列 (字符串,二分)
  2. EGADS介绍(二)--时序模型和异常检测模型算法的核心思想
  3. jenkins:实现Jenkinsfile与Json的转换
  4. 3.Work Queues
  5. woj1018(HDU4384)KING KONG 循环群
  6. codeforces 1C (非原创)
  7. codevs1068乌龟棋-四维DP,五维如何缩减一维
  8. CSS pseudo element All In One
  9. Publish/Subscribe Pattern & Vanilla JavaScript
  10. .bashrc & rename hostname & rename username