当前位置: 首页 > news >正文

Redis中string底层实现原理

1.前言

Redis是基于C语言进行开发的。Redis字符串并没有采取C语言字符串,而是基于简单动态字符串的抽象类型(SDS)。SDS是Redis为了提高字符串操作性能而设计的一种数据结构,相比于标准C语言中的字符串,SDS提供了更多特性和更高效的内存管理。

2.历史来源

C语言获取字符串长度是靠遍历。遍历整个字符串,遇到空字符就返回字符串的长度。这样就会有一个问题,如果遇到特殊的字符串,那么字符串长度就不完整,在某些场景下,字符串的意思就会改变。这在某些场景下是无法接受的。而SDS便不会有这种问题。

C语言获取字符串长度是遍历整个字符串,遇到空字符串就返回字符串的长度。这样在某些特殊字符串在进行获取长度的时候,返回的字符串长度就会错误。

2.字符串SDS结构:

struct sdshdr {// 记录 buf 数组中已占用空间的长度int len;// 记录 buf 数组中未使用空间的长度int free;// 实际存储数据的数组,以空字符结尾,但长度由 len 决定char buf[];
};

SDS结构的动态字符串字符串由三个属性组成:

        1.字符串长度

        2.数组中未使用的空间

        3.实际存储的数组

3.SDS结构的优势:

        1.二进制安全。使用len属性来记录字符串的长度,这样可以安全的存储二进制数据,包括null字符。

        2.空间预分配。减少增加字符串需分配空间的次数。

        3.惰性空间释放。缩短字符串的时候,Redis不会立即释放未使用的空间,可以避免重复的内存分配和释放操作。

        4.减少修改字符串的开销。

http://www.dtcms.com/a/457061.html

相关文章:

  • 百度经验官方网站登录入口常州网站建设方案优化
  • 网站改域名如何做百度优化企业网站营销典型案例
  • Java采用easyexcel组件进行excel表格单元格的自动合并
  • 整体设计 逻辑系统程序 之18 Source 容器(Docker)承载 C/P/D 三式的完整设计与双闭环验证 之2
  • 汽车保险网站简历模板大学生
  • 基于pytest的接口测试
  • 阿里巴巴做网站需要多少钱镇江vi设计
  • 嵌入式Linux(以泰山派无 eMMC 版为例,嘉立创给的Linux镜像有问题!)系统报错磁盘不够但我用的是32G不可能不够怎么解决
  • 开源一个本地AI知识库
  • js哈哈哈哈哈哈哈哈哈哈
  • 做外汇都要看什么网站多元网站建设
  • 一些主要应用和NAT
  • AI编程开发系统028-基于Vue+SpringBoot的宠物领养系统系统(源码+部署说明+演示视频+PPT+lw)
  • MySQL连接池原理与网站数据流动(了解)
  • Hadess入门到实战(8) - 如何管理Go制品
  • 最短路径问题总结
  • 建设银行网站为什么登不上门头设计
  • NX543NX551美光SSD固态闪存NX552NX564
  • 倍增:快速幂
  • 网站关键词快速排名工具网站建设项目可行性分析
  • 开源AI智能名片链动2+1模式S2B2C商城小程序在现代营销运营中的应用与实践
  • 自然语言处理分享系列-词向量空间中的高效表示估计(二)
  • 开发Bug——U盘插入断网
  • 开源 C++ QT QML 开发(十)通讯--串口
  • BMS(电池管理系统)的主要功能和架构简述
  • asp业务网站视频链接生成器
  • Flask模板中使用React、ant-design、@ant-design/icons示例模板
  • 站长源码之家网络营销中常用的营销策略
  • JAVA算法练习题day35
  • 德州做网站施工企业准则