《Redis设计与实现》读书笔记-数据结构(SDS)

news2024/11/25 10:36:51

目录

SDS定义

SDS结构

SDS与C字符串结构差异

SDS优点

SDS扩容策略

SDS惰性空间回收


SDS定义

SDS(简单动态字符串),用于代替C语言自身的字符串(字符容量与字符数组强相关)。

SDS结构

sdshdr{
	int free //sds 中空闲的长度
	int len //SDS 已经使用字节长度,等于sds保存字符的长度
	char [] buf // 实际上数组容量
}

buf = free+len+1byte(’\0’)

SDS与C字符串结构差异

SDS优点

  1. 常数复杂度,获取字符串长度,因为存储了len属性。C语言需要O(n)

  2. 防止缓存区内存溢出,因为在字符串拼接时,会验证原来空间大小,不够,则扩容

  3. 减少内存分配次数,有内存预分配和惰性空间清除机制,因为每次内存操作比较耗时

  4. 二进制安全,sds可以保存文本,视频,音频等任何二进制数据,C语言只能保存文本

  5. 兼容C的部分函数,string.h库中。保持按照C语言的习惯末尾还是有空字符

SDS扩容策略

  • 修改后len < 1M,则分配len 和 free 相同的空间,如:修改后len=13字节,那么free=13
  • len > 1M,则分配 free 的空间为1M,如:修改后len=30M,则free=1M

SDS惰性空间回收

当减少sds空间时,如调用 strim()函数,切割字符串

redis并不立刻回收掉空闲空间,而是用free记录,来应对

后面可能空间的增加,当真正需要释放,可调用api

总结: 空间多分配点,延迟回收

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1962733.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

预警系统最小例程构建

预警系统最小例程构建 引言 为了更直观, 我们使用最小例程来实现这个预警流程, 环境温湿度读取,然后判断阈值, 超标则触发小灯警报。 最小例程工程备份链接: https://ww0.lanzoul.com/iz4wd261k21i 仿真文件工程备份链接: https://ww0.lanzoul.com/i8vTn261syyb 文章目录…

Jeecgboot仪表盘设计器使用https时访问报错

问题 仪表盘设计器设计好后&#xff0c;Nginx配置域名发送https请求时&#xff0c;/drag/page/queryById、/drag/page/addVisitsNumber仍发送http请求。导致发送下面错误&#xff1a; 原因 仪表盘设计器里设计的页面是由后端生成返回给前端的&#xff0c;后端是根据后端服…

docker安装elasticsearch(es)最新版本

docker安装elasticsearch&#xff08;es&#xff09; docker官网 https://hub.docker.com/ https://www.cnblogs.com/balloon72/p/13177872.html 1、拉取最新项目elasticsearch docker pull elasticsearch:8.14.3lscpu 查看架构 2、构建环境 mkdir -p /data/elasticsear…

【TOOLS】Project 2 Maven Central

发布自己的项目到maven中央仓库 Maven Central Account 访问&#xff1a;https://central.sonatype.com/&#xff0c;点击右上角&#xff0c;根据提示注册账号 构建User token &#xff0c;用于访问中央仓库的API&#xff1a; 点击右上角&#xff0c;查看账户点击Generate Us…

医院体检信息管理系统,C#体检系统源码,健康体检系统PEIS

体检服务全流程 检前 检前注意事项提醒-体检预约-套餐选择-体检签到-费用缴纳 检中 科室队列提醒-增项检中支付 检后 报告查询-体检百科-报告解读-问卷调查 体检管理系统模块介绍 一、登记管理模块 登记体检者基本信息&#xff0c;包括唯一的体检编号&#xff0c;姓名、…

Windows 10+Visual Studio2019 Opencv-C++安装配置

前往官网下载需要的版本Releases - OpenCVhttps://opencv.org/releases/ 1.下载并解压OpenCV 我选择4.6.0&#xff0c;点击windows版本&#xff0c;进行下载 2.配置项目属性 打开你的Visual Studio 2019项目 -> 右击项目名&#xff0c;选择“属性” 注&#xff1a;整个配…

【C语言】指针基础知识理解【续】

1. ⼆级指针 指针变量也是变量&#xff0c;是变量就有地址&#xff0c;那指针变量的地址存放在哪⾥&#xff1f;这就是 ⼆级指针 。 1.1 引入二级指针 由于一级指针已经很熟悉&#xff0c;这里就不再赘述&#xff0c;这里我们重点探讨二级指针 下面先简单使用一个二级指针看…

机器学习之——支持向量机(SVM)技术详解

