redis的SortSet应用场景

来源:互联网 发布:ubuntu mysql使用 编辑:程序博客网 时间:2024/06/07 01:57

应用场景:论坛的热门帖子[回复数前五]
redis默认根据权升序排列集合

name:0>zadd hot 100[权--帖子回复数] 1[值--帖子id]1name:0>zadd hot 200 21name:0>zadd hot 300 31name:0>zadd hot 400 41name:0>zadd hot 500 51name:0>zadd hot 600 61name:0>zrevrange hot 0 -1 根据权逆序,返回值[rev 全英文 Reverse]1) 62) 53) 44) 35) 26) 1删除下标为0帖子,不要误删,0-0是指第一个元素name:0>zremrangebyrank hot 0[第一个元素] 01name:0>zrange hot 0 -1 返回值[列子有点不太恰当,看文章最后的一段命令和结果]1) 22) 33) 44) 55) 6根据值删除指定元素name:0>zrem hot 21查看所有值name:0>zrange hot 0 -11) 32) 43) 5根据值返回当前元素的下标,从0开始name:0>zrank hot 3[rank排序的意思,默认升序]0name:0>zrank hot 41同上,不过是逆序[先降序排列,后根据值返回下标,我估计都没重新排序,直接取集合长度减去1再减去当前下标之后那个位置的值,就是取对称位置的值,我猜的,大家不要相信我啊]name:0>zrevrank hot 32name:0>zrevrank hot 41name:0>zrevrank hot 50返回集合中的元素个数name:0>zcard hot3根据值返回权name:0>zscore hot 562400结论:集合默认以权升序排列,以上命令中都是根据值返回或者删除某些东西,比如返回下标、权、删除指定元素,查看的是时候,返回的是值,排序一般根据权name:0>zrange hot 0 -11) 122) 33) 44) 5625) 5name:0>zremrangebyrank hot 0[min] 1[max]2name:0>zrange hot 0 -11) 42) 5623) 5