比较 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”
相关文章