Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >redis 6源码解析之 sds

redis 6源码解析之 sds

原创
作者头像
charlieroro
修改于 2020-04-17 02:12:53
修改于 2020-04-17 02:12:53
4570
举报
文章被收录于专栏:charlierorocharlieroro

redis使用sds(simple dynamic string)实现了字符串的存储。sds实际上就是TLV格式的数据结构。其数据结构主要分为如下5种,主要分为首部和数据部分,首部给出了type和len信息,数据部分用于存储字符串数据。不同的首部可以表示不同长度的字符串数据,如SDS_TYPE_8最大可以表示(2^8 -1)大小的字符串数据。划分为不同类型的sds首部是为了减少内存浪费。

sds实现了字符串存储的扩展(基于realloc命令)和收缩(使用malloc重新申请复制数据)以及字符串的一般操作,如大小写转换,截取,拼接等。在使用sds时要注意内存变动可能导致的性能问题。

源代码解析参见:sds.csds.h

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
redis 6源码解析之 sds
redis使用sds(simple dynamic string)实现了字符串的存储。sds实际上就是TLV格式的数据结构。其数据结构主要分为如下5种,主要分为首部和数据部分,首部给出了type和len信息,数据部分用于存储字符串数据。不同的首部可以表示不同长度的字符串数据,如SDS_TYPE_8最大可以表示(28 -1)大小的字符串数据。划分为不同类型的sds首部是为了减少内存浪费。
charlieroro
2020/04/24
3590
redis 6源码解析之 sds
Redis源码剖析之SDS(Simple Dynamic String)
SDS(simple dynamic string)是Redis提供的字符串的封装,在redis中也是存在最广泛的数据结构,它也是很多其他数据结构的基础,所以才选择先介绍SDS。 SDS也兼容部分C字符串API(strcmp,strlen),它如何兼容C字符串我觉得也是有个很sao的操作,等看完我这篇博客你就明白了。在开始正式内容前,我先抛几个问题(有些也是面试高频题),带着问题去学习也是一种非常好的学习方法。
xindoo
2021/01/22
5310
Redis源码剖析之SDS(Simple Dynamic String)
redis学习 - sds字符串
Redis 设计与实现:如果想要知道redis底层,这本书可以给予不少的帮助,非常推荐每一位学习redis的同学去翻一翻。
阿东
2021/08/16
3340
redis学习 - sds字符串
探索Redis设计与实现3:Redis内部数据结构详解——sds
本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看
Java技术江湖
2019/12/02
3790
redis SDS设计与实现分析
本系列文章从源码角度分析redis的设计与实现,分析的源码为最新版本7.2.4。下载地址(https://github.com/redis/redis/tree/7.2.4)。
数据小冰
2024/03/22
4000
redis SDS设计与实现分析
Redis 中的 “SOS”,不对,是 SDS
大家好,我是鸭血粉丝(大家会亲切的喊我 「阿粉」),是一位喜欢吃鸭血粉丝的程序员,之前给大家总结了线上 OOM 的情况,相信大家也能从中学到一些东西,身为一名有追求的程序员,阿粉我的理解是光会吃老本是不行的,所以我一直也在学习,今天大家就跟我一起来了解一下 Redis 的 SDS 吧(不是 SOS 哦~)。
纯洁的微笑
2020/02/12
5280
透过Redis源码探究字符串的实现
最近在通过 Redis 学 C 语言,不得不说,Redis的代码写的真的工整。这篇文章会比较全面的深入的讲解了Redis数据结构字符串的源码实现,希望大家能够从中学到点东西。
luozhiyun
2022/06/19
2210
透过Redis源码探究字符串的实现
Redis【2】- SDS源码分析
Redis 中用得最多的就是字符串,在 C 语言中其实可以直接使用 char* 字符数组来实现字符串,也有很多可以直接使用得函数。但是 Redis 并没有使用 C 语言原生的字符串,而是自己实现了一个 SDS(简单动态字符串,Simple Dynamic String) 。
秦怀杂货店
2024/12/07
1150
Redis【2】- SDS源码分析
面试杀手锏:Redis源码之SDS
Hello,欢迎大家来到《 Redis 数据结构源码解析系列》,在《Redis为什么这么快?》一文中我说过 Redis 速度快的一个原因就是其简单且高效的数据结构。
敖丙
2022/03/24
8130
面试杀手锏:Redis源码之SDS
Redis 源码简洁剖析 02 - SDS 字符串
C 语言 string 函数,在 C 语言中可以使用 char* 字符数组实现字符串,C 语言标准库 string.h 中也定义了多种字符串操作函数。
Yano_nankai
2022/03/24
3800
Redis 源码简洁剖析 02 - SDS 字符串
Redis剖析——Redis字符串的设计与实现
Redis是一个键值对数据库(key-value DB),下面是一个简单的Redis的命令:
binecy
2021/12/08
8610
Redis剖析——Redis字符串的设计与实现
Redis源码分析SDS
Redis 中字符串都用自定义的结构**简单动态字符串(Simple Dynamic Strings,SDS),而不是C语言的字符串。 Redis 中使用到的字符串都是用 SDS,例如 key、string 类型的值、sorted set 的 member、hash 的 field 等等等等
克虏伯
2023/11/05
2930
Redis源码分析SDS
Redis string之SDS源码分析2
上一篇我们看了Redis里面关于新旧版本对于sds的不同的结构体实现,接下来看看sds.c中关于redis动态字符串的具体操作。
邹志全
2019/07/31
3790
【Redis 系列】redis 学习十五,redis sds数据结构和底层设计原理
redis 是 C 语言写的,那么我们思考一下 redis 是如何表示一个字符串的?redis 的数据结构和 C 语言的数据结构是一样的吗?
阿兵云原生
2023/02/16
3590
Redis使用及源码剖析-2.Redis简单动态字符串(SDS)-2021-1-16
本文对Redis的简单动态字符串(simple dynamic string)进行了简要介绍,并结合sds对Redis的内存分配释放api进行分析,涉及的源码文件为sds.h、sds.c、zmalloc.h、zmalloc.c,源码下载地址为https://github.com/readywang/Redis3.0。
用户7719114
2022/02/22
5040
Redis使用及源码剖析-2.Redis简单动态字符串(SDS)-2021-1-16
String底层实现——动态字符串SDS
上篇我们已经了解了Redis是什么,在Linux上如何安装,常见的数据类型和API使用,如果有不明白的,可以移步到主页。
陈琛
2020/06/18
6110
redis数据结构-SDS
本文最后更新于 2022年12月30日,已超过 32 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
仙士可
2023/02/01
3350
redis数据结构-SDS
Redis 数据结构-字符串源码分析
平时在使用 Redis 的时候,只会使用简单的 set,get,并不明白其中的道理,为了探个究竟,搞个明白,就看了下其底层的实现 ^ ^。
Java技术编程
2020/05/21
4990
redis最核心的数据结构String之SDS
SDS名称叫做(simple dynamic string)翻译过来就叫简单的动态字串。顾名思义,它主要就是用来存字串数据的。类似于java的String对象。
小草飞上天
2025/01/14
1751
redis最核心的数据结构String之SDS
Redis系列之底层数据结构SDS
SDS:Simple Dynamic String,翻译为简单动态字符串。SDS是一种用于存储二进制数据的数据结构,具有动态扩容的特点,代码位于src/sds.h和src/sds.c
SmileNicky
2024/12/23
1740
Redis系列之底层数据结构SDS
相关推荐
redis 6源码解析之 sds
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档