强> Sorted-Set是设置的升级版本,在设定的基础上增加了<>强排序功能强> .Sorted-Sets对每一个成员都会有一个分数(分数)与之关联,复述,正是通过分数来为集合中的成员进行<强>从小到大的排序>强。然而需要额外指出的是,尽管Sorted-Sets中的成员必须是唯一的,但是分数(分数)却是可以重复的。
强>
强>可以用于一个大型在线游戏的积分排行榜。每当玩家的分数发生变化时,可以执行ZADD命令更新玩家的分数,此后再通过ZRANGE命令获取积分十大的用户信息。当然我们也可以利用ZRANK命令通过用户名来获取玩家的排行信息。最后我们将组合使用ZRANGE和ZRANK命令快速的获取和某个玩家积分相近的其他用户的信息。
强> Sorted-Sets类型还可用于构建索引数据。
<强> 强> 强>
<强> 强>
<强> 强>
ZADD关键得分成员[[评分员][评分员]…)
将一个或多个成员元素及其得分值加入到有序集关键当中。
如果某个成员已经是有序集的成员,那么更新这个成员的分数值,并通过重新插入这个成员元素,来保证该成员在正确的位置上。
得分值可以是整数值或双精度浮点数。
如果关键不存在,则创建一个空的有序集并执行ZADD操作。
当关键存在但不是有序集类型时,返回一个错误。
对有序集的更多介绍请参见排序集。
<强> 强>
#,添加单个元素 redis>, ZADD page_rank 10, google.com (整数),1 #,添加多个元素 redis>, ZADD page_rank 9, baidu.com 8, bing.com (整数),2 redis>, ZRANGE page_rank 0, 1, WITHSCORES 1),“bing.com” 2),“8” 3),“baidu.com” 4),“9” 5),“google.com” 6),“10” #,添加已存在元素,且,score 值不变 redis>, ZADD page_rank 10, google.com (整数),0 redis>, ZRANGE page_rank 0, 1, WITHSCORES , #,没有改变 1),“bing.com” 2),“8” 3),“baidu.com” 4),“9” 5),“google.com” 6),“10” #,添加已存在元素,但是改变,score 值 redis>, ZADD page_rank 6, bing.com (整数),0 redis>, ZRANGE page_rank 0, 1, WITHSCORES , #, bing.com 元素的得分值被改变 1),“bing.com” 2),“6” 3),“baidu.com” 4),“9” 5),“google.com” 6),“10”
<强> 强> <强> 强>
<强> 强>
ZREM关键成员(成员……)
移除有序集中关键的一个或多个成员,不存在的成员将被忽略。
当关键存在但不是有序集类型时,返回一个错误。
<强> 强>
#,测试数据 redis>, ZRANGE page_rank 0, 1, WITHSCORES 1),“bing.com” 2),“8” 3),“baidu.com” 4),“9” 5),“google.com” 6),“10” #,移除单个元素 redis> ZREM page_rank google.com (整数),1 redis>, ZRANGE page_rank 0, 1, WITHSCORES 1),“bing.com” 2),“8” 3),“baidu.com” 4),“9” #,移除多个元素 redis> ZREM page_rank baidu.com bing.com (整数),2 redis>, ZRANGE page_rank 0, 1, WITHSCORES (empty list 或是集) #,移除不存在元素 redis> ZREM page_rank non-exists-element (整数),0
<强> 强> <强> 强>
ZINCRBY键增加成员
为有序集关键的成员成员的得分值加上增量增加。
你也可以通过传递一个负数值增加,让分数减去相应的值,比如ZINCRBY关键5成员,就是让成员的得分值减去5 .
当关键不存在,或成员不是关键的成员时,ZINCRBY关键增量等成员同于ZADD键增加成员。
当关键不是有序集类型时,返回一个错误。
得分值可以是整数值或双精度浮点数。
redis> ZSCORE salary 汤姆 “2000” redis>, ZINCRBY salary 2000年,tom ,, #,汤姆加薪啦! “4000”
<强> 强>
<强> 强>
ZSCORE关键成员返回有序集键中,成员成员的得分值。
如果成员元素不是有序集关键的成员,或关键不存在,返回零。
redis>, ZRANGE salary 0, 1, WITHSCORES #,显示所有成员及其分数值 1),“汤姆” 2),“2000” 3),“彼得” 4),“3500” 5),“杰克” 6),“5000” redis>, ZSCORE salary  peter ,, #,注意返回值是字符串 “3500”NoSQL——复述,2.4——排序集