redis自学(8)String
String是Redis中最常见的数据存储类型:
- 其基本编码方式是RAW,基于简单动态字符串(SDS)实现,存储上限为512mb。
RedisObject的头和SDS是两个独立的内存空间
- 如果存储的SDS长度小于44字节,则会采用EMBSTR编码,此时object head与SDS是一段连续空间。申请内存是只需要调用一次内存分配函数,效率更高。
为什么是44个字节,因为44个字节加上SDS的头信息(3个字节),和结束标识“/0”(1个字节),再加上RedisObject的16字节,正好是64字节。这是因为redis的底层内存分配算法是Jemalloc,这种算法在分配内存的时候,会以2的N次方做内存分配,64恰好是一个分片大小,因此不会产生内存碎片。所以,使用String类型的时候,尽可能不要超过44个字节。
- 如果存储的字符串是整数值,并且大小在LONG_MAX范围内,则会采用INT编码:直接将数据保存在RedisObject的ptr指针位置(刚好8字节),不再需要SDS了。
数字可以直接转换成二进制位,一个字节可以表示字符串255,用比特位存储数字更节省内存空间。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话