[toc]
redis数据类型 zset 有序集合
zset(有序集合)简介
简介: 将 set 中的元素增加一个权重参数score,元素按score有序排列
可以存储的值: 有序集合
操作: 添加、获取、删除元素,根据分值范围或者成员来获取元素,计算一个键的排名
应用场景: 排行榜;带权重的消息队列
范围:集合中最大的成员数为 2^32 - 1 (4294967295, 每个集合可存储40多亿个成员)。
特点:每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。
使用示例:
127.0.0.1:6379> ZADD z1 1 aaa
(integer) 1
127.0.0.1:6379> ZADD z1 2 bbb
(integer) 1
127.0.0.1:6379> ZADD z1 3 ccc
(integer) 1
127.0.0.1:6379> ZRANGE z1 0 -1
1) "aaa"
2) "bbb"
3) "ccc"
redis有序集合常用命令
zadd key score1 member1
含义:向有序集合添加一个或多个成员,或者更新已存在成员的分数
示例:
127.0.0.1:6379> ZADD z1 1 a 2 b 3 c
(integer) 3
127.0.0.1:6379> ZRANGE z1 0 -1
1) "a"
2) "b"
3) "c"
zcard key
含义:获取有序集合的成员数
示例:
127.0.0.1:6379> ZADD z1 1 a 2 b 3 c
(integer) 3
127.0.0.1:6379> ZCARD z1
(integer) 3
zcount key min max
含义:计算在有序集合中指定区间分数的成员数
示例:
127.0.0.1:6379> ZADD z1 1 aaa
(integer) 1
127.0.0.1:6379> ZADD z1 1 bbb
(integer) 1
127.0.0.1:6379> ZADD z1 2 ccc
(integer) 1
127.0.0.1:6379> ZADD z1 3 ddd
(integer) 1
127.0.0.1:6379> ZADD z1 4 eee
(integer) 1
127.0.0.1:6379> ZCOUNT z1 1 3
(integer) 4
zincrby key increment member
含义:有序集合中对指定成员的分数加上增量 increment
示例:
127.0.0.1:6379> ZADD z1 1 aaa
(integer) 1
127.0.0.1:6379> ZINCRBY z1 5 1
"5"
zinterstore destination numkeys key [key ...]
含义:计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中
示例:
127.0.0.1:6379> ZADD z1 1 aaa 2 bbb 3 ccc 4 ddd 5 eee 6 fff
(integer) 6
127.0.0.1:6379> ZADD z2 1 aaa 2 bbb 3 ccc 5 hhh 6 ttt 9 wwww
(integer) 6
#这里必须要指定一下有序集合的个数
127.0.0.1:6379> ZINTERSTORE z3 2 z1 z2
(integer) 3
127.0.0.1:6379> ZRANGE z3 0 -1
1) "aaa"
2) "bbb"
3) "ccc"
zlexcount key min max
含义:在有序集合中计算指定字典区间内成员数量
示例:
zrange key start stop [WITHSCORES]
含义:通过索引区间返回有序集合指定区间内的成员
示例:
127.0.0.1:6379> ZADD z1 1 a 2 b 3 c
(integer) 3
127.0.0.1:6379> ZRANGE z1 0 -1
1) "a"
2) "b"
3) "c"
zrangebylex key min max [LIMIT offset count]
含义:通过字典区间返回有序集合的成员
示例:
127.0.0.1:6379> ZADD z1 1 a 2 b 3 c 4 d 5 e 6 f
(integer) 6
127.0.0.1:6379> ZRANGEBYLEX z1 [b [e
1) "b"
2) "c"
3) "d"
4) "e"
zrangebyscore key min max [WITHSCORES] [LIMIT]
含义:通过分数返回有序集合指定区间内的成员
示例:
127.0.0.1:6379> ZADD z1 1 a 2 b 3 c 4 d 5 e 6 f
(integer) 6
127.0.0.1:6379> ZRANGEBYSCORE z1 2 5
1) "b"
2) "c"
3) "d"
4) "e"
zrank key member
含义:返回有序集合中指定成员的索引
示例:
127.0.0.1:6379> ZADD z1 1 a 2 b 3 c 4 d 5 e 6 f
(integer) 6
127.0.0.1:6379> ZRANGE z1 0 3
1) "a"
2) "b"
3) "c"
4) "d"