2.1 Redis中SDS的定义

news2024/10/6 20:33:57

每个sds.h/sdshdr 结构表示一个SDS值

struct sdshdr {
//记录 buf 数组中已经使用的字节数量
//等于SDS所保存字符串的长度
int len;

//记录buf数组中未使用字节的数量
int free;

//字节数组,用于保存字符串
char buf[];
};

在这里插入图片描述

图2-1 展示了一个SDS 示例:

1、free 属性值为0,表示这个SDS没有继续分配可使用的空间了。
2、len属性的值为5,表示这个SDS已经保存了一个5字节的字符串。
3、buf属性 是一个char类型的数组,数组的前5个字节分别保存了
‘R’、‘e’、‘d’、‘i’、‘s’五个字符,而最后一个字节则保存了空字符’\0’。

SDS遵循C字符串以空字符结尾的惯例,保存在空字符的1字节空间不计算在SDS的len属性里面,并且为空字符分配额外的1字节空间,以及添加空字符到字符串末尾的操作都是由SDS函数自动完成的,所以这个空字符对于SDS的使用者来说是完全透明的。遵循空字符结尾这一惯例的好处是,SDS可以直接重用一部分C字符串函数库里的函数。

举个例子,如果我们有一个指向图2-1所示SDS的指针s,那么可以直接使用<stdio.h>/printf函数,通过执行以下语句:

printf("%s",s->buf); 

来打印出SDS保存的字符串值"Redsi",而无需为SDS编写专门的打印函数。

**下面图2-2 展示了另一个示例。**这个SDS和之前展示的SDS一样,都保存了字符串值"Redis"。这个SDS和之前的区别在于,这个SDS为buf数组分配了5个未使用的字节空间,所以他的free 属性的值为5(图中,使用5个空格来表示5个未使用的字节空间)。
在这里插入图片描述

链接: 在2.2章节 会说明SDS 与C字符串的区别,以及为Redis为啥要使用SDS这种数据结构

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

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

相关文章

Kotlin 开发Android app(十三):RadioGroup和ViewPager控件实现底层分页按钮

安卓的控件是挺多的&#xff0c;没有办法一个一个的来说明&#xff0c;我们挑出了一些重点的控件&#xff0c;组成一些常见的布局&#xff0c;这样以后在遇到相同功能的界面时&#xff0c;就会有自己的思路&#xff0c;或者进行复用。 在这一节中&#xff0c;我们实现一个底层分…

CANoe-vTESTstudio之State Diagram编辑器(元素介绍)

State Diagram编辑器里的工具箱,有多个图形符号,它们是组成状态图表的图形元素,具有不同的作用。图形元素能够高效并快速地创建状态图表,然后生成测试用例 1. 基本测试设计元素 1.1 Setup Setup元素的测试代码能够执行一次,在检查测试用例之前。例如,用于建立诊断连接 …

uni-app接入mPaas扫码

目录 原因 配置mPaas应用 包名和打签名APK 使用云端插件 打自定义基座 原因 可以用uni.scanCode扫一下下面的二维码&#xff0c;会发现&#xff0c;左边的识别不了&#xff0c;而右边的能识别&#xff0c;其实人眼看&#xff0c;两个二维码应该是一样的。 只不过左边的会有…

String的几个面试题

