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

六、Redis 基础命令--有序集合

2015-01-24 11:09 477 查看
1、有序集合是由散列表和跳跃表实现的,所以即使元素再多,获取中间的元素速度也很快。

2、有序集合为集合中的每个元素都关联了一个分数。

3、有序集合与列表的对比
     相同点:

          都是有序的,都可以获取某一个范围的元素
     
     不同点:
          1、列表是采用双向链表实现的,所以获取接近两端的数据很快,获取中间数据会很慢。
          2、有序集合则采用的是散列表和跳跃表(百度好理解)
          3、列表中不能调整某个元素的位置,但是集合可以,通过更改分数。
          4、有序集合更耗费内存

4、ZADD 添加元素,返回新添加的个数 (不含已经有的)
     127.0.0.1:6379> ZADD eng_score 85 klov 90 klov2 100 klov3
          (integer) 3
     如果元素已存在,则会用新的分数替换掉原有的分数,返回数据 0 
     127.0.0.1:6379> ZADD eng_score 99 klov

          (integer) 0

     127.0.0.1:6379> ZSCORE eng_score klov

          "99"

5、ZSCORE 获取元素的分数
     127.0.0.1:6379> ZSCORE eng_score klov

          "88"

6、分数不仅支持正数,还支持浮点数

7、获得排名在某一范围内的元素列表
     ZRANGE key start stop [WITHSCORES] ------------从小到大的顺序
     ZREVRANGE key start stop [WITHSCORES]-------- 从大到小的顺序

          按照分数从小到大(大到小)的顺序返回索引从start 到 stop之间的所有元素(包含两端数据)。和LRANGE命令相似,索引都是从 0 开始,负数代表从后向前查找(-1表示最后一个元素,所以 ZRANGE key 0 -1 就是获取所有元素)
               127.0.0.1:6379> ZRANGE eng_score 0 -1 WITHSCORES
                       1) "klov2"

2) "90"

3) "klov"

4) "99"

5) "klov3"

                        6) "100"
          如果两个元素的分数相同,则会按照字典顺序返回
               127.0.0.1:6379> ZRANGE eng_score 0 -1 WITHSCORES

1) "klov2"

2) "90"

3) "klov"

4) "99"

5) "angla"

6) "100"

7) "klov3"

                         8) "100"

8、获得指定范围的元素
     ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
     获取的元素包含两端min和max.如果不需要两端可以执行:
     127.0.0.1:6379> ZRANGEBYSCORE eng_score (60 (100
               1) "klov2"

               2) "klov"

      还支持无穷大: -inf  +inf

9、增加某个元素的分数:ZINCRBY key increment member 返回增加后的值
          127.0.0.1:6379> ZINCRBY eng_score 50 klov3

               "150"

     
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  redis 设计实现