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