ITPub博客

首页 > 数据库 > NoSQL > redis续6-zsets类型及操作

redis续6-zsets类型及操作

原创 NoSQL 作者:a3zi 时间:2015-01-28 23:38:58 0 删除 编辑

  sorted set是set的一个升级版本,它在set的基础上增加了一个顺序属性,这一属性在添加

修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。

下面来介绍set类型是如何使用的:

先开始redis的服务

/usr/local/redis/redis-server  /etc/redis.conf

再进入redis的客户端:

/usr/local/redis/redis-cli回车

redis>

ZADD命令:

  添加参数中指定的所有成员及其分数到指定key的Sorted-Set中

ZCARD命令:

获取与该Key相关联的Sorted-Sets中包含的成员数量

ZCOUNT命令:

获取分数(score)在min和max之间的成员数量

ZREM命令:

令将移除参数中指定的成员,其中不存在的成员将被忽略

ZINCRBY命令:

将为指定Key中的指定成员增加指定的分数

ZSCORE命令:

获取指定Key的指定成员的分数

ZRANGE命令:

返回顺序在参数start和stop指定范围内的成员列表

ZRANK命令:

返回参数中指定成员的位置值

redis 127.0.0.1:6379> zadd myzset 1 "one"

(integer) 1

#添加两个分数分别是2和3的两个成员。

redis 127.0.0.1:6379> zadd myzset 2 "two" 3 "three"

(integer) 2

#0表示第一个成员,-1表示最后一个成员。WITHSCORES选项表示返回的结果中包含每个成员及其分数,否则只返回成员。

redis 127.0.0.1:6379> zrange myzset 0 -1 WITHSCORES

1) "one"

2) "1"

3) "two"

4) "2"

5) "three"

6) "3"

#获取成员one在Sorted-Set中的位置索引值。0表示第一个位置。

redis 127.0.0.1:6379> zrank myzset one

(integer) 0 #成员four并不存在,因此返回nil。

redis 127.0.0.1:6379> zrank myzset four

(nil)

#获取myzset键中成员的数量。

redis 127.0.0.1:6379> zcard myzset

(integer) 3

#返回与myzset关联的Sorted-Set中,分数满足表达式1 <= score <= 2的成员的数量。

redis 127.0.0.1:6379> zcount myzset 1 2

(integer) 2

#删除成员one和two,返回实际删除成员的数量。

redis 127.0.0.1:6379> zrem myzset one two

 (integer) 2

 #查看是否删除成功。

redis 127.0.0.1:6379> zcard myzset

(integer) 1

#获取成员three的分数。返回值是字符串形式。

redis 127.0.0.1:6379> zscore myzset three

"3"

#由于成员two已经被删除,所以该命令返回nil。

redis 127.0.0.1:6379> zscore myzset two

(nil)

#将成员one的分数增加2,并返回该成员更新后的分数。

redis 127.0.0.1:6379> zincrby myzset 2 one

"3"

#将成员one的分数增加-1,并返回该成员更新后的分数。

redis 127.0.0.1:6379> zincrby myzset -1 one

 "2"

#查看在更新了成员的分数后是否正确。

redis 127.0.0.1:6379> zrange myzset 0 -1 WITHSCORES

1) "one"

2) "2"

3) "two"

4) "2"

5) "three"

6) "3"

ZRANGEBYSCORE命令:

返回有序集key中,score值在min和max之间的成员

ZREMRANGEBYRANK命令:

移除有序集 key 中,指定排名(rank)区间内的所有成员

ZREMRANGEBYSCORE命令:

删除的有序集合保存在key的最小值和最大值(含)之间的分数的所有元素。 返回值返回整数,删除的元素数量

redis 127.0.0.1:6379> zadd myzset 1 one 2 two 3 three 4 four

 (integer) 4

#获取分数满足表达式1 <= score <= 2的成员。

redis 127.0.0.1:6379> zrangebyscore myzset 1 2

 1) "one"

 2) "two"

#获取分数满足表达式1 < score <= 2的成员。

redis 127.0.0.1:6379> zrangebyscore myzset (1 2

1) "two"

 #-inf表示第一个成员,+inf表示最后一个成员,limit后面的参数用于限制返回成员的自己,

#2表示从位置索引(0-based)等于2的成员开始,去后面3个成员。

redis 127.0.0.1:6379> zrangebyscore myzset -inf +inf limit 2 3

1) "three"

2) "four"

#删除分数满足表达式1 <= score <= 2的成员,并返回实际删除的数量。

redis 127.0.0.1:6379> zremrangebyscore myzset 1 2

 (integer) 2

#看出一下上面的删除是否成功。

redis 127.0.0.1:6379> zrange myzset 0 -1

1) "three"

2) "four"

#删除位置索引满足表达式0 <= rank <= 1的成员。

redis 127.0.0.1:6379> zremrangebyrank myzset 0 1

(integer) 2

 #查看上一条命令是否删除成功。

redis 127.0.0.1:6379> zcard myzset

 (integer) 0

ZREVRANGE命令:

该命令的功能和ZRANGE基本相同,唯一的差别在于该命令是通过反向排序获取指定位置的成员,即从高到低的顺序。如果成员具有相同的分数,则按降序字典顺序排序。

ZREVRANGEBYSCORE命令:

获取指定Key的指定成员的分数

ZREVRANK命令:

该命令的功能和ZRANK基本相同,唯一的差别在于该命令获取的索引是从高到低排序后的位置,同样0表示第一个元素,即分数最高的成员

 

#为后面的示例准备测试数据。

redis 127.0.0.1:6379> del myzset

(integer) 0 redis 127.0.0.1:6379> zadd myzset 1 one 2 two 3 three 4 four

(integer) 4

 #以位置索引从高到低的方式获取并返回此区间内的成员。

redis 127.0.0.1:6379> zrevrange myzset 0 -1 WITHSCORES

1) "four"

2) "4"

3) "three"

4) "3"

5) "two"

6) "2"

7) "one"

8) "1"

#由于是从高到低的排序,所以位置等于0的是four,1是three,并以此类推。

redis 127.0.0.1:6379> zrevrange myzset 1 3

 1) "three"

 2) "two"

 3) "one"

#由于是从高到低的排序,所以one的位置是3。

redis 127.0.0.1:6379> zrevrank myzset one

 (integer) 3

#由于是从高到低的排序,所以four的位置是0。

redis 127.0.0.1:6379> zrevrank myzset four

(integer) 0 #获取分数满足表达式3 >= score >= 0的成员,并以相反的顺序输出,即从高到底的顺序。

redis 127.0.0.1:6379> zrevrangebyscore myzset 3 0

1) "three"

2) "two"

3) "one"

#该命令支持limit选项,其含义等同于zrangebyscore中的该选项,只是在计算位置时按照相反的顺序计算和获取。

redis 127.0.0.1:6379> zrevrangebyscore myzset 4 0 limit 1 2

1) "three"

2) "two"

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29806344/viewspace-1418842/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-08-15

  • 博文量
    45
  • 访问量
    228906