Redis学习篇(十)之排序

SORT

  1. 按照键值从小到大或者从大到小的顺序进行排序
  • 对数字进行排序

    语法:SORT key [DESC]

    默认情况下,是升序排序,可以指定DESC进行降序排序

  • 对字母进行排序

    语法:SORT key ALPHA [DESC]

    默认情况下,是升序排序,可以指定DESC进行降序排序

  1. 使用LIMIT限制返回的数量

    语法: LIMIT offset number

    offset是偏移量
    number是限制的数量

  2. 根据外部的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_*
    
  3. 根据排序结果取出相应的键值

    # 先根据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_*
    
    
  4. 注意

SORT命令的时间复杂度是O(n+mlogm)
n表示要排序的列表或者集合中的元素的个数,m表示要返回元素的个数

  • 尽可能减少待排序中键的个数(使n减少)
  • 使用LIMIT参数限制获取元素的个数(使m减少)
  • 大量排序时,通过STORE缓存结果
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 深入浅出Redis1.Redis的发展史Redis[Remote Directory Server]:远程服务器字...
    ArleyDu阅读 3,754评论 0 0
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,360评论 0 33
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,730评论 18 399
  • 曾经不明白的,现在都懂了。工作了,确时时间从未够用过,而且快得吓人。
    周逝阅读 3,843评论 6 8
  • 这是前几天给同事们做的主题分享。整理一下也顺手纪念那些钱有点儿少心有点儿野的日子。 “更大的世界”。我找了这个标题...
    帕洛马阅读 3,114评论 0 2

友情链接更多精彩内容