Redis数据结构之有序集合sortedset

Posted 即使再小的帆也能远航!

tags:

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

有序集合(sorted set)用于存储多个字符串元素,它是在集合(set)的基础上给每个元素增加了一个用于排序的字段(SCORE),元素同样不可重复,可以根据分数索引获取元素,此外,提供了根据score获取指定范围以及排序功能

常用命令

添加

zadd:添加数据,返回元素个数

zadd key score1 member1 score2 member2 ..
127.0.0.1:6379> zadd sorted 10 a 20 b 30 c
(integer) 3

查询

zrange:获取元素(正序)

zrange key start stop [withscores]

withscores:获取数据时带上他的score值

获取全部元素

zrange key 0 -1

zrevrange:获取元素(倒序)

zrevrange start stop [withscores]

zcard:获取集合元素个数

zcard sorts

删除

zrem:删除元素

zrem key member

zrangebyscore:按照条件获取元素

zrangebyscore key min max
zrevrangebyscore key min max

zremrangebyrank:根据索引删除删除元素

zremrangebyrank key start stop

zremrangebyscore:根据score删除元素

zremrangebyscore key min max

内部编码

有序集合类型内部有2种编码

  • ziplist(压缩列表):当集合中的元素都是整数,且元素个数小于zset-max-ziplist-entries配置(默认512个)时,Redis会采用ziplist来做为集合的内部实现,从而减少内存的使用。

  • skiplist(跳跃表):当有序集合类型无法满足ziplist的条件时,Redis就会使用skiplist做为有序集合的内部实现。

适用场景

排名

利用zrange和zrevrange可以实现排名功能

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

简介redis之集合类型数据

Redis之基本数据类型

Redis源码解析之跳跃表

大数据之Redis:Redis数据类型之Zset及相关的命令行操作

Redis常用操作--------SortedSet(有序集合)

Redis 基础 -- 有序集合 SortedSet类型 和 SortedSet类型的常用命令