首页 > 数据库 >Redis数据结构--SDS动态字符串

Redis数据结构--SDS动态字符串

时间:2023-06-10 21:34:17浏览次数:38  
标签:SDS -- buf Redis 字符串 长度 1M

Redis中保存的key是字符串,value往往是字符串或者字符串的集合,但是redis并没有直接使用c语言中的字符串

原因在于:

  1.获取字符串长度需要通过运算

  2.非二进制安全

  3.不可修改

SDS

struct sdshdr{
    //记录buf数组中使用字节的数量
    //等于SDS所保存字符串的长度          
    int len;    
    //记录buf数组中未使用字节的数量
    int free;
    //字节数组,用于保存字符串
    char buf[];      
}

SDS之所以叫动态字符串,是因为其具备自动扩容的能力

  如果新字符串小于1M,则新空间为扩展后字符串长度的两倍+1

  如果新字符串大于1M,则新空间为扩展后的字符串长度+1M+1

优点:

  1.获取字符串长度的时间复杂度为O(1)

  2.支持动态扩容

  3.减少内存分配次数

  4.二进制安全

标签:SDS,--,buf,Redis,字符串,长度,1M
From: https://www.cnblogs.com/99kol/p/17471975.html

相关文章

  • jmeter003:(HTTP请求默认值)元件
    HTTP请求默认值作用:当有多个请求的协议、ip、端口号、路径、内容编码、参数、消息数据体是一样时,可以使用http请求默认来代替多个请求值添加路径:线程组>配置元件>HTTP请求默认值使用方法:如下图,(请求1、请求2、请求3)添加了(HTTP请求默认值)之后,请求数据取的都是(HTTP请求默认值)里面......
  • 5.28学习总结
    CSS分页实例本章节我们将为大家介绍如何通过使用CSS来创建分页的实例。简单分页如果你的网站有很多个页面,你就需要使用分页来为每个页面做导航。以下实例演示了如何使用HTML和CSS来创建分页:CSS实例ul.pagination {    display: inline-block;    paddin......
  • 5.31学习总结
    flex-directionflex-direction 属性指定了弹性子元素在父容器中的位置。语法flex-direction:row|row-reverse|column|column-reverseflex-direction的值有:row:横向从左到右排列(左对齐),默认的排列方式。row-reverse:反转横向排列(右对齐,从后往前排,最后一项排在最前面。......
  • 5.30学习总结
    CSS3弹性盒子(FlexBox)弹性盒子是CSS3的一种新的布局模式。CSS3弹性盒(FlexibleBox或flexbox),是一种当页面需要适应不同的屏幕大小以及设备类型时确保元素拥有恰当的行为的布局方式。引入弹性盒布局模型的目的是提供一种更加有效的方式来对一个容器中的子元素进行排列、......
  • 6.1学习总结
    justify-content属性内容对齐(justify-content)属性应用在弹性容器上,把弹性项沿着弹性容器的主轴线(mainaxis)对齐。justify-content语法如下:justify-content:flex-start|flex-end|center|space-between|space-around各个值解析:flex-start:弹性项目向行头紧挨着填......
  • 很好,一个可以写进简历的证书考试马上来了
    本文首发自公粽hao「林行学长」,欢迎来撩,免费领取20个求职工具资源包。了解校招、分享校招知识的学长来了!不少同学肯定心烦自己在校期间没有啥证书,但是,你可以永远相信你有很多证书可以考!比如马上来到的四六级~是的,那个曾经被认为没有四六级证书毕不了业的考试。虽然现在不少学校放宽......
  • Golang的错误处理
    Golang的错误处理引言在软件开发中,错误处理是一个非常重要的方面。它涉及到识别、捕获和处理在程序执行期间可能发生的错误。在Golang中,错误处理是一个值得关注的主题,因为它为开发人员提供了一种优雅且高效的方式来处理错误情况。本文将深入探讨Golang的错误处理机制,并为您提供一......
  • 【图像去噪】基于图像加噪去噪算法合集附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • 2023-06-10:给定一个由 n 个节点组成的网络,用 n x n 个邻接矩阵 graph 表示 在节点网络
    2023-06-10:给定一个由n个节点组成的网络,用nxn个邻接矩阵graph表示在节点网络中,只有当graph[i][j]=1时,节点i能够直接连接到另一个节点j。一些节点initial最初被恶意软件感染。只要两个节点直接连接,且其中至少一个节点受到恶意软件的感染,那么两个节点都将被恶意软件......
  • 文心一言 VS 讯飞星火 VS chatgpt (37)-- 算法导论5.4 1题
    一、一个屋子里必须要有多少人,才能让某人和你生日相同的概率至少为1/2?必须要有多少人,才能让至少两个人生日为7月4日的概率大于1/2?文心一言:一个屋子里必须要有多少人,才能让某人和你生日相同的概率至少为1/2?答案:23人。证明:假设有n个人,生日都在一年365天当中,则某人和你的生日相......