Redis 高级数据结构:七有序集合对象

Posted 六月过半

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis 高级数据结构:七有序集合对象相关的知识,希望对你有一定的参考价值。

概述

有序集合是ziplist或者skiplist
ziplist就是压缩列表,ZADD时 就根据分值来排序
skiplist会复杂一些,他的底层有两个数据结构,一个是跳跃表,一个是字典

typedef struct zset{
    zskiplist *zsl;
    dict *dict
    ...
}

dict的作用是定义key和score的关系。两个结构都保存了所有元素,对范围操作和根据key定位分值这种操作就互相提供支持了,典型的空间换时间的思想。

ziplist的使用条件:
元素数量小于128个;
所有元素成员长度都小于64字节;
skiplist的使用条件:
不满足上面的条件

上面两个值可以通过参数来改变
zset-max-ziplist-entries
zset-max-ziplist-value

一些命令

命令 作用
ZADD 添加 成员和分值
ZCARD 返回成员数量
ZCOUNT 返回分值范围内的节点数量
ZRANGE 从头向尾遍历 返回索引范围内数据
ZREVRANGE 从尾向头遍历 返回索引范围内数据
ZRANK 从头向尾遍历,返回给定成员分值排名
ZREVRANK 从尾向头遍历,返回给定成员分值排名
ZREM 删除成员
ZSCORE 返回指定成员分数

以上是关于Redis 高级数据结构:七有序集合对象的主要内容,如果未能解决你的问题,请参考以下文章

redis 系列14 有序集合对象

高级程序员必须精通的Redis,第四篇之——set(集合)

Redis数据结构-对象

Redis:有序集合类型zset实现原理

Redis:有序集合类型zset实现原理

玩转Redis-Redis高级数据结构及核心命令-ZSet