redis命令学习笔记(五):Zset

简介

1、redis中的Zset有序集合和集合Set一样也是String类型的元素集合,且不允许有重复的成员。
2、不同的是每一个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
3、有序集合的成员是唯一的,单分数却可以重复。
4、集合中最大的成员数为2的32次方-1。

赋值语法

ZADD key [NX|XX] [CH] [INCR] score member [score member …]

Redis Zadd 命令用于将一个或多个成员元素及其分数值加入到有序集当中。
如果某个成员已经是有序集的成员,那么更新这个成员的分数值,并通过重新插入这个成员元素,来保证该成员在正确的位置上。
分数值可以是整数值或双精度浮点数。
如果有序集合 key 不存在,则创建一个空的有序集并执行 ZADD 操作。
当 key 存在但不是有序集类型时,返回一个错误。

Example
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> zadd z1 90 java 98 mysal 89 h5
(integer) 3
127.0.0.1:6379> keys *
1) "z1"

取值语法

(一)ZCARD key

Redis Zcard 命令用于计算集合中元素的数量。

Example

127.0.0.1:6379> zadd z1 90 java 98 mysal 89 h5
(integer) 3
127.0.0.1:6379> zcard z1
(integer) 3

(二)ZCOUNT key min max

Redis Zcount 命令用于计算有序集合中指定分数区间的成员数量。

Example

127.0.0.1:6379> zadd z1 90 java 98 mysal 89 h5
(integer) 3
127.0.0.1:6379> zcount z1 90 100
(integer) 2

(三)ZRANK key member

Redis Zrank 返回有序集中指定成员的排名。其中有序集成员按分数值递增(从小到大)顺序排列。

Example

127.0.0.1:6379> zrange z1 0 -1 withscores
1) "h5"
2) "89"
3) "java"
4) "90"
5) "mysql"
6) "98"
127.0.0.1:6379> zrank z1 h5
(integer) 0
127.0.0.1:6379> zrank z1 mysql
(integer) 2
127.0.0.1:6379> zrank z1 tom
(nil)

(四)ZRANGE key start stop [WITHSCORES]

Redis Zrange 返回有序集中,指定区间内的成员。
其中成员的位置按分数值递增(从小到大)来排序。
具有相同分数值的成员按字典序(lexicographical order )来排列。
下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。
你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。

Example

127.0.0.1:6379> zrange z1 0 -1
1) "h5"
2) "java"
3) "mysal"
127.0.0.1:6379> zrange z1 0 -1 withscores
1) "h5"
2) "89"
3) "java"
4) "90"
5) "mysal"
6) "98"

(四)ZREVRANGE key start stop [WITHSCORES]

Redis Zrevrange 命令返回有序集中,指定区间内的成员。
其中成员的位置按分数值递减(从大到小)来排列。
具有相同分数值的成员按字典序的逆序(reverse lexicographical order)排列。
除了成员按分数值递减的次序排列这一点外, ZREVRANGE 命令的其他方面和 ZRANGE 命令一样。

Example

127.0.0.1:6379> zrevrange z1 0 -1
1) "mysal"
2) "java"
3) "h5"
127.0.0.1:6379> zrevrange z1 0 -1 withscores
1) "mysal"
2) "98"
3) "java"
4) "90"
5) "h5"
6) "89"

删除语法

(一)ZREM key member [member …]

Redis Zrem 命令用于移除有序集中的一个或多个成员,不存在的成员将被忽略。
当 key 存在但不是有序集类型时,返回一个错误。
注意: 在 Redis 2.4 版本以前, ZREM 每次只能删除一个元素。

Example

127.0.0.1:6379> zrange z1 0 -1
1) "h5"
2) "java"
3) "mysal"
127.0.0.1:6379> zrem z1 h5
(integer) 1
127.0.0.1:6379> zrange z1 0 -1
1) "java"
2) "mysal"

(二)ZREMRANGEBYLEX key min max

Redis Zremrangebylex 命令用于移除有序集合中给定的字典区间的所有成员。

Example

127.0.0.1:6379> ZADD myzset 0 aaaa 0 b 0 c 0 d 0 e
(integer) 5
127.0.0.1:6379> ZADD myzset 0 foo 0 zap 0 zip 0 ALPHA 0 alpha
(integer) 5
127.0.0.1:6379> ZRANGE myzset 0 -1
1) "ALPHA"
 2) "aaaa"
 3) "alpha"
 4) "b"
 5) "c"
 6) "d"
 7) "e"
 8) "foo"
 9) "zap"
10) "zip"
127.0.0.1:6379> ZREMRANGEBYLEX myzset [alpha [omega
(integer) 6
127.0.0.1:6379> ZRANGE myzset 0 -1
1) "ALPHA"
2) "aaaa"
3) "zap"
4) "zip"

(三)ZREMRANGEBYRANK key start stop

Redis Zremrangebyrank 命令用于移除有序集中,指定排名(rank)区间内的所有成员。

Example

127.0.0.1:6379> zadd zz 90 java 99 mysql 100 h5
(integer) 3
127.0.0.1:6379> zremrangebyrank zz 0 1
(integer) 2
127.0.0.1:6379> zrange zz 0 -1
1) "h5"

(四)ZREMRANGEBYSCORE key min max

Redis Zrevrangebyscore 返回有序集中指定分数区间内的所有的成员。有序集成员按分数值递减(从大到小)的次序排列。
具有相同分数值的成员按字典序的逆序(reverse lexicographical order )排列。
除了成员按分数值递减的次序排列这一点外, ZREVRANGEBYSCORE 命令的其他方面和 ZRANGEBYSCORE 命令一样。

Example

127.0.0.1:6379> zadd zz 80 java 70 mysql 90 h5 100 math
(integer) 4
127.0.0.1:6379> zremrangebyscore zz 70 90
(integer) 3
127.0.0.1:6379> zrange zz 0 -1 withscores
1) "math"
2) "100"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值