Redis 学习笔记(一) 字符串 SDS「终于解决」

Redis 学习笔记(一) 字符串 SDS「终于解决」SDS 简单动态字符串。 SDS的结构: struct sdshdr{ int len;//记录BUF数组中已使用字节的数量 ,等于SDS所八寸字符串的长度 int free;//记录BUF数组中未使

Redis 学习笔记(一) 字符串 SDS

SDS 简单动态字符串。

SDS的结构:

struct sdshdr{
int len;//记录BUF数组中已使用字节的数量 ,等于SDS所八寸字符串的长度

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

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

代码100分

1、与c语言的字符串相比,SDS获取长度时,时间复杂度位O(1),c的复杂度位O(n)。

2、杜绝缓冲区溢出,c字符串若未重新分配内存,在进行字符串拼接时,会导致扩展字符串s1的数据溢出到s2所在的空间,导致s2所保存的内容被意外修改(缓冲区溢出)。

3、杜绝内存泄漏,若裁剪字符串,若未重新分配内存,则会造成内存泄露。

4、对于SDS来说,如果扩展,则SDS API 会检查空间是否足够,如果足够则直接使用未使用的空间,无需重新分配。惰性释放空间,SDS需要缩短时,程序不会立即重新分配内存,而是使用free记录这些多余的空间,等待将来使用。

5、SDS的API都是使用二进制安全的,所有的SDS API都会以处理二进制的方式处理SDS存放在buf数组中的数据,程序不会对其中的数据做任何限制、过滤、或者假设,所以Redis不是用数组保存字符串,而是用它来保存一系列的二进制数据。

Redis 学习笔记(一) 字符串 SDS「终于解决」

 

 

 

 

Redis 学习笔记(一) 字符串 SDS「终于解决」

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/8528.html

(0)
上一篇 2023-02-26
下一篇 2023-02-26

相关推荐

  • 技术分享 | MySQL 多源复制场景分析

    技术分享 | MySQL 多源复制场景分析作者:杨涛涛 今天有客户问起:如何汇总多台 MySQL 数据到一台上? 我回答:可以尝试下 MySQL 的多源复制。 我们知道 MySQL 单主一从,单主多从,或者级联的主从架构我们都见的很多了。但…

    2022-12-15
    154
  • MySQL日期函数之字符串和时间戳互转[通俗易懂]

    MySQL日期函数之字符串和时间戳互转[通俗易懂]平时比较常用的时间、字符串、时间戳之间的互相转换,虽然常用但是几乎每次使用时候都喜欢去搜索一下用法;本文将作为一个笔记,整理一下三者之间的 转换(即:date转字符串、date转时间戳、字符串转dat

    2023-02-24
    152
  • greenplum安装教程_greenplum安装部署

    greenplum安装教程_greenplum安装部署greenplum install [TOC] OS:rhel7.5 x86_64 DB:GreenPlum db 6.x 下载源码包安装 gp download 安装前参考最佳实践对操作系统进行优…

    2023-02-27
    139
  • 关闭mysql服务命令

    关闭mysql服务命令关闭MySQL的命令是”mysqladmin -u root -p shutdown”,其中-u、-p参数是登录MySQL时所需的用户名和密码。

    2024-09-06
    21
  • sqlyog格式化快捷键_sql格式化字符串

    sqlyog格式化快捷键_sql格式化字符串在平时开工作发中,当遇到 SQL 语句格式混乱、字段又比较多的时候,真是让人狂抓! 幸好,最近发现了一款好用的T-SQL格式化工具:Poor Man's T-SQL Formatter。该工具

    2023-03-20
    252
  • CentOS7安装部署Mongodb「终于解决」

    CentOS7安装部署Mongodb「终于解决」1、下载安装包 打开官网,跳转至下载界面,选择对应版本的安装包,拷贝其链接,这里是手动安装,所以下载tgz安装包,如果要自动化安装,选择server的rpm自动安装包 https://www.mong

    2023-05-15
    157
  • SQL的多表联查

    SQL的多表联查SQL的多表联查 在奋斗,90在追求。勇往无前,斗志昂扬,激情澎湃。我们在坚定的毅志中一天天的长大,一天天的成熟。岁月蹉跎,只为追求此生无悔! 表关联 association 概念 表table代表了

    2023-04-21
    222
  • (9)MySQL进阶篇SQL优化(InnoDB锁-记录锁)[亲测有效]

    (9)MySQL进阶篇SQL优化(InnoDB锁-记录锁)[亲测有效]1.概述 InnoDB行锁是通过给索引上的索引项加锁来实现的,这一点MySQL与Oracle不同,后者是通过在数据块中对相应数据行加锁来实现的。InnoDB这种行锁实现特点意味着:只有通过索引条件检索

    2023-04-15
    159

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注