• 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缓存结果
  • 相关阅读:
    day56 js收尾,jQuery前戏
    解决:No module named 'haystack.urls'
    用PicGo+Gitee(码云)搭建Markdown图床
    Python正课138 —— 基础扩展4 django
    Python正课140 —— DRF 进阶1 序列化、增删改查
    Markdown基本语法
    Python正课139 —— DRF 入门1
    用PicGo+GitHub+Typora搭建个人图床
    解决django.core.exceptions.ImproperlyConfiguredmysqlclient 1.3.13 or
    解决:Django中AttributeError:'str'objects has no attribute 'decode'
  • 原文地址:https://www.cnblogs.com/cnkai/p/7501159.html
Copyright © 2020-2023  润新知