Redis数据类型-Zset有序集合
介绍:
在集合类型的基础上有序集合类型为集合中的每个元素都关联了一个分数,在某些方面和列表类型有些相似。
(1)二者都是有序的
(2)二者都可以获得某一范围的元素。
但二者有着很大的区别,这使得他们的应用场景不同。
(1)列表类型是通过链表实现的,获取靠近两端的数据极快,二元素增多后,访问中间数据的速度会较慢,所以他更加适合日志这样很少访问中间元素的应用。
(2)有序集合类型是使用散列表和跳跃表实现的,所以即使读取中间部分的数据速度也很快,时间复杂度是O(lang(N))。
(3)列表中不能简单的调整某个元素的位置,但有序集合可以(通过更改合格元素的分数)。
(4)有序集合要比列表类型更耗费内存。
命令:
| 命令 | 说明 | 示例 |
| ZADD key score member [score member ...] | 向有序集合中加入一个元素和该元素的分数,如果已存在则会用新的分数替换原有分数,返回个数,score支持双精度浮点 | ZADD key score member [score member ...] |
| ZSCORE key member | 获取元素的分数 | ZSCORE key member |
| ZRANGE key start stop [WITHSCORES] | 按照元素分数从小到大的顺序返回索引从start到stop之间的所有元素(包含两端的元素)支持负数。如果同时获取元素的分数,可以在尾部加上WITHSCORES参数。时间复杂度为O(logn+m)(n为个数,m为返回的元素个数) | ZRANGE key start stop |
| ZREVRANGE key min max [WITHSCORES] | 按照元素分数从大到小的顺序给出结果 | ZREVRANGE key min max [WITHSCORES] |
| ZRANGEBYSCORE key min max [WITHSCORES][LIMIT offset count] | 该命令按照元素分数从小到大的顺序返回分数在min和max之间(包含min和max)的元素,如果希望分数范围不包含端点值,可以在分数前加上"("的符号。如果获得的分数是无上限,这时就可以用上+inf了 | ZRANGEBYSCORE key min max [WITHSCORES][LIMIT offset count] |
| ZINCRBY key increment number | 增加一个元素的分数,返回值是更改后的分数。 | ZINCRBY key increment number |
| ZCARD key | 获取集合中元素的数量 | ZCARD key |
| ZCOUNT key min max | 获得指定分数范围内的元素个数 | ZCOUNT key min max |
| ZREM key member [member1...] | 删除一个或多个元素 | ZREM key member [member1...] |
| ZREMRANGBYRANK key start stop | 按照排名范围删除元素,按照元素分数从小到大的顺序,并返回删除元素的数量。 | ZREMRANGBYRANK key start stop |
| ZREMRANGEBYSCORE key min max | 按照分数范围删除元素。返回值是删除的元素数量 | ZREMRANGEBYSCORE key min max |
| ZRANK key member | 按照元素分数从小到大的顺序获得指定的元素排名(从0开始,即分数最小的元素排名为0) | ZRANK key member |
| ZREVRANK key member | 按照元素分数从大到小的顺序获得指定的元素排名(从0开始,即分数最大的元素排名为0) | ZREVRANK key member |
| ZINTERSTORE destination numkeys key [key1...] | 计算有序集合的交集 | ZINTERSTORE destination numkeys key [key1...] |
| ... | ||

浙公网安备 33010602011771号