【redis 第七篇章】动态字符串

news2024/9/30 1:40:23

一、概述

string 类型底层实现的简单动态字符串 sds,是可以修改的字符串。它采用预分配冗余空间的方式来减少内存的频繁分配。

二、SDS动态字符串

在这里插入图片描述

动态字符串 是以 \0 为分隔符。最大容量 是 redis 主动分配的一块内存空间,实际存储内容 是具体的存的数据。

三、SDS(动态字符串)与 c语言 字符串的区别

1、获取存储长度不同

c语言:c语言不记录长度信息,如果要获取字符串的长度,需要遍历所有的字符串,才能获取字符串的长度。获取长度的复杂度为 O(n)

sds(动态字符串):sds存储了字符串的长度,获取长度的复杂度为 O(1)

2、缓存溢出

c语言:c语言不记录长度,在执行strcat函数时,假设分配了内存,存储的内容比已经分配的内存多时,这个时候就会出现缓冲区溢出现象。

sds(动态字符串):sds存储内容时,先检查内容的存储是否能够存储下实际的值,如果不能存储实际的值,就先扩展缓存区域,再将值存储到缓冲区域中。

3、内存的开辟和释放

c语言:需要自己主动释放或者扩展内存,如果不能够主动释放或者扩展内存,就会出现缓冲溢出或者泄露。
sds(动态字符串):sds采取下面的方式

// 空间预分配 先进行内存区域进行扩展,然后在执行下面的代码
public void  test(){
    if(len < 1M){
    //程序分配和len属性一样的大小未使用的空间。
    } else if (len > 1M){
    //程序分配1M 未使用的空间。
    }
}

// 惰性空间释放 
// 在修改字符串时,如果实际的内容要比老的数据小,先不将缓冲区的空闲内存释放掉,等下次存储内容时再进行空间的释放或者扩展。

4、二进制安全

c语言:C语言必须存储指定的格式数据。
sds(动态字符串):SDS不会对数据限制。

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

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

相关文章

BACnet 调试工具 工程师必备

文章目录 BACnet 调试工具 工程师必备主要功能软件截图 BACnet 调试工具 工程师必备 官网地址 BACnet&#xff08;Building Automation and Control Networks&#xff09;是由美国采暖、制冷与空调工程师学会&#xff08;American Society of Heating, Refrigerating and Air…

【网络层】IP报文解析和网段划分

文章目录 网络层的作用IP协议协议报头格式网段划分DHCPCIDR划分方案 IP地址的数量限制私有IP地址和公网IP地址LAN和WAN 路由 网络层的作用 前面学习了应用层和传输层&#xff0c;应用层的作用是为用户和应用程序提供网络服务&#xff0c;传输层的作用是提供端口到端口的通信服…

Android 10.0 系统默认蓝牙打开状态栏显示蓝牙图标功能实现

1.前言 在10.0的系统rom定制化开发过程中,在默认系统中,打开蓝牙开关的时候不会状态栏不会显示蓝牙图标,而只有 蓝牙连接成功后会显示蓝牙图标,客户开发需要要求在蓝牙打开的时候在状态栏就显示蓝牙图标,接下来分析下 相关的状态栏图标显示流程,然后实现相关功能 2.系统…

模块的介绍

一、模块的基本介绍 1、模块是什么&#xff1f; 1&#xff09;模块是一个py文件&#xff0c;后缀名.py 2&#xff09;模块可以定义函数、类和变量&#xff0c;模块里也可能包含可执行的代码 2、模块的作用有哪些&#xff1f; 1&#xff09;当函数、类、变量很多时&#xf…

java基础--字符串用法

一、前言&#xff08;在java中字符串的重要性&#xff09; 在 Java 编程中&#xff0c;字符串&#xff08;String&#xff09;的重要性不言而喻&#xff0c;它几乎贯穿于所有的应用程序和系统中。以下是 Java 中字符串重要性的几个方面&#xff1a; 1. 数据表示和处理 文本数…

使用PXE和kickstart完成自动化批量主机的安装

本实验采用的版本为rhel7.9 kickstart&#xff1a; 首先写一个kickstart脚本 安装脚本工具 配置自动化脚本 下载http服务用来共享脚本 yum install httpd -y systemctl enable httpd --now 实验的过程中把防火墙和selinux都关闭 配置自动化脚本 创建一个软链接使得用户访…

集团ERP信息化项目实施方案(可编辑82页PPT)

引言&#xff1a;在当前信息化快速发展的时代&#xff0c;集团企业面临着日益增长的业务复杂性和数据管理挑战。为了提升集团的整体运营效率、加强数据集成与共享、优化业务流程&#xff0c;我们决定实施ERP&#xff08;企业资源计划&#xff09;信息化项目。 方案介绍&#x…

