Zset有序集合
简介
redis的有序集合和set一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来未集合中的成员进行从小到大排序。zset的成员是唯一的,但分数(score)却可以重复。
原理
类似于SortedSet和HashMap结合,内部实现是一种叫“跳跃列表”的数据结构。通过层级制,将元素分层并串联,每隔几个元素选出一个代表,再将代表使用另外一级指针串起来,以此类推,形成金字塔结构。同一个元素在不同层级之间身兼数职,是为“跳跃”。新元素插入时,逐层下潜,直到找到合适的位置。
命令
1.读写操作:
zadd 创建zset的元素值,每个元素值都包含,<key,value>
使用方式:zadd zset1 key1 value1 key2 value2 key3 value3
zrange set1 start end 指定在start到end的范围内查看元素
如果要查看分数,加上withscores 使用方式 zrange set1 start end withscores
zrangebyscore zset1 80 100 取 80~100的数据,带上括号就排除该数
支持limit分页 limit + offset(偏移量) + num(返回的数量)
zrem set1 value 删除指定的值
image.png
2.统计操作
zcar zset1 统计元素个数
zcount zset1 minscore maxscore 统计给定分数范围内的元素个数
zscore key member 查询指定成员的分数
zrank key member 返回指定成员的索引位置
zrevrank key member 与 zrank key member 顺序取反
zrevrange 与 zrange set1 start end 顺序相反
zrevrangebyscore zset1 80 100 与 zrangebyscore zset1 80 100 顺序相反
image.png
网友评论