Redis数据结构之有序集合对象(zset)
Redis对象
在了解Redis数据结构的时候我们会学习到简单动态字符串,压缩链表等。
但Redis并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这个系统包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象这五种类型的对象。Redis使用对象表示键和值,每次新建一个键值对时,我们就创建了两个对象。
有序集合对象
有序集合的编码可以是ziplist或者skiplist。
ziplist编码
ziplist编码的压缩列表对象使用压缩列表作为底层实现,每个集合元素使用两个紧挨在一起的压缩列表节点来保存,第一个节点保存元素的成员(member),而第二个元素则保存元素的分值(score)。
压缩列表内的集合元素按分值从小到大进行排序,分值较小的元素被放置在靠近表头的方向,而分值较大的元素则被放置在靠近表尾的方向。
创建一个ziplist编码的有序集合对象
127.0.0.1:6379> zadd price 1 appel 2 banana 3 cherry
(integer) 3
127.0.0.1