Redis

关注公众号 jb51net

关闭
首页 > 数据库 > Redis > redis常用数据类型

redis中的常用5大数据类型

作者:csdn_HZW

这篇文章主要介绍了redis中的常用5大数据类型,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

1、string(字符串)

String是Redis中最常用的一种数据类型,也是Redis中最简单的一种数据类型。

首先,表面上它是字符串,但其实他可以灵活的表示字符串、整数、浮点数3种值。

Redis会自动的识别这3种值。

2、list(列表)

实际上是一个链表,before Node after , left,right 都可以插入值

在两边插入或者改动值,效率最高! 中间元素,相对来说效率会低一点~

消息排队!消息队列 (Lpush Rpop), 栈( Lpush Lpop)!

3、hash(哈希)

哈希的描述:

哈希的底层数据结构:

下面举个例子:

当你插入一条数据到哈希中时,它的存储过程如下:

假设你要执行以下命令将一条数据插入到哈希中:

HSET myhash field1 value1

让我们假设经过哈希计算后,得到的哈希值为 0x12345678,那么这条数据将存储在哈希表中的桶 0x1234 中。

假设该桶中已经有一些数据存在,哈希表和桶的存储可能如下所示:

Hash Table:
Bucket 0x1234:   --> {field2: value2} --> {field1: value1}
                  --> {field3: value3} --> {field4: value4}
                  --> ...
 
Bucket 0x5678:   --> {field5: value5}
                  --> ...
 
Bucket ...       --> ...

在这个示例中:

注意:

哈希和下面要介绍的set的底层数据结构有点相似,但是哈希里面存储的是键值对,偏向于键值对;set中偏向于值的集合。

4、set(集合)

集合的描述

集合(Set)的底层数据结构可以有两种形式:整数集合(IntSet)和哈希表(Hash Table)。

整数集合主要用于存储数字类型的元素,而哈希表则用于存储其他类型的元素或者大数量的元素。

整数集合(IntSet):

哈希表(Hash Table):

在插入数据时,底层数据结构可能会发生变化,具体取决于当前集合的类型和大小:

对于整数集合(IntSet):

对于哈希表(Hash Table):

当插入非整数类型的元素到哈希表时,Redis 会通过一系列步骤将该元素插入到哈希表中。

下面是这个过程的简要描述

开放定址法和链地址法是解决哈希冲突的两种常见方法。

开放定址法

链地址法

总的来说,开放定址法通过不断寻找空槽位来解决冲突,而链地址法通过维护链表来存储冲突的元素。

5、zset(有序集合)

有序集合(Sorted Set,通常简称为 ZSET)是 Redis 中的一种数据结构,它类似于集合(SET),但每个成员都关联了一个分数(Score),从而实现了元素的有序存储。

ZSET 的底层数据结构主要由两部分组成:跳跃表(Skip List)和哈希表(Hash Table)。

让我们来看一个示例,假设我们有一个 ZSET,存储了一些成员及其对应的分数。

假设我们有以下 ZSET:

ZADD myzset 10 member1
ZADD myzset 20 member2
ZADD myzset 30 member3

在底层,这个 ZSET 的数据可能会被存储如下:

跳跃表(Skip List)

Level 2:        member3 ---------------> NULL
Level 1:        member2 -------> member3
Base Level:     member1 -> member2 -> member3

在跳跃表中,每个节点包含成员和分数信息,并且包含指向同一层级下一个节点的指针。

较高层级的节点包含更多的指针,以实现更快的跳跃。

哈希表(Hash Table)

Key:     Value:
member1  10
member2  20
member3  30

在哈希表中,键是成员,值是成员对应的分数。

通过哈希表,Redis 可以快速地查找成员对应的分数,或者更新成员的分数。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文