最新口型同步技术EchoMimic部署

EchoMimic是由蚂蚁集团推出的一个 AI 驱动的口型同步技术项目&#xff0c;能够通过人像面部特征和音频来帮助人物“对口型”&#xff0c;生成逼真的动态肖像视频。 EchoMimic的技术亮点在于其创新的动画生成方法&#xff0c;它不仅能够通过音频和面部关键点单独驱动图像动画&a…

翻译: 可视化深度学习反向传播原理二

顺便一提 这有一点点像描述生物中 神经元的网络如何学习的一个理论 “赫布理论” 总结起来就是“一同激活的神经元关联在一起” 这里 权重的最大增长 即连接变得更强的部分 就会发生在已经最活跃的神经元 和想要更多激发的神经元之间 可以说 看见一个“2”时激发的神经元 会和…

【Git】git 不跟踪和gitignore区别

文章目录 不跟踪&#xff08;Untracked&#xff09;&#xff1a;.gitignore 文件&#xff1a;总结 在 Git 中&#xff0c;不跟踪&#xff08;untracked&#xff09;和 .gitignore 文件有不同的作用和用途&#xff1a; 不跟踪&#xff08;Untracked&#xff09;&#xff1a; 不…

【Material-UI】Autocomplete中的高亮功能(Highlights)详解

文章目录 一、简介二、实现高亮功能示例代码代码解释 三、实际应用场景1. 搜索功能2. 表单自动完成 四、总结 在现代Web开发中&#xff0c;提供清晰的用户反馈是提升用户体验的重要组成部分。Material-UI的Autocomplete组件通过高亮功能&#xff0c;帮助用户快速识别搜索结果中…

Javaweb项目|ssm基于ssm的宠物医院管理系统的设计与实现vue

收藏点赞不迷路 关注作者有好处 文末获取源码 一、系统展示 二、万字文档展示 基于ssm基于ssm的宠物医院管理系统的设计与实现vue 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringSpringMVCMyBatisVue 工具&#xff1a;IDEA/Ecilpse、Navicat、Ma…

Java线程池的核心参数与工作原理

Java线程池的核心参数与工作原理 1、线程池工作原理2、核心参数 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1、线程池工作原理 Java的ThreadPoolExecutor是线程池的核心实现&#xff0c;负责管理一组线程以异步方式执行提交的任务。其…

keil编译报错error:#8:missing closing quote 处理

MDK5采用UTF-8&#xff0c;提示很多个这样的error:#8&#xff1a;missing closing quote 的错误信息。提供以下几种方式解决&#xff1a; 在KEIL中Options for Target Flash -> C/C -> Misc Controls添加“--localeenglish”。

AI智能名片小程序在促销性内容营销中的创新应用与策略分析

摘要&#xff1a;在数字化时代&#xff0c;企业营销手段日益丰富多元&#xff0c;促销性内容作为吸引顾客、促进消费的关键手段之一&#xff0c;其形式与效率不断被革新。随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;AI智能名片小程序作为一种新兴的营销…

React(四):DOCX文件在线预览

效果 注意 ⚠️注意&#xff1a;部分文件预览存在问题 依赖 $ yarn add docx-preview $ yarn add jszip源码 import ./index.scss; import {useRef} from react; import type {UploadRequestOption} from rc-upload/lib/interface; import {Upload, Button, message} from an…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 会议室占用时间(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM金牌🏅️团队| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题…

力扣-46.全排列

刷力扣热题–第二十六天:46.全排列 新手第二十六天 奋战敲代码&#xff0c;持之以恒&#xff0c;见证成长 1.题目简介 2.题目解答 这道题目想了会,思路比较好想,但一直没调试成功,所以就参考了力扣官网的代码,积累一下回溯算法的实现和基本实现思路,即先试探后回溯,结果在下面…

R语言中的宽长数据转换:tidyr包的使用指南

在数据分析中&#xff0c;数据的存储方式直接影响分析过程的效率和准确性。常见的数据存储形式有宽型数据&#xff08;wide format&#xff09;和长型数据&#xff08;long format&#xff09;。宽型数据适合人类查看和理解&#xff0c;而长型数据则更适合计算机处理和分析。为…

AI生成PPT?三款工具让总结更轻松

哎呀&#xff0c;职场新人们&#xff0c;你们是不是也跟我一样&#xff0c;刚开始做PPT的时候&#xff0c;感觉像是走进了一个大迷宫&#xff0c;脑袋里装满了想法&#xff0c;但就是不知道怎么把它们变成一页页漂亮的幻灯片&#xff1f;别急&#xff0c;今天咱们就来聊聊三个超…