Redis String分析
2021-04-20 16:57:31 8 举报
AI智能生成
Redis String 分析
作者其他创作
大纲/内容
问题
一个图片ID和图像存储对象ID为什么会用64字节
图片ID
元数据占用8字节
额外的RedisObject 指针部分占用8字节
图片存储对象ID
同上
额外的32字节?
全局哈希表的每一项都是dictEntry结构体24字节
key 8字节
value 8字节
8字节
内存分配库jemalloc
根据申请字节数N,找一个比N大的2的次幂数分配
什么数据结构可以节省内存
压缩列表
构成
zlbytes
zltail
zllen
数据entry
prev_len
1字节
表示entry的长度小于254字节
5字节
大于255就取这个
len
自身长度4字节
encoding
表示编码方式1字节
content
zlend
如何用集合类型保存单值的键值对
Hash类型的二级编码方式
单值数据拆分为两部分
前一部分作为Hash集合里面的key
后一部分作为Hash的value
Hash类型数据长度讲究
Redis Hash什么时候用压缩列表
hash-max-ziplist-entries
hash-max-ziplist-value
什么时候用哈希表
hash集合中个数超过hash0max-ziplist-entries
单个元素大小超过hash-max-ziplist-value
所以要控制hash集合中的元素个数
Redis 容量预估
http://www.redis.cn/redis_memory/
为什么内存开销大
基本数据
记录数据长度
空间使用等
怎么保存数据
有符号整数
8字节的Long整数
包含字符
动态字符串
buf
len
alloc
RedisObject 结构体
包含数据
指向实际数据
不同数据类型都有些相同的元数据要记录
统一记录这些元数据
最后一次访问的时间
被引用的次数
8个字节元数据
8字节指针
节省内存空间
Long整形数据优化
RedisObject指针直接赋值为整形数据
字符串数据
小于等于44字节
元数据,指针,SDS是连续内存
大于44字节
给SDS分配独立空间,并用指针指向SDS结构
0 条评论
下一页
为你推荐
查看更多