# redis 字符串数据结构个人理解

redis数据结构之字符串

string三种内部编码 int ,embstr,raw

int	当一个key的value是整形时候、Redis后悔将编码为int类型 如果吧value当做字符串来看的时候 长度不能超过20 保存为long

enbstr 保存长度小于44字节 分版本

raw 保存长度大于44字节的字符串  分版本

int 保存整数  raw保存长字符串 embstr 短字符串

raw 使用的是redisobject和sds保存数据 

redis保存浮点数是字符串保存的 需要的时候再转成浮点数

当int编码保存的不再是整数的时候 或者超出了long的范围 那么自动转成raw

redis的string 是redis最简单的数据类型 key - value
simple dynamic string  SDS
	struct sdshdr {
		// 保存的长度
		int len
		// 可用剩余长度
		int free
		// 实际数组字节
		car buf []
	}

举例

在这里插入图片描述

c语言的  /0 是结束符


SDS 存储在第一次存储字符串的时候 比如 Hello Word 记录这个字节长度为len  未分配字节为0 

如果进行修改变成 Hello Word1 如果小于1Mb 那么程序会分配之前第一次存入的未使用空间 也就是 10 + 10 +1(/0) = 11
修改之后大于1Mb 那么直接分配1Mb


惰性空间释放  如果分配之后没有都进行使用 那么free只会记录 留待将来使用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值