redis对象String

redis Object是什么?

Redis是key-value存储,key和value在Redis中都被抽象为对象,key只能是
String对象,而Value支持丰富的对象种类,包括String、List、Set、
Hash、Sorted Set、Stream等。

String

String就是字符串,它是Redis中最基本的数据对象,最大为512MB,我们
可以通过配置项proto-max-bulk-len来修改它,一般来说是不用主动修改
的。

常用操作

常用操作聚焦于创建、查询、更新和删除。
创建,即产生一个字符串对象数据,可以用SET、SETNX。
查询操作可以用GET,如果想一次获取多个,可以用MGET。
而更新的话,其实也是用SET来更新的。
删除就是针对String对象本身的销毁,用DEL命令。

在这里插入图片描述

底层实现

三种编码方式

String看起来简单,但实际有三种编码方式,如下图所示:
在这里插入图片描述
INT:当内容可以被解释为一个64位有符号整数的时候使用
EMBSTR:当长度较短时使用,会进行特殊编码以节省存储空间.
Raw:原生方式,直接将字符串以字节数组的形式存储,适用于较长的字符串

结构组成

EMBSTR和RAW都是由redisObject和SDS两个结构组成,它们的老异在
于,EMBSTR下redisObject和SDS是连续的内存,RAW编码下redisObject
和SDS的内存是分开的。

EMBSTR

优点

是redisObject和SDS两个结构可以一次性分配空间,

缺点

在于如果重新分配空间,整体都需要再分配,所以EMBSTR设计为只读,任何写
操作之后EMBSTR都会变成RAW,理念是发生过修改的字符串通常会认为是
易变的。

EMBSTR内存:

在这里插入图片描述

RAW内存

在这里插入图片描述

内存格式转换

INT->RAW:当存的内容不再是整数,或者大小超过了long的时候
EMBSTR->RAW:任何写操作之后EMBSTR都会变成RAW,原因前面有解
释。

SDS格式

在这里插入图片描述
其中有两个关键字段,一个是len,表示使用了多少;一个是alloc,表示一
共分配了多少内存。这两个字段的差值(alloc-len)就是预留望空间的大小。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C是计算机编程语言中的一种。它是由丹尼斯·里奇(Dennis Ritchie)在20世纪70年代早期开发的。C语言具有高效、灵活和可移植的特点,广泛应用于系统软件、应用软件和嵌入式系统的开发中。 C语言是结构化的,它允许程序员将程序拆分成多个模块,每个模块执行特定的功能。这种模块化的结构有助于程序的可读性和维护性。 C语言支持大量的运算符和控制结构,包括条件语句(如if-else)和循环语句(如for和while),使得程序员可以进行复杂的逻辑操作和迭代。 C语言还提供了丰富的库函数,包括输入输出、字符串处理、数学运算等,这些库函数可以方便地调用,减少了编写代码的工作量。此外,C语言还支持指针操作,允许直接对内存进行访问,提高了程序的效率。 由于C语言的高效性和可移植性,它成为了许多操作系统和编译器的基础。许多重要的软件和系统都是使用C语言开发的,如Unix操作系统、Linux内核和MySQL数据库等。 虽然C语言有很多优点,但也有一些缺点。例如,它对程序员的编程能力要求较高,需要较多的细节处理。此外,C语言没有内置的面向对象的特性,对于大型项目的开发可能不够方便。 总的来说,C语言是一种强大而灵活的编程语言,它在计算机科学领域有着广泛的应用。无论是初学者还是专业开发人员,都应该学习和掌握C语言,因为它对于理解和实践其他编程语言都非常有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值