5、有序集合类型
有序集合为集合的每个元素都关联了一个分数,集合中的元素都是不同的,但是分数可以相同。
有序集合和列表的同异:
相同点
二者都是有序的
二者都可以获得某一范围的元素
不同点
列表是通过链表实现的获取两端的数据速度快,元素多时,获取中间的数据慢。
有序集合是使用散列表、跳跃表实现的,即使读取中间的数据也很快。
列表不能简单得调整某个元素的位置,有序集合可以修改分数实现。
有序集合比列表类型更耗费内存
命令:
增加元素
ZADD key score member [score member…] 向有序集合加入元素和分数,如果元素已存在则使用新的分数覆盖。返回值是新加入的元素个数。分数支持整数和双精度浮点数。
获得元素的分数
ZSCORE key
获得排名在某个范围的元素列表
ZRANGE key start stop [WITHSCORES] 按照元素分数从小到大顺序返回索引从start到stop之间的元素(包含两端),WITHSCORES加上后,同时返回分数。
ZREVRANGE key start stop [WITHSCORES] 分数从大到小
获得指定分数范围的元素
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offet count] 按照元素分数从小到大返回分数在min和max之间(包含两端)的元素,如果希望不包含,在分数前加“(”或“)”;ZREVRANGEBYSCORE则从大到小,min和max顺序也要相反
增加某个元素的分数
ZINCRBY key increment member 增加一个元素的分数,返回是增加后的分数。如果元素不存在,会自动创建,并赋值0再执行增加操作。支持负数。
获取集合中的元素数量
ZCARD key
获得指定范围的元素个数
ZCOUNT key min max
删除一个或多个元素
ZREM key member [member..] 返回值是成功删除的元素数量
按照排名范围删除元素
ZREMRANGEBYRANK key start stop 按照元素分数从小到大的顺序,删除在指定范围内的所有元素,并返回删除的元素数量。
获得元素的排名
ZRANK key member
ZREVRANK key member
计算有序集合的交集
ZINTERSTORE 命令