Redis学习篇(十)之排序
SORT
- 按照键值从小到大或者从大到小的顺序进行排序
-
对数字进行排序
语法:SORT key [DESC]
默认情况下,是升序排序,可以指定DESC进行降序排序
-
对字母进行排序
语法:SORT key ALPHA [DESC]
默认情况下,是升序排序,可以指定DESC进行降序排序
-
使用LIMIT限制返回的数量
语法: LIMIT offset number
offset是偏移量
number是限制的数量 -
根据外部的key的权重进行排序
LPUSH uid 1 SET user_name_1 admin1 SET user_level_1 999 LPUSH uid 2 SET user_name_2 admin2 SET user_level_2 99 LPUSH uid 3 SET user_name_3 admin3 SET user_level_3 900 LPUSH uid 4 SET user_name_4 admin4 SET user_level_4 299 LPUSH uid 5 SET user_name_5 admin5 SET user_level_5 478 # 默认是根据uid升序排序 SORT uid # 根据用户的级别进行排序 # 执行顺序是,首先找出uid,然后将其逐个对应到user_level_*上面, # 按照user_level_*的值进行排序,返回uid SORT uid BY user_level_*
-
根据排序结果取出相应的键值
# 先根据uid进行排序,再将uid对应到user_name_*上面,返回user_name_* SORT uid GET use_name_* # 先按照user_level排序, 再获取user_name SORT uid BY user_level_* GET user_name_* # 先根据uid进行排序,再同时获取用户名和等级 SORT uid GET user_name_* GET user_level_* # 使用"#"获取编号 SORT uid GET # GET user_level_* GET user_level_* # 当BY对象不存在时,就不排序 SORT uid BY noExists GET # GET user_level_* GET user_name_*
-
注意
SORT命令的时间复杂度是O(n+mlogm)
n表示要排序的列表或者集合中的元素的个数,m表示要返回元素的个数
- 尽可能减少待排序中键的个数(使n减少)
- 使用LIMIT参数限制获取元素的个数(使m减少)
- 大量排序时,通过STORE缓存结果