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可以实现排名功能

相关推荐