排序
对于排序的场景,在业务中会大量使用到,对于Redis,如果使用了有序集合,那么排序问题很容易解决,并且得分可以根据实际的业务,由时间、点赞、费用、排行等等进行转化,支持的业务范围也比较广泛。
除了有序集合的排序外,Redis另外提供了排序的指令SORT。SORT指令可以针对列表类型、集合类型、有序集合类型的键进行排序,同时借助BY指令,Redis的SORT...BY指令可以完成一部分类似MYSQL中的关系查询排序效果。
SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern...]] [ASC|DESC] [ALPHA] [STORE destinion]
SORT排序比较简单,排序之后立即将结果返回,以列表的形式返回。假定有一个资源ID列表,资源ID使用MYSQL的自增主键,从1开始累增。如果将这些ID放置到了集合中,那么在使用按入库时间降序排列时,使用集合是无法做到的,此时可以使用SORT。使用列表效果也一致。参考下面的例子。
# 结合
SADD resourceids 2 3 1 5 4
# (integer) 5
SORT resourceids # 默认为ASC
# 1) "1"
# 2) "2"
# 3) "3"
# 4) "4"
# 5) "5"
SORT resourceids DESC
# 1) "5"
# 2) "4"
# 3) "3"
# 4) "2"
# 5) "1"
# 列表
LPUSH lst 2 3 1 5 4
# (integer) 5
SORT lst DESC
# 1) "5"
# 2) "4"
# 3) "3"
# 4) "2"
# 5) "1"
从上列中看出,使用SORT指令时,列表、集合或者是有序集合,指令功能基本是一致的。而对有序集合使用SORT进行排序时,将会忽略SCORE,只对元素字面值进行排序,此时效果和集合或列表使用方式及表现是一致的。
<