机器学习之——支持向量机&#xff08;SVM&#xff09;技术详解 1. 支持向量机的基本原理1.1 超平面1.1.1 定义与作用1.1.2 高维空间中的超平面 1.2 间隔最大化1.2.1 间隔的定义1.2.2 最大化间隔的原则 1.3 支持向量1.3.1 支持向量的定义1.3.2 支持向量的作用 2. SVM的数学基础…

Vue3 加载条(LoadingBar)

效果如下图&#xff1a;在线预览 APIs LoadingBar 参数说明类型默认值必传containerClass加载条容器的类名stringundefinedfalsecontainerStyle加载条容器的样式CSSProperties{}falseloadingBarSize加载条大小&#xff0c;单位 pxnumber2falsecolorLoading加载中颜色string‘…

快速识别音频文件转成文字

一、SenseVoice概述 阿里云通义千问开源了两款语音基座模型 SenseVoice&#xff08;用于语音识别&#xff09;和 CosyVoice&#xff08;用于语音生成&#xff09;。 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测&#xff0c;有以下特点&#xff1a; 多语言…

4000元投影仪性价比之王:爱普生TW5750极米RS10还是当贝X5S?

买投影很多人会倾向于买大品牌或者是销量最好的那几款&#xff0c;首先是大品牌售后更有保障&#xff0c;口碑和销量也间接证明了这款投影是否值得买。这几年国内投影市场中爱普生、极米、当贝这三家投影品牌无论是在产品、口碑、售后服务等方面都是最好的&#xff0c;被用户们…

深入理解 Go 数组、切片、字符串

打个广告&#xff1a;欢迎关注我的微信公众号&#xff0c;在这里您将获取更全面、更新颖的文章&#xff01; 原文链接&#xff1a;深入理解 Go 数组、切片、字符串 欢迎点赞关注 前言 为什么在一篇文章里同时介绍数组、切片、字符串&#xff0c;了解这三个数据类型底层数据结构…

【人工智能专栏】Beam Search 束搜索

Beam Search 束搜索 这里是一个 beam_size=2 的Beam Search示意图,每个节点都会扩展5个下级节点,在 Beam Search 每次都会从所有扩展节点里面挑选出2个累计启发值最大的节点,直到达到结束标准。 理念 Beam Search 是对 Greedy Search(贪心搜索)的一个改进算法,能够扩展…

windows常用的dos命令

1.打开dos命令窗口: winr -> 输入cmd -> 回车 进入之后可以看到如下界面 其中 c: 代表盘符users: 代表的是磁盘符目录下的文件夹qayrup lin 是users文件夹下的子文件夹 以上的所有构成了我们当前操作的所在位置 常用的dos命令 作用命令切换盘符盘符名: -> 回车盘…

昇思25天学习打卡营第26天|Diffusion扩散模型

看了这个diffusion扩散模型&#xff0c;不得不感慨现在AI还是很厉害的。从一张包浆的图片&#xff0c;可以还原出来图片本来的面目&#xff0c;甚至可能一张打了马赛克的图片&#xff0c;用AI处理可能也可以还原出来原始图片。攻防战在AI加入战斗后又增加了很多变数。 受限于算…

【Bug收割机】已解决使用maven插件打包成功,在控制台使用mvn命令打包失败问题详解,亲测有效!

文章目录 前言问题分析报错原因解决方法私域 前言 在maven项目中&#xff0c;大家经常会使用maven插件来打包项目文件 但是有的人也习惯使用mvn命令在控制台直接进行打包&#xff0c;因为这样可以自定义组装一些命令&#xff0c;使用起来也更加灵活方便&#xff0c;比如mvn pa…

前端开发实用的网站合集

文章目录 一、技能提升篇vueuseJavaScript中文网JavaScript.infoRxJsWeb安全学习书栈网码农之家 二、UI篇iconfont&#xff1a;阿里巴巴矢量图标库IconPark3dicons美叶UndrawError 404摹克 三、CSS篇You-need-to-know-cssCSS TricksAnimate.cssCSS ScanCSS Filter 四、颜色篇中…

Java真人版猫爪老鼠活动报名平台系统

&#x1f43e;“真人版猫爪老鼠活动报名平台系统”——趣味追逐&#xff0c;等你来战&#xff01;&#x1f42d; &#x1f431;【萌宠变主角&#xff0c;现实版趣味游戏】 厌倦了电子屏幕的虚拟游戏&#xff1f;来试试“真人版猫爪老鼠活动”吧&#xff01;在这个平台上&…

android java socket server端 可以不断的连接断开,不断的收发 TCP转发

adb.exe forward tcp:5902 tcp:5902 前面本地5901 转发到 后面设备为5902查看转发 adb forward --list删除所有转发 adb forward --remove-allpublic static final String TAG "Communicate";private static boolean isEnable;private final WebConfig webConfig;//…