2、Redis中简单动态字符串的简介,也就是Redis中的键和值的字符串底层表达
创始人
2024-02-24 14:22:07
0

简介

首先在Redis中,没有直接使用C语言传统字符串表示(以空字符结尾的字符数组,以下简称C字符串),而是自己构建了一种名为简单动态字符串(simple dynamic string,SDS)的抽象类型(可以简单的理解为Java中的String 类),并且将SDS用作Redis的默认字符串表示。

C语言字符串:

#include int  main(){char c0[] = { 'c', ' ', 'p', 'r', 'o', 'g'}; //普通字符数组printf("c0 = %s\n", c0); //没有乱码,因为编译的时候,以字符串格式输出的时候,默认在数组尾部追加了'\0' char c1[] = { 'c', ' ', 'p', 'r', 'o', 'g' ,0}; //普通字符数组printf("c1 = %s\n", c1); //没有乱码 //以 0 (‘\0’就是数字0)结尾的字符数组是字符串char c2[] = { 'c', ' ', 'p', 'r', 'o', 'g', '\0' };printf("c2 = %s\n", c2);//字符串处理以‘\0’(数字0)作为结束符,后面的'h', 'l', 'l', 'e', 'o'不会输出char c3[] = { 'c', ' ', 'p', 'r', 'o', 'g', '\0', 'h', 'l', 'l', 'e', 'o', '\0' };printf("c3 = %s\n", c3);return 0;}

在这里插入图片描述

Redis里面,C字符串只会作为字符串字面量(string literal)用在一些无需对字符串值,修改的地方,例如打印日志:

redisLog(REDIS_WARNING,"Redis is now reday to exit,bye bye . . .")

当Redis需要的不仅仅 是一个字符串字面量,而是一个可以被修改的字符串值的时候,就会采用SDS来表示字符串值,比如Redis 的数据库里面,包含字符串值得键值对在底层都是由SDS实现的。

举个例子:
如果客户端执行一个命令:

redis > SET msg "hello world"
OK

那么Redis 将在数据库中创建一个新的键值对,其中:
键值对的键 msg ,底层实现是一个保存着字符串"msg"的SDS
键值对的值,底层实现是一个保存着字符串"hello world" 的SDS

又比如,如果客户端执行命令:

redis> RPUSH fruits "apple" "banana" "cherry"
(integer) 3

那么,Redis 将在数据库中 ,创建一个新的键值对,其中:
1、键值对的键 是一个字符串对象,对象的底层保存着一个字符串"fruits “的SDS。
2、键值对的值,是一个列表对象,列表对象中包含了3个字符串对象,这3个字符串对象分别由3个SDS实现: 分别保存着"apple” 、“banana” 、“cherry” 字符串对象。

SDS除了用来保存数据库中的字符串值以外,SDS还被用作缓冲区:AOF模块中的AOF缓冲区,以及客户端状态中的输入缓冲区,都是由SDS实现的,我会在别的章节中介绍AOF持久化和客户端状态的时候,可以看到SDS在这2个模块中的应用。

下面将会对SDS的实现进行介绍,说明SDS和C字符串的不同之处,解释为什么Redis要使用SDS而不是C字符串,并且在最后给出SDS的操作api

SDS实现介绍:
链接: 2.1 SDS的定义
链接: 2.2 SDS 与C字符串的区别

链接: 2.3 SDS的API

相关内容

热门资讯

米兰:警方逮捕一名在地铁站尾随... 据意大利媒体报道,奋斗在意大利综合编译:近日,意大利宪兵破获两起针对未成年女孩的性侵案件,逮捕了一名...
广州海事法院成功执行和解一宗船... “谢谢田法官,这面锦旗我终于送到了。”近日,60多岁的刘奶奶专门来到广州海事法院,将一面印着“秉公执...
每年最高节税5400元!还有这... 每年最多省税5400元,国家鼓励你开一个“养老小金库”!注意,2025年度缴费截至12月31日! 你...
影院取消放映场,镇江消协调解:... 扬子晚报网12月20日讯(通讯员 陈红生 记者 万凌云 姜天圣)近日,消费者董女士投诉反映,在镇江一...
山西运城公安侦破两起燃气公司员... 又到一年取暖季,千家万户燃起天然气化作一股股暖流,守护着冬日里的烟火气。然而,在利益的驱使下,加之法...
120万的保时捷卡宴只卖60万... 12月18日,海南正式宣布封关,随着海南自贸港“零关税”进口车政策正式落地,很多网友发现,海南的进口...
海南封关,税收政策有哪些变化 12月18日,海南正式实施全岛封关。全岛封关运作是海南自贸港建设的标志性工程,是进一步扩大开放的重要...
六代刑侦人十八年追凶 犯罪嫌疑... 寇松 中青报·中青网记者 胡宁 初冬的深夜,首都机场公安局办公大楼前,20多个身影注视着大门的方向。...
关注增值税!2026年继续执行... 2026年执行的增值税优惠政策 基于行政行为的公定力、确定力、拘束力和执行力等四效力原则,税海涛声认...
辅警工作近6年因有纹身被辞退,... 红星新闻记者从一审判决书中看到,原告刘某在诉讼中称,自己于2019年9月入职被告单位,任警务辅助人员...