Redis快慢

本文详细介绍了Redis中String、List、Hash、SortedSet等数据类型的底层数据结构,包括哈希表、压缩列表、跳表的使用,以及它们在操作时的时间复杂度。重点讲述了哈希冲突的处理和不同数据类型的查找效率。
摘要由CSDN通过智能技术生成

Redis 数据保存形式:String 、List、Hash、Set、Sorted Set

底层数据结构分为:简单动态字符串、双向链表、压缩列表、哈希表、跳表和整数数组。

String

List

Hash

Sorted Set

Set

简单动态字符串

双向链表、压缩列表

压缩列表、哈希表

跳表、压缩列表

哈希表、整数数组

Redis 使用了一个哈希表来保存所有键值对。 哈希表又称全局哈希表。

一个哈希表由多个哈希桶组成。  而哈希桶保存的不是值本身,而是指向具体值的指针。

Redis 解决哈希冲突 - > 链式哈希。 (rehash)

String 类型 : 找到哈希桶就能执行操作。 O(1)

集合类型(List 、hash 、set 、sort Set)找到哈希桶,还要在集合再进一步操作。

集合类 有五种类型: 其中 压缩列表:表头有三个字段:zlbytes、zltail 和zllen。 分别表示 长度、列表尾的偏移量和列表中的entry个数。 表尾有一个zlend 表示列表结束.

zlbytes

zltail

zllen

entry1

Entry2

….

entryN

Blend

跳表: 在链表的基础上,增加了多级索引、通过索引位置的几个跳转,实现数据的快速定位,

一级索引

 ->

11

->

27

->

->

->

二级索引

1

5

11

20

27

->

->

11

20

27

时间复杂度

哈希表

O(1)

跳表

O(logN)

双向链表

O(N)

压缩列表

O(N)

整数数组

O(N)

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值