Redis-String底层


String 字符串

是最基本的 redis 数据类型,比如常见的 set key value 就是 String 类型。

底层实现

String 内部是基于动态字符串 SDS 实现的,这和 C 语言的字符串不一样。

  • SDS 不仅可以保存文本信息也可以保存二进制数据,所以视频、音频、图片都可以用 SDS 保存。

为啥可以存储二进制数据,其底层不也是 char 数组吗,而且还有 \0 ,存二进制不是会造成误判吗?
因为 SDS 底层在对象头里加了一个字段,记录当前字符串的长度,忽略了 C 语言字符串的 \0 ,所以可以直接用来获取字符串长度。

但是不建议用 redis 存储,因为一般这些数据的体积很大,而 String 的 value 最大限制为 512M

  • SDS 自带 len 变量记录数据长度,可以很快获得数据长度。
  • SDS 拼接字符串不会造成缓冲区溢出,因为在拼接字符串之前会检测并会自动扩容(预分配机制)。

常用命令 (包含应用场景)

列举一些常用的:

  1. 设置 key 的值:set key value 获取 key 的值: get key (可用于 Session 存储和读取
  2. 分布式锁的应用(一种互斥锁):SETNX key value 存在就不能创建,不存在则可以创建。
  3. 指定多个 key - value :MSET key1 value1 key2 value2 MSET 命令后每一对就是一个键值对。
  4. 获取 key 对应的数据长度:STRLEN key
  5. 删除键值对:DEL key (通用)

文章作者: KTpro
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 KTpro !
评论
  目录