Redis数据结构及对应使用场景,看一次就整明白了

本文详细介绍了Redis的基础数据结构,包括String、List、Hash、Set和Zset(有序集合)。String是动态字符串SDS,支持修改,常用命令有设置、获取等。List采用ziplist或quicklist存储,适用于消息队列、列表等功能。Hash内部类似HashMap,用于存储对象,提供字段级别的操作。Set用于存储唯一元素,适合好友列表等场景。Zset提供有序集合,内部使用跳跃表,可用于排行榜、动态排序等应用。
摘要由CSDN通过智能技术生成

目录

Redis基础数据结构有哪些?

一、String(字符串)

1、应用场景:

2、字符串(String)常用的命令:

二、list(列表)

1、应用场景:

2、list操作的常用命令:

三、hash (字典)

1、应用场景:

2、hash常用的操作命令:

四、set(集合)

1、应用场景:

2、set的常用命令:

五、zset(有序集合)

1、应用场景:

2、zset有序集合的常用操作命令:


  String list hash set zset
应用场景 存储key-value键值对 朋友圈点赞列表评论列表、消息队列 购物车、存储对象 好友/粉丝/关注的集合、首页随机展示 排行榜、存学生成绩

Redis基础数据结构有哪些?

一、String(字符串)

在任何一种编程语言里,字符串 String 都是最基础的数据结构, 那你有想过 Redis 中存储一个字符串都进行了哪些操作嘛?

在 Redis 中 String 是可以修改的,称为 动态字符串 ( Simple Dynamic String 简称 SDS )( 快拿小本本记名词,要考的 ),说是字符串但它的内部结构更像是一个 ArrayList ,内部维护着一个字节数组,并且在其内部预分配了一定的空间,以减少内存的频繁分配。

Redis 的内存分配机制是这样:

  • 当字符串的长度小于 1MB时,每次扩容都是加倍现有的空间。

  • 如果字符串长度超过 1MB时,每次扩容时只会扩展 1MB 的空间。

这样既保证了内存空间够用,还不至于造成内存的浪费, 字符串最大长度为 512MB . 

Redis数据结构及对应使用场景,看一次就整明白得了

image.png

上图就是字符串的基本结构,其中 content 里面保存的是字符串内容, 0x\0 作为结束字符不会被计算 len 中。

分析一下字符串的数据结构

struct SDS{
  T capacity;       //数组容量
  T len;            //实际长度
  byte flages;  //标志位,低三位表示类型
  byte[] content;   //数组内容
}

capacity 和 len 两个属性都是泛型,为什么不直接用 int类型 ?因为 Redis 内部有很多优化方案,为更合理的使用内存,不同长度的字符串采用不同的数据类型表示,且在创建字符串的时候 len 会和 capacity 一样大,不产生冗余的空间,所以 String 值可以是字符串、数字(整数、浮点数) 或者 二进制。

1、应用场景:

存储key-value键值对,这个比较简单不细说了

2、字符串(String)常用的命令:<

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值