如何通过浅显易懂的方式掌握Redis精髓?
- 内容介绍
- 文章标签
- 相关推荐
本文共计7447个文字,预计阅读时间需要30分钟。
Redis是什么?Redis是一个开源、基于内存、使用C语言编写的key-value数据库,提供了多种语言的API。其数据结构丰富,包括字符串、列表、集合等基本数据类型。
什么是Redis
Redis是一个开源、基于内存、使用C语言编写的key-value数据库,并提供了多种语言的API。它的数据结构十分丰富,基础数据类型包括:string(字符串)、list(列表,双向链表)、hash(散列,键值对集合)、set(集合,不重复)和sorted set(有序集合)。主要可以用于数据库、缓存、分布式锁、消息队列等...
以上的数据类型是Redis键值的数据类型,其实就是数据的保存形式,但是数据类型的底层实现是最重要的,底层的数据结构主要分为6种,分别是简单动态字符串、双向链表、压缩链表、哈希表、跳表和整数数组。各个数据类型和底层结构的对应关系如下:
各个底层实现的时间复杂度如下:
可以看出除了string类型的底层实现只有一种数据结构,其他四种均有两种底层实现,这四种类型为集合类型,其中一个键对应了一个集合的数据。
(一)Redis键值是如何保存的呢?
Redis为了快速访问键值对,采用了哈希表来保存所有的键值对,一个哈希表对应了多个哈希桶,所谓的哈希桶是指哈希表数组中的每一个元素,当然哈希表中保存的不是值本身,是指向值的指针,如下图。
其中哈希桶中的entry元素中保存了key和value指针,分别指向了实际的键和值。通过Redis可以在O(1)的时间内找到键值对,只需要计算key的哈希值就可以定位位置,但从下图可以看出,在4号位置出现了冲突,两个key映射到了同一个位置,这就产生了哈希冲突,会导致哈希表的操作变慢。
本文共计7447个文字,预计阅读时间需要30分钟。
Redis是什么?Redis是一个开源、基于内存、使用C语言编写的key-value数据库,提供了多种语言的API。其数据结构丰富,包括字符串、列表、集合等基本数据类型。
什么是Redis
Redis是一个开源、基于内存、使用C语言编写的key-value数据库,并提供了多种语言的API。它的数据结构十分丰富,基础数据类型包括:string(字符串)、list(列表,双向链表)、hash(散列,键值对集合)、set(集合,不重复)和sorted set(有序集合)。主要可以用于数据库、缓存、分布式锁、消息队列等...
以上的数据类型是Redis键值的数据类型,其实就是数据的保存形式,但是数据类型的底层实现是最重要的,底层的数据结构主要分为6种,分别是简单动态字符串、双向链表、压缩链表、哈希表、跳表和整数数组。各个数据类型和底层结构的对应关系如下:
各个底层实现的时间复杂度如下:
可以看出除了string类型的底层实现只有一种数据结构,其他四种均有两种底层实现,这四种类型为集合类型,其中一个键对应了一个集合的数据。
(一)Redis键值是如何保存的呢?
Redis为了快速访问键值对,采用了哈希表来保存所有的键值对,一个哈希表对应了多个哈希桶,所谓的哈希桶是指哈希表数组中的每一个元素,当然哈希表中保存的不是值本身,是指向值的指针,如下图。
其中哈希桶中的entry元素中保存了key和value指针,分别指向了实际的键和值。通过Redis可以在O(1)的时间内找到键值对,只需要计算key的哈希值就可以定位位置,但从下图可以看出,在4号位置出现了冲突,两个key映射到了同一个位置,这就产生了哈希冲突,会导致哈希表的操作变慢。

