1. 作用

Redis使用对象作为五种不同类型的底层实现,字符串,列表,哈希,集合,有序集合等

而对象是基于之前的分析的数据结构创建的。每个对象都至少用到一种数据结构,这意味着,Redis五大类型,底层实现是可以有多种实现的,这方便在不同场景下选择合适的底层结构,优化性能

在Redis中,键和值均为一个对象

 

2. 数据结构

typedef struct redisObject{

    //类型

    unsigned type:4;

    //编码

    unsigned encoding:4;

    //指向底层实现数据结构的指针

    void *ptr;

    // 引用计数器

    int refcount;

    //最后访问时间

    unsigned lru:32;

}
```

 

2.1. 类型

类型常量

对象名称

REDIS_STRING 字符串对象
REDIS_LIST 列表对象
REDIS_HASH 哈希对象
REDIS_SET 集合对象
REDIS_ZSET 有序集合对象

2.2. 编码和底层实现

编码常量

编码所对应的底层数据结构

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

 

 

可以从上图看出,Redis五大基本类型底层实现都不止一种

使用encoding属性设定对象所使用的编码方式,而不是特点类型关联一种编码,这样提升了Redis灵活性,特定场景可以选择合适的底层实现

来源:https://blog.csdn.net/qq_33330687/article/details/86527834

最新文章

  1. CentOS 7使用nmcli配置双网卡聚合
  2. 常用备份工具是mysql自带的mysqldump
  3. powerdesigner的基本使用转载
  4. Chrome 应用推荐 - 下载管理扩展: Chrono
  5. find your present
  6. UVa 11636 (注意读题) Hello World!
  7. Correct thread terminate and destroy
  8. 七牛云存储官方接口PHP版本
  9. XML解析(转)
  10. 使用putty上传文件到linux系统
  11. 网络请求工具--AFNetworking 分类: ios技术 2015-02-03 08:17 76人阅读 评论(0) 收藏
  12. Java使用Schema模式对XML验证
  13. UVa455 Periodic String 的wronganswer问题探讨,以及AC的新思路
  14. css3 移动端 开关效果
  15. awk 里的substr()
  16. docker面试整理
  17. Thing in java 第5章,初始化和清理,练习题答案
  18. IOS https抓包及10.3.3版本证书不生效问题解决
  19. python将dict中的unicode打印成中文
  20. HBase底层存储原理——我靠,和cassandra本质上没有区别啊!都是kv 列存储,只是一个是p2p另一个是集中式而已!

热门文章

  1. 软件开发中什么是CI/CD
  2. Leetcode题目39.组合总和(回溯+剪枝-中等)
  3. python操作s3 -- boto2.x
  4. react数据渲染
  5. 【Linux命令】find命令
  6. jQuery常用操作部分总结
  7. 利用Spring的AbstractRoutingDataSource解决多数据源的问题【代码手动切换,非AOP】
  8. Java商城秒杀系统的设计与实战视频教程(SpringBoot版)_汇总贴
  9. C++ STL内存池
  10. Kafka offset机制