概述

Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数(score)却可以重复。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

zadd

添加元素,里面包括年龄和名称,根据数值从小到大排列,如果继续添加元素:①值已存在,则数值覆盖②值不存在,就会添加进去

zadd key 数值1 字段1 数值2 字段2 …

127.0.0.1:6379> zadd age 11 tom 8 jack 22 mary
(integer) 3

zrange

查找元素

位置下标从0开始,结束位置如果是-1代表是最后一个

zrange key start end

127.0.0.1:6379> zrange age 0 -1
1)”jack”
2)”tom”
3)”mary”

显示数值

上面没有显示数值,命令后面加上withscores可以显示数值

zrange key 0 -1 withscores

127.0.0.1:6379> zrange age 0 -1 withscores
1)”jack”
2)”8”
3)”tom”
4)”11”
5)”mary”
6)”22”

zrevrange

降序排列,和zrange相反

zrevrange key start end withscores

127.0.0.1:6379> zrevrange age 0 -1 withscores
1)”mary”
2)”22”
3)”tom”
4)”11”
5)”jack”
6)”8”

zrem

删除一个或多个元素

zrem key 字段1 字段2 …

127.0.0.1:6379> zrange age 0 -1
1)”sherry”
2)”jack”
3)”tom”
4)”mary”

127.0.0.1:6379> zrem age sherry
(integer) 1
127.0.0.1:6379> zrange age 0 -1
1)”jack”
2)”tom”
3)”mary”

zcard

查看集合里的元素个数

zcard key

127.0.0.1:6379> zcard age
(integer) 3

zremrangebyrank

根据排名来删除元素

zremrangebyrank key start end

127.0.0.1:6379> zrange age 0 -1 withscores
1)”aa”
2)”1”
3)”bb”
4)”2”
5)”jack”
6)”8”
7)”tom”
8)”11”
9)”mary”
10)”22”
127.0.0.1:6379> zremrangebyrank age 0 1
(integer) 2
127.0.0.1:6379> zrange age 0 -1 withscores
1)”jack”
2)”8”
3)”tom”
4)”11”
5)”mary”
6)”22”

zremrangebyscore

根据数值范围来删除元素(包含)

zremrangebyscore key min max

127.0.0.1:6379> zrange age 0 -1 withscores
1)”aa”
2)”1”
3)”bb”
4)”2”
5)”jack”
6)”8”
7)”tom”
8)”11”
9)”mary”
10)”22”
127.0.0.1:6379> zremrangebyscore age 0 4
(integer) 2
127.0.0.1:6379> zrange age 0 -1 withscores
1)”jack”
2)”8”
3)”tom”
4)”11”
5)”mary”
6)”22”

zrangebyscore

根据评分范围来查找元素

zrangebyscore key min max withscores

127.0.0.1:6379> zrange age 0 -1 withscores
1)”jack”
2)”8”
3)”tom”
4)”11”
5)”mary”
6)”22”
127.0.0.1:6379> zrangebyscore age 8 11 withscores
1)”jack”
2)”8”
3)”tom”
4)”11”

限定查找起始

第一个元素的下标为0,end为-1时查全部

zrangebyscore key min max withscores limit statr end

127.0.0.1:6379> zrangebyscore age 0 100 withscores limit 0 2
1)”jack”
2)”8”
3)”tom”
4)”11”

zincrby

给指定元素加分

zincrby key 数值 字段名

127.0.0.1:6379> zrange age 0 -1 withscores
1)”jack”
2)”8”
3)”tom”
4)”11”
5)”mary”
6)”22”
127.0.0.1:6379> zincrby age 2 jack
“10”
127.0.0.1:6379> zrange age 0 -1 withscores
1)”jack”
2)”10”
3)”tom”
4)”11”
5)”mary”
6)”22”

zcount

查找指定数值范围的元素个数

zcount key min max

127.0.0.1:6379> zrange age 0 -1 withscores
1)”jack”
2)”10”
3)”tom”
4)”11”
5)”mary”
6)”22”
127.0.0.1:6379> zcount age 9 10
(integer) 1