Redis使用内存大小评估

申请Redis资源时,总需要考虑该申请多大内存空间的实例。该如何评估呢?我们先从Go语言中计算某个类型的对象占用内存的空间说起

下面是一个对象声明,我们可以通过Go官方提供的方来来计算对象占用的空间。但这其实计算的是第一层结构占用的空间,如果结构体内部有指针的话,还需要考虑实际指针实际指向的类型大小。

type Live struct {
	TeacherId int64
	Name      string
	Status    *int64
}

size := unsafe.Sizeof(Live{})

64位系统上,int64占8个字节、string占用16个字节、指针占用8个字节,最终计算对象占用的内容空间位32个字节。其中的Status是指针类型,实际上还需要考虑指针实际数据的占用空间。

string类型也是一个指针类型,它内部保存的实际数据的地址,所以,通过这种评估方式,也没有将string的内容大小考虑在内。unsafe.Sizeof 计算的仅仅是这个类型占用空间的大小。

重点来了,评估内存占用空间不仅仅要考虑实际内容的大小,还要考虑内存中类型本身占用空间的大小。

Redis中为了节省内存空间占用,不同的大小底层有不同的类型实现,考虑的时候就是

占用内存的大小 = 数据类型的大小 + 实际数据的大小 占用内存的大小 = 数据类型的大小 + 实际数据的大小 占用内存的大小=数据类型的大小+实际数据的大小

具体Redis的数据类型大家可以查看相关博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值