您的位置:首页 > 数据库 > Redis

Redis教程(六) 有序集合(soted set / zset)类型

2016-08-26 23:16 555 查看
 
 
Redis教程(六)有序集合(soted
set / zset)类型
 
 

1 Redis数据类型

Redis的键值可以支持数据类型:字符串,列表,散表,集合,有序集合、HyperLogLog,通过选用不同的数据结构,用户可以使用Redis解决各式各样的问题。



1.1 有序集合(soted set / zset)类型

     有序集合和集合一样,都可以包含任意数量的、各不相同的元素(
element),不同于集合的是,有序集合的每个元素都关联着一个浮点数格式的分值(score),并且有序集合会按照分值,以从小到大的顺序来排列有序集合中的各个元素。

     虽然有序集合中的每个元素都必须是各不相同的,但元素的分值并没有这一限制,换句话来说,两个不同元素的分值可以是相同的。
1、ZADD命令:按照给定的分值和元素,将任意数量的元素添加到有序集合里面,命令的返回值为成功添加的元素数量。

     ZADD locale 9.8 "UnitedStates"

     ZADD locale 9.6 "China"

         ZADD locale 5.2"Australia" 4.3 "Switzerland" 2.5 "Japan" 1.9"Singapore"



 
2、ZSCAN命令:返回的每个元素都是一个有序集合元素,一个有序集合元素由一个成员(member)和一个分值(score)组成。每次被调用之后,都会向用户返回一个新的游标,用户在下次迭代时需要使用这个新游标作为
SCAN命令的游标参数,以此来延续之前的迭代过程。当
SCAN命令的游标参数被设置为 0时,服务器将开始一次新的迭代,而当服务器向用户返回值为
0的游标时,表示迭代已结束。注意:因为分值储存的是浮点数,所以它们是不精确的,这看上去有点奇怪,但并不影响使用。
ZSCAN locale 0



 
3、ZSCORE命令:返回有序集合中,指定元素的分值。
ZSCORE locale China



 
4、ZINCRBY命令:为有序集合指定元素的分值加上增量increment,命令返回执行操作之后,元素的分值。没有相应的ZDECRBY命令,但可以通过将
increment设置为负数来减少分值。
ZINCRBY locale 9.0 "Singapore"
ZINCRBY locale -3.0 "Singapore"
 


 
5、ZCARD命令:返回有序集合的基数。
ZCARD locale



 
6、ZRANK命令:返回指定元素在有序集合中的排名,其中排名按照元素的分值从小到大计算。排名以
0 开始。
     ZSCANlocale 0
         ZRANKlocale "Australia"
         ZRANKlocale "Japan"
         ZRANKlocale "Switzerland"



 
7、ZREVRANK命令:返回成员在有序集合中的逆序排名,其中排名按照元素的分值从大到小计算。
ZREVRANK locale "UnitedStates"



 
8、ZRANGE命令:返回有序集合在按照分值从小到大排列元素(升序排列)的情况下,索引
start至索引 stop范围之内的所有元素。两个索引都可以是正数或者负数。
ZRANGE locale 0 -1



9、ZREVRANGE命令:返回有序集合在按照分值从大到小排列元素(降序排列)的情况下,索引
start至索引 stop范围之内的所有元素。两个索引都可以是正数或者负数。



 
10、ZRANGEBYSCORE命令:返回有序集合在按照分值升序排列元素的情况下,分值在
min 和 max范围之内的所有元素。
ZRANGEBYSCORE locale 5.2 7.9
 


 
11、ZREVRANGEBYSCORE命令:返回有序集合在按照分值降序排列元素的情况下,分值在
min 和 max范围之内的所有元素。
ZREVRANGEBYSCORE locale 7.9 5.2
 


 
12、ZCOUNT命令:返回有序集合在升序排列元素的情况下,分值在
min和 max范围内的元素数量。
ZCOUNT locale 0 9
ZCOUNT locale 5 9



 
13、ZUNIONSTORE命令:计算交集,O(N*K)+O(M*log(M)),
N 为给定有序集合中,基数最小的有序集合的基数, K为给定有序集合的数量,
M为结果集的基数。
ZADD programmer  2000 "peter" 3500"jack" 5000 "tom"
ZADD manager  2000 "herry"  3500"mary" 4000 "bom" 6000 "dave"
 #执行的结果集储存到salary,指定key的数量:2,指定集合以空格进行分格,集合
* WEIGHTS对应的值。
ZUNIONSTORE salary 2 programmer manager WEIGHTS 1 2
ZRANGE programmer 0 -1 WITHSCORES
ZRANGE salary 0 -1 WITHSCORES
                    


 
 
                --以上为《Redis教程(六) 有序集合(soted set / zset)类型》,如有不当之处请指出,我后续逐步完善更正,大家共同提高。谢谢大家对我的关注。
                                                                                                                                                                                      ——厚积薄发(yuanxw)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: