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緩存結果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM