zoukankan      html  css  js  c++  java
  • Redis命令拾遗五(有序集合)

    本文版权归博客园和作者吴双本人共同所有,博客园蜗牛NoSql系列分享 http://www.cnblogs.com/tdws/tag/NoSql/
    Sorted Set

    有序集合—Sorted Set是我最后要分享的一种Redis数据类型,有序集合在集合的基础上,为每一个元素,关联了一个分数的概念(Score)。不要忘了,集合中元素是唯一的,但是有序集合中的Score是可以相同的。

    下面通过命令的介绍,来帮助大家认识有序集合。

    添加命令,ZADD  key score member score member....注意分数是在前面哟。并且成功后返回成功数量。如果你同时添加两个相同元素,并且分数不同,那么被存入的,是后者。

    获取元素,ZRANGE key start stop.在有序集合中,元素以score由小到大排序,并且索引从0开始。获取全部,0 -1(最后面的元素索引是-1),和列表一样,start索引要大于stop索引才能获取到元素。另外还有一个可选参数,WithScores,会相应的输出元素的分数。

    另外还有ZRevRange,按照score从大到小的顺序输出。

    Score支持双精度浮点数。

    ZRangeByScore和ZRevRangeByScore。前者按照分数由小到大,并且给定分数范围,withScores是可选参数。limit也是可选参数,索引从0开始。后者则是由大到小。

    另外需要特别注意的一点是,分数的筛选支持正无穷,和不包含‘(’符号。我们看到结果中,并没有95分的LeiJun。并且到正无穷。

    ZSCORE,获取指定key中指定元素的score。

     ZInctBy ,为指定键下的指定Member,增加指定的 分数。我们给LeiJun增加了10分,返回105了。

     

     ZCARD,获取键下元素个数。我们看到有七个学生哈。

     ZCOUNT ,获取制定分数区间,元素个数,注意分数筛选,也支持‘(’不包含选择符。

     ZREM,移除元素。

    ZRemRangeByScore,按照分数范围删除多个元素。

    ZRemRangeByRank,按照正常由小到大的排名顺序删除,又有两个分数低的被删掉了。

     ZRANK,获取指定元素的排名。从0开始。ZRevRank则相反

     不足之处,欢迎补充和交流。

    最后再简单总结有序集合和列表。有序集合和列表都是有序的,并且可以按照范围来获取元素。
    列表通过链表来实现,获取靠近两端的数据速度很快,当数据量比较大的时候,获取中间的元素相应会变慢,比如你微信的朋友圈,大多使人看的都是这几天,最多也不过近几天的数据。中间元素很少会访问。
    而有序集合使用跳跃表和散列表实现,其时间复杂度O(log(N)),所以取中间元素也很快。并且有序集合可以通过更改分数,来调整元素的位置。有序集合也更耗费内存。
  • 相关阅读:
    js跳出循环
    JavaScript prototype属性
    【DP专题】——洛谷P2279:消防局的设立
    转:android中dialog工具类的实现(多种dialog的创建)
    转:setContentView的时候,到底发生了什么
    转:Handler一定要在主线程实例化吗?new Handler()和new Handler(Looper.getMainLooper())的区别
    转:Android Studio中的Gradle是干什么的
    转:Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB
    Android 学习
    com.baidu.navisdk.adapter找不到 在百度定位SDK的基础之上导入导航的SDK(针对新版本的坑!)
  • 原文地址:https://www.cnblogs.com/tdws/p/5801065.html
Copyright © 2011-2022 走看看