学习笔记 | Redis 8大核心数据类型

● 请问Redis的数据类型有哪些,底层怎么实现?

1)字符串:整数值、embstr编码的简单动态字符串、简单动态字符串(simple dynamic string)
2)列表:压缩列表、双端链表
3)哈希:压缩列表、字典
4)集合:整数集合、字典
5)有序集合:压缩列表、跳跃表和字典

数据结构

  • Redis 内部使用字典来存储不同类型的数据,如下图中的 dictht,字典由一组 dictEntry 组成,其中包括了指向 key 和 value 的指针以及指向下一个 dictEntry 的指针。

在这里插入图片描述

  • 在 Redis 中,所有的对象都被封装成了 redisObject,如图中浅绿的模块。
  • redisObject 包括了对象的类型,就是 Redis 支持的 string、hash、list、set 和 sorted set 5种类型。
  • 另外 redisObject 还包括了具体对象的存储方式,如图最右边的虚线标出的模块内的几种类型。

Redis 有 8 种核心数据类型

  • Redis数据结构与内部编码的关系
    在这里插入图片描述
  • bitmap 位图类型;
  • geo 地理位置类型;
  • HyperLogLog 基数统计类型。

string 字符串

  • string 是 Redis 的最基本数据类型。可以把它理解为 Mc 中 key 对应的 value 类型。string 类型是二进制安全的,即 string 中可以包含任何数据
  • Redis 中的普通 string 采用 raw encoding原始编码方式,该编码方式会动态扩容,并通过提前预分配冗余空间,来减少内存频繁分配的开销。
  • 在字符串长度小于 1MB 时,按所需长度的 2 倍来分配,超过 1MB,则按照每次额外增加 1MB 的容量来预分配。
  • Redis 中的数字也存为 string 类型,但编码方式跟普通 string 不同,数字采用整型编码,字符串内容直接设为整数值的二进制字节序列。
  • 在存储普通字符串,序列化对象,以及计数器等场景时,都可以使用 Redis 的字符串类型,字符串数据类型对应使用的指令包括 set、get、mset、incr、decr 等。
  • string 内部的实现是通过 SDS(Simple Dynamic String ) 来存储的。SDS 可以通过预分配冗余空间的方式
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值