redis自学(8)String

StringRedis中最常见的数据存储类型:

  • 其基本编码方式是RAW,基于简单动态字符串(SDS)实现,存储上限为512mb

RedisObject的头和SDS是两个独立的内存空间

 

 

  • 如果存储的SDS长度小于44字节,则会采用EMBSTR编码,此时object headSDS是一段连续空间。申请内存是只需要调用一次内存分配函数,效率更高。

 

 

为什么是44个字节,因为44个字节加上SDS的头信息(3个字节),和结束标识“/0”(1个字节),再加上RedisObject16字节,正好是64字节。这是因为redis的底层内存分配算法是Jemalloc,这种算法在分配内存的时候,会以2N次方做内存分配,64恰好是一个分片大小,因此不会产生内存碎片。所以,使用String类型的时候,尽可能不要超过44个字节。

  • 如果存储的字符串是整数值,并且大小在LONG_MAX范围内,则会采用INT编码:直接将数据保存在RedisObjectptr指针位置(刚好8字节),不再需要SDS了。

数字可以直接转换成二进制位,一个字节可以表示字符串255,用比特位存储数字更节省内存空间。

 

 

posted @   蓝海的bug本  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示