NoSQL——复述,2.4——排序集

  

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——排序集