1.. 第一个只出现一次的字符 class Solution {public int firstUniqChar(String s) {int []count new int[125];for(int i0;i<s.length();i){char chs.charAt(i);count[ch];}for(int i0;i<s.length();i) {char ch s.charAt(i);if (count[ch] 1) {return i;}}return -1…

网站被DDOS攻击怎么办?防护经验!

为了能够及时发现ddos攻击&#xff0c;下面我们就详细介绍一下网站受ddos攻击的症状&#xff1a; 网站遇到ddos攻击的表现之一&#xff1a;服务器CPU被大量占用 ddos攻击其实是一种恶意性的资源占用攻击&#xff0c;攻击者利用肉鸡或者攻击软件对目标服务器发送大量的无效请求&…

详解设计模式:代理模式

代理模式&#xff08;Proxy Pattern&#xff09;&#xff0c;Java 常见的设计模式之一&#xff0c;是 GoF 的 23 种设计模式中的一种结构型设计模式。 代理模式 是指客户端并不直接调用实际的对象&#xff0c;而是通过调用代理对象&#xff0c;来间接的调用实际的对象。代理对象…

矢量三维电磁铁的技术参数

产品介绍&#xff1a; 锦正茂自主研发的多极电磁铁以四极电磁铁居多&#xff0c;也有五极、六极、八极等多极的应用&#xff0c;主要应用于多极磁环充磁、径向梯度磁场、旋转磁场磁导向等多种应用。 产品用途&#xff1a; 电磁铁/电磁场发生器主要用于磁滞现象研究、磁化系数测…

SAP-S4 BP 业务伙伴(客户与供应商)管理后台配置

目录 一、定义业务伙伴角色 二、客户和BP主数据同步配置 三 、激活对话中平台对象的PPo请求 四、勾选活动的同步选项 五、定义编码范围 ​编辑 六、 设置客户与供应商的编码范围 一、定义业务伙伴角色 业务伙伴 IMG路径 &#xff1a; 跨应用组件->SAP业务伙伴 -> …

热门Java开发工具IDEA入门指南——如何配置IDE

IntelliJ IDEA&#xff0c;是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具&#xff0c;尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能是非常强大的。 上文…

HarmonyOS应用API手势方法-PinchGesture

描述&#xff1a;用于触发捏合手势&#xff0c;触发捏合手势的最少手指为2指&#xff0c;最大为5指&#xff0c;最小识别距离为3vp。 Api&#xff1a;从API Version 7开始支持 接口&#xff1a;PinchGesture(value?: { fingers?: number, distance?: number }) 参数&…

【Android App】实战项目之仿微信的私信和群聊App(附源码和演示视频 超详细必看)

需要全部代码请点赞关注收藏后评论区留言私信~~~ 手机最开始用于通话&#xff0c;后来增加了短信功能&#xff0c;初步满足了人与人之间的沟通需求。然而短信只能发文字&#xff0c;于是出现了能够发图片的彩信&#xff0c;但不管短信还是彩信&#xff0c;资费都太贵了&#xf…

极光Q3财报解读:营收稳健控费见效 估值修复空间巨大

极光似乎正在渡过转型阵痛期。 11月23日&#xff0c;极光移动股份有限公司(JG.US)公布了2022年第三季度未经审计财务业绩&#xff0c;营收1130万美元&#xff0c;环比上升6%&#xff0c;同比降幅收窄&#xff0c;虽然低于市场预期的1214万美元&#xff0c;但是客户总数同比增长…

[Java反序列化]—CommonsCollections5

先贴张其他师傅的图 其实 CC5就是CC1的一种变形&#xff0c;前半段改修一下&#xff0c;后面接上就是CC5了。CC1是通过AnnotationInvocationHandler.invoke()获取get()&#xff0c;而CC5则是通过TiedMapEntry.toString()&#xff0c;其余部分都是一样的 分析 看看TiedMapEntr…

[附源码]Python计算机毕业设计Django-大学生健康档案管理

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

Codeforces Round #836 (Div. 2) A.B.C.D

A. SSeeeeiinngg DDoouubbllee 题目链接&#xff1a; Problem - A - Codeforces 题面&#xff1a; 题意&#xff1a; 给定一个字符串&#xff0c;把这个字符串每个字符重复两遍后重新排序一定是一个回文串&#xff0c;问这个回文串是什么 思路&#xff1a; 题目是多种答案…

LVS-DR模式单网段和多网段案例实现

1 实验环境&#xff1a; 一台&#xff1a;客户端 eth0:仅主机 192.168.10.8/24 GW:192.168.10.18一台&#xff1a;ROUTER eth0 :NAT 192.168.100.18/24 eth1: 仅主机 192.168.10.18/24 启用 IP_FORWARD一台&#xff1a;LVS eth0:NAT:DIP:192.168.100.48/24 GW:192.168.100.18两…

进程与信号(三)

目录 一、前言 二、Signals 1、Signal Handling&#xff08;ctrlc.c&#xff09; 2、Sending Signals &#xff08;1&#xff09;alarm.c &#xff08;2&#xff09;A Robust Signals Interface &#xff08;3&#xff09;ctrlc2.c 3、Signal Sets &#xff08;1&…

小学生python游戏编程arcade----单词对错检测及记录写入excel中

小学生python游戏编程arcade----单词对错检测及记录写入excel中前言单词对错检测及记录写入excel中1、excel读取修改1.1 excel读取1.2 修改用到的库1.3 获取Excel表格名称的三种方式1.4 excel格式问题excel文件保存2.1 保存函数2.2 实验2.3 游戏中调用修改2.4 升级时保存字典内…

SuperMap GIS管线数据优化

一、优化目的 城市管网数据错综复杂&#xff0c;未经优化处理的数据在加载过程中可能会出现显示效果差&#xff0c;浏览效率低的情况&#xff0c;特别是在浏览器端&#xff0c;受文件请求量&#xff0c;网络带宽、硬件性能等方面的影响&#xff0c;未经优化的管线数据显示可能不…

5个高清图片素材网站,无水印,免费商用。

网上找的图片素材清晰度不够&#xff0c;版权不明确怎么办。看看这几个可商用图片素材网站&#xff0c;解决你的所有图片需求&#xff0c;高清无水印、下载无限制、免费可商用&#xff0c;赶紧马住&#xff01; 1、菜鸟图库 https://www.sucai999.com/pic.html?vNTYxMjky 网站…