比较 Redis 中实现的集合(redis 集合 对比)

(Set)和列表(List)

Redis是一个开源的内存数据库,支持多种数据类型,其中包括Set和List两种数据结构。Set和List有着异同的地方,它们都可以在Redis中实现,但是有一些关键性的区别。

从数据结构的定义来看,集合(Set)是由一组不重复的元素组成的,而元素之间无序排列;而列表(List)是由一组能按顺序排列的元素组成的,元素之间可以有重复的。

Redis中Set和List的实现方式不同。Set通过Redis的散列结构(Hash)来实现,其中以field-value(键-值)的形式来存储数据,即一般Set中元素是由field-value组成;而List是通过链表(linked list)来实现,其中以list_node节点来存储数据,list_node结构包括value值和一个指针。

Set和List两种数据结构在Redis中的读写性能也不同。Set是通过哈希表来实现存储,并且可以支持O(1)查找,因此读写平均速度较快;而List是通过链表来实现存储,并且支持O(n)查找,因此读写平均速度较慢。

Set和List有着明显的区别,Redis中的实现方式也不尽相同。由此可见,Redis的灵活性很大,可以满足大部分应用场景的需求。

例子:

// 创建set类型

127.0.0.1> sadd school Apple

(integer) 1

127.0.0.1> sadd school Orange

(integer) 1

127.0.0.1> sadd school Banana

(integer) 1

// 读取set中的值

127.0.0.1> smembers school

1) “Apple”

2) “Orange”

3) “Banana”

// 创建list类型

127.0.0.1> lpush fruits strawberry

(integer) 1

127.0.0.1> lpush fruits apple

(integer) 2

// 取回刚才添加的list

127.0.0.1> lrange fruits 0 -1

1) “apple”

2) “strawberry”


数据运维技术 » 比较 Redis 中实现的集合(redis 集合 对比)