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
32字节
什么数据结构可以节省内存
压缩列表
构成
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
alloc
消耗数据
RedisObject 结构体
包含数据
指向实际数据
不同数据类型都有些相同的元数据要记录
统一记录这些元数据
最后一次访问的时间
被引用的次数
8个字节元数据
8字节指针
节省内存空间
Long整形数据优化
RedisObject指针直接赋值为整形数据
字符串数据
小于等于44字节
元数据,指针,SDS是连续内存
大于44字节
给SDS分配独立空间,并用指针指向SDS结构
String
0 条评论
回复 删除
下一页