命令列表:

操作

命令

参数

返回值

添加修改

zadd()

ZADD key score member [[score member] [score member] …]

0

按排名查看

zrange()

ZRANGE key start stop [WITHSCORES]

指定区间内,带有 score 值(可选)的有序集成员的列表。

按排名删除

zremrangebyrank()

ZREMRANGEBYRANK key start stop

被移除成员的数量。

按分数段查看

zrangebyscore()

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

指定区间内,带有 score 值(可选)的有序集成员的列表

按分数段删除

zremrangebyscore()

ZREMRANGEBYSCORE key min max

被移除成员的数量

查看value的排名

zrank()

ZRANK key member

排名数字,无则返回NONE

删除value

zrem()

ZREM key member [member …]

被成功移除的成员的数量,不包括被忽略的成员

按分数段查看value数

zcount()

ZCOUNT key min max

score 值在 min 和 max 之间的成员的数量

查看value的数量

zcard()

zcard

数字

查看value对应的score

zscore()

ZSCORE key member

字符串

修改score

zincrby()

ZINCRBY key increment member

member 成员的新 score 值,以字符串形式表示

添加:

master.zadd("sorted_set",100,"value",20,"value1")

查看:

按排名查看:

  1. 返回有序集 key 中,指定区间内的成员。
  2. 其中成员的位置按 score 值递增(从小到大)来排序。具有相同 score 值的成员按字典序(lexicographical order )来排列。
  3. 下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。 你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。
  4. 超出范围的下标并不会引起错误。
    比如说,当 start 的值比有序集的最大下标还要大,或是 start > stop 时, ZRANGE 命令只是简单地返回一个空列表。 另一方面,假如 stop 参数的值比有序集的最大下标还要大,那么 Redis 将 stop 当作最大下标来处理。
  5. 客户端库可能会返回一些更复杂的数据类型,比如数组、元组等。

可以通过使用 WITHSCORES 选项,来让成员和它的 score 值一并返回,返回列表以 value1,score1, …, valueN,scoreN 的格式表示。

print cli.zrange(name="sorted_set",start=0,end=2,withscores=True)
#返回值
[('value1', 20.0), ('value', 100.0)]

按排名删除:

##----以集群形式连接redis----
sentinel = Sentinel([(ip[0],port[0]),(ip[1],port[1]),(ip[2],port[2])])
cli = sentinel.master_for(service_name=service_name,db=db)

#---添加有序集合------
print cli.zadd("sorted_set",100,"value",20,"value1",20,"value2")

#删除排名在min到max的value
print cli.zremrangebyrank(name="sorted_set",min=0,max=0)
print cli.zrange(name="sorted_set",start=0,end=1)

按分数段查看:

  1. 区间默认使用闭区间;
  2. 其他注意事项和上一个一致;
print cli.zrangebyscore(name="sorted_set",min=10,max=90)
print cli.zrangebyscore(name="sorted_set",min=10,max=90,withscores=True)

#返回值
['value1']
[('value1', 20.0)]

按分数段删除:

##----以集群形式连接redis----
sentinel = Sentinel([(ip[0],port[0]),(ip[1],port[1]),(ip[2],port[2])])
cli = sentinel.master_for(service_name=service_name,db=db)

#---添加有序集合------
print cli.zadd("sorted_set",100,"value",20,"value1",20,"value2")

# 删除score在min到max之间的value
print cli.zremrangebyscore(name="sorted_set",min=30,max=300)
print cli.zrange(name="sorted_set",start=0,end=2)

查看value的排名:

  1. 返回有序集 key 中成员 member 的排名。其中有序集成员按 score 值递增(从小到大)顺序排列。
  2. 排名以 0 为底,也就是说, score 值最小的成员排名为 0 。
  3. 使用 ZREVRANK 命令可以获得成员按 score 值递减(从大到小)排列的排名。
print cli.zrank(name="sorted_set",value="3value")
print cli.zrank(name="sorted_set",value="value")

#返回值
None
1

删除value:

##----以集群形式连接redis----
sentinel = Sentinel([(ip[0],port[0]),(ip[1],port[1]),(ip[2],port[2])])
cli = sentinel.master_for(service_name=service_name,db=db)

#---添加有序集合------
print cli.zadd("sorted_set",100,"value",20,"value1",20,"value2")

#删除固定的value
print cli.zrem("sorted_set","value")
print cli.zrem("sorted_set","value1","value2")
print cli.zcard("sorted_set")

按分数段查询value数量:

##----以集群形式连接redis----
sentinel = Sentinel([(ip[0],port[0]),(ip[1],port[1]),(ip[2],port[2])])
cli = sentinel.master_for(service_name=service_name,db=db)

#---添加有序集合------
print cli.zadd("sorted_set",100,"value",20,"value1",20,"value2")

#----查看有序集合中分数再某一个范围段的值的数量-----
print  cli.zcount(name="sorted_set",max=80,min=20)

查看value的数量:

#----以集群形式连接redis----
sentinel = Sentinel([(ip[0],port[0]),(ip[1],port[1]),(ip[2],port[2])])
cli = sentinel.master_for(service_name=service_name,db=db)

#---添加有序集合------
print cli.zadd("sorted_set",100,"value",20,"value1",20,"value2")

#------返回key对应的value值的数量-----
print cli.zcard(name="sorted_set")

查看value对应的score:

##----以集群形式连接redis----
sentinel = Sentinel([(ip[0],port[0]),(ip[1],port[1]),(ip[2],port[2])])
cli = sentinel.master_for(service_name=service_name,db=db)

#---添加有序集合------
print cli.zadd("sorted_set",100,"value",20,"value1",20,"value2")

#返回具体value的score值
print cli.zscore(name="sorted_set",value="value")

修改value对应的score:

##----以集群形式连接redis----
sentinel = Sentinel([(ip[0],port[0]),(ip[1],port[1]),(ip[2],port[2])])
cli = sentinel.master_for(service_name=service_name,db=db)

#---添加有序集合------
print cli.zadd("sorted_set",100,"value",20,"value1",20,"value2")

#-----给特定的value值加上“amount”,可为负数-------
print  cli.zincrby(name="sorted_set",value="value",amount=-10)

参考链接: http://redisdoc.com/sorted_set/index.html