Redis(三)节省内部空间优化
2015-05-14 11:28
253 查看
总体原则:key的名称不易过长,剩下的所有 能用纯数字表示的尽量用
Redis的每一个键值都是用一个redisObject结构体表示的
结构体中有:
键值的类型(string/list/hash/set/zset)
内部编码方式(下面重点讲)
该键值被多少次引用
内容指针
若内容指针指的是字符串,则内容指针指向sdshdr的结构体
(该结构体中 字符串长度、buf中剩余空间、buf字符数组[存字符串])
存储键值空间 = redisObject大小 + sdshfr大小 + 字符串大小
若内容指针指的是数字,则内容指针直接就是数字
存储键值空间 = redisObject大小
redis内部预先存有键值为0~9999的数字键值
字符串(编码方式RAW、INT):
RAW redisObject内容指针指“纯字符串”
INT redisObject内容指针指“数字”
散列表(两种编码方式 HT ZIPLIST)
配置文件 hash-max-ziplist-entries 512
hash-max-ziplist-value 64
当键值的字段个数小于第一个值且字段名、字段值的字节数小于第二个值时用ZIPLIST
ZIPLIST:牺牲“读性能”(O(n))换取极高的“空间利用率”,适合表在较小时使用
HT:字段名和字段值 都是 redisObject ;读性能为O(1)
列表(编码方式 LinkedList ziplist)
ziplist:同上
LinkedList:每个节点都是redisObject的双向列表
集合(编码方式 HT INTSET)
INTSET:集合中全是数字,且数字的个数小于指定值时使用
每个数字占位可变的动态数组
HT:字段值为nil,在集合缩小时,不会倒退到INSET
有序集合(编码方式 SkipList ziplist)
ziplist:同上
SkipList:(由散列表和跳跃表组成)
散列表存储元素、分数映射
跳跃表 排序
Redis的每一个键值都是用一个redisObject结构体表示的
结构体中有:
键值的类型(string/list/hash/set/zset)
内部编码方式(下面重点讲)
该键值被多少次引用
内容指针
若内容指针指的是字符串,则内容指针指向sdshdr的结构体
(该结构体中 字符串长度、buf中剩余空间、buf字符数组[存字符串])
存储键值空间 = redisObject大小 + sdshfr大小 + 字符串大小
若内容指针指的是数字,则内容指针直接就是数字
存储键值空间 = redisObject大小
redis内部预先存有键值为0~9999的数字键值
字符串(编码方式RAW、INT):
RAW redisObject内容指针指“纯字符串”
INT redisObject内容指针指“数字”
散列表(两种编码方式 HT ZIPLIST)
配置文件 hash-max-ziplist-entries 512
hash-max-ziplist-value 64
当键值的字段个数小于第一个值且字段名、字段值的字节数小于第二个值时用ZIPLIST
ZIPLIST:牺牲“读性能”(O(n))换取极高的“空间利用率”,适合表在较小时使用
HT:字段名和字段值 都是 redisObject ;读性能为O(1)
列表(编码方式 LinkedList ziplist)
ziplist:同上
LinkedList:每个节点都是redisObject的双向列表
集合(编码方式 HT INTSET)
INTSET:集合中全是数字,且数字的个数小于指定值时使用
每个数字占位可变的动态数组
HT:字段值为nil,在集合缩小时,不会倒退到INSET
有序集合(编码方式 SkipList ziplist)
ziplist:同上
SkipList:(由散列表和跳跃表组成)
散列表存储元素、分数映射
跳跃表 排序
相关文章推荐
- Redis节省空间
- 「Redis学习笔记」优化空间
- 优化 Ext4 分区格式化后占用空间(通过降低inode数来节省磁盘空间)
- Redis 小白指南(三)- 事务、过期、消息通知、管道和优化内存空间
- 优化 Ext4 分区格式化后占用空间(通过降低inode数来节省磁盘空间)
- Redis基础学习--Redis 事务(watch命令)、生存时间、排序、消息通知("发布/订阅"模式)、管道、节省空间
- Redis 小白指南(三)- 事务、过期、消息通知、管道和优化内存空间
- 优酷、土豆、新浪,网页中引用视频,节省自己服务器空间的好办法
- Redis 内存使用优化与存储
- redis使用过程中主机内核层面的一些优化
- 日志存储空间优化
- 菜鸟都能理解的0-1背包问题的空间优化
- nios中优化代码和减少程序占用内存空间的设置方法
- 深入redis内部---网络编程
- [精华] [转帖]关于tempdb的优化---保证足够的 TempDB 空间
- 网络营销教程—SEO 第八章 内部链接的优化操作
- 014redis的优化&redis工具的使用
- 颜色空间系列3: RGB和YCbCr颜色空间的转换及优化算法
- Redis内部数据结构实现解析