Redis的五种基本数据类型

在Redis中,支持五种基本数据类型和多种高级数据类型。

首先,我们要知道Redis是一款免费、开源、遵循BSD协议的高性能结构化存储数据库,Redis自身是通过C语言实现的,同时,Redis是基于内存的,采用Key-Value结构化存储的NoSQL数据库,加上其底层采用单线程和多路I/O复用模型,所以Redis的查询速度很快。

Redis中的Key都是字符串类型的,但Value有五种基本数据类型。
这五种基本数据类型分别是:

  1. 字符串 String
  2. 列表 List
  3. 集合 Set
  4. 有序集合 SortedSet
  5. 哈希 Hash

Redis的命令不区分大小写,但是Key严格区分大小写。

字符串:

Redis中的Key都是字符串类型的,Redis自身也是通过C语言实现的,但是在C语言中,其实并没有字符串这种数据类型,C语言中的字符串通常都是一个以“\0”结尾的字符数组;但是Redis并没有使用C语言中这种传统的字符串表示方式,而是自己实现了SDS(Simple Dynamic String,简单动态字符串)的抽象类型,Redis中的字符串默认是通过SDS实现的

String是Redis中最基本的类型,同时String类型是二进制安全的,也就是说,Redis的String数据类型可以包含任何数据,例如jpg图片或序列化的对象。但是注意,String类型的值最大不能超过512MB。

列表:

Redis列表是简单的字符串列表,是有序的,其中的元素也可以重复;我们可以将一个元素添加到列表的头部(左边)或者尾部(右边),也可以从头部或者尾部弹出一个元素。一个列表最多可以包含(2^32 - 1)个元素。

因为列表的这些操作,我们可以将列表视为队列(先进先出)、堆栈(先进后出)。我们也可以向列表中间插入元素,或者根据列表中元素的下标来更改某个元素。

需要注意的是
访问列表头部或尾部的操作时间复杂度是O(1),这意味着它们非常高效。但是,操作列表中元素的命令时间复杂度通常是O(n),包括LINDEXLINSERTLSET。运行这些命令时要小心,尤其是在对大型列表进行操作时。

集合:

Redis的集合(Set)是唯一字符串(成员)的无序集合。也就是说,集合中的元素都是字符串,并且包含两个特点:无序、不可重复

集合是通过哈希表实现的,所以大多数集合操作(包括添加、删除和检查某元素是否为集合成员)的时间复杂度都是O(1)。但是,对于具有数十万或更多成员的大型集合,在运行SMEMBERS命令获得集合所有成员时应格外小心。此命令时间复杂度为O(n),并在单个响应中返回整个集合。作为替代方法,可以考虑SSCAN命令,它允许以迭代方式检索集合的所有成员。

集合最多可以包含(2^32-1)个元素。

有序集合:

Redis中的SortedSet和Set一样也是String类型元素的集合,且不允许有重复的成员。但不同的是每个元素都会关联一个double类型的分数,Redis正是通过分数来为集合中的成员进行排序。当多个字符串具有相同的分数时,字符串将按字典顺序排序。

有序集合大多数操作的时间复杂度是O(n),其中n是集合中的成员数。

注意
ZRANGE命令会返回有序集合Key中指定区间的元素。在运行具有较大返回值(数万或更多)的ZRANGE命令时要小心,此命令的时间复杂度为O(log(n) + m),其中m是返回的结果数。

哈希:

我们需要知道,Redis本身就是采用Key-Value结构化存储的NoSQL数据库。Hash数据类型是指Key-Value中的Value是一个键值(key-value)对集合。

大多数的哈希命令的时间复杂度都是O(1);一些命令(如HKEYSHVALSHGETALL)的时间复杂度是O(n),其中n是Value中键值对的数量。

每个哈希最多可以存储(2^32-1)个键值对。但实际上,哈希仅受限于部署Redis的VM的总内存限制。

此外,Redis还支持多种高级数据结构,如:Streams、Bitmap、Geospatial、HyperLogLog。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小挫折_仅此而已

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值