sort 命令可以对列表键、集合键或有序集合键的值进行排序。sort 命令并不修改数据库值,只是输出有序。

127.0.0.1:6379> rpush numbers 9 8 7 6 1 2 3 4
(integer) 8
127.0.0.1:6379> lrange numbers 0 -1
1) "9"
2) "8"
3) "7"
4) "6"
5) "1"
6) "2"
7) "3"
8) "4"
127.0.0.1:6379> sort numbers
1) "1"
2) "2"
3) "3"
4) "4"
5) "6"
6) "7"
7) "8"
8) "9"
127.0.0.1:6379> lrange numbers 0 -1
1) "9"
2) "8"
3) "7"
4) "6"
5) "1"
6) "2"
7) "3"
8) "4"

sort 选项

by 选项,根据权重进行排序:

127.0.0.1:6379> zadd test-result 3.0 jack 3.5 peter 4.0 tom
(integer) 3
127.0.0.1:6379> zrange test-result 0 -1
1) "jack"
2) "peter"
3) "tom"
127.0.0.1:6379> mset peter_number 1 tom_number 2 jack_number 3
OK
127.0.0.1:6379> sort test-result by *_number
1) "peter"
2) "tom"
3) "jack"

alpha 选项,对包含字符串值的键进行排序

127.0.0.1:6379> sadd fruits apple banana cherry
(integer) 3
127.0.0.1:6379> smembers fruits
1) "cherry"
2) "apple"
3) "banana"
127.0.0.1:6379> sort fruits alpha
1) "apple"
2) "banana"
3) "cherry"

asc 选项和 desc 选项

默认情况下 sort 命令执行升序排序,以下命令是等价的:

sort numbers
sort numbers asc

如果想使用降序排序:

sort numbers desc

带有 alpha 选项的 by 选项的排序

by 选项默认假设权重保存的值为数字值,如果权重键保存的是字符串的值的话,需要在使用 by 选项的同时,配合使用 alpha 选项。

127.0.0.1:6379> sadd fruits apple banana cherry
127.0.0.1:6379> mset apple-id "fruit-25" banana-id "fruit-79" cherry-id "fruit-13"
OK
127.0.0.1:6379> sort fruits by *-id alpha
1) "cherry"
2) "apple"
3) "banana"

limit 选项

默认 sort 命令总会将排序后的所有元素都返回给客户端,但是通过 limit 选项可以让 sort 命令只返回其中一部分已排序的元素。

格式:limit < offset > < count >

127.0.0.1:6379> sort fruits alpha limit 0 2
1) "apple"
2) "banana"

get 选项

默认情况 sort 命令在对键进行排序后,总是返回包含键本身所包含的元素。通过 get 选项可以让 sort 命令在对键值进行排序后,根据被排序和 get 选项指定的模式,查找并返回某些键的值。

127.0.0.1:6379> sadd students "peter" "jack" "tom"
(integer) 3
127.0.0.1:6379> sort students alpha
1) "jack"
2) "peter"
3) "tom"
127.0.0.1:6379> set peter-name "Peter White"
OK
127.0.0.1:6379> set jack-name "Jack Snow"
OK
127.0.0.1:6379> set tom-name "Tom Smith"
OK
127.0.0.1:6379> sort students alpha get *-name
1) "Jack Snow"
2) "Peter White"
3) "Tom Smith"

store 选项

默认情况 store 命令只向客户端返回排序的结果,而不保存结果。通过 store 选项,可以将排序结果保存在指定的键里,并在有需要时重用这个排序结果:

127.0.0.1:6379> sort students alpha store stored_students
(integer) 3

多个选项的执行顺序

选项的执行顺序

  1. 排序
  2. limit
  3. get
  4. store
  5. 向客户端返回结果集

选项的摆放顺序

除了 get 选项外,改变选项的摆放顺序不会影响 sort 命令执行这些选项的顺序。在调整 sort 命令各个选项摆放顺序时,必须小心处理 get 选项。

Redis学习笔记七:独立功能之排序的更多相关文章

  1. Redis学习笔记七:主从集群

    单机,单节点,单实例的Redis会有什么问题呢? 容易导致单点故障,那么如何解决呢? 可以通过主备方式 同时可以实现读写分离 这里的每个节点是全量的,镜像的. 单节点的容量有限而且单点的压力比较大,如 ...

  2. Redis学习笔记八:集群模式

    作者:Grey 原文地址:Redis学习笔记八:集群模式 前面提到的Redis学习笔记七:主从复制和哨兵只能解决Redis的单点压力大和单点故障问题,接下来要讲的Redis Cluster模式,主要是 ...

  3. redis 学习笔记(6)-cluster集群搭建

    上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,得借助一致性hash来自己搞shardi ...

  4. Redis学习笔记4-Redis配置详解

    在Redis中直接启动redis-server服务时, 采用的是默认的配置文件.采用redis-server   xxx.conf 这样的方式可以按照指定的配置文件来运行Redis服务.按照本Redi ...

  5. Redis学习笔记之ABC

    Redis学习笔记之ABC Redis命令速查 官方帮助文档 中文版本1 中文版本2(反应速度比较慢) 基本操作 字符串操作 set key value get key 哈希 HMSET user:1 ...

  6. (转)Qt Model/View 学习笔记 (七)——Delegate类

    Qt Model/View 学习笔记 (七) Delegate  类 概念 与MVC模式不同,model/view结构没有用于与用户交互的完全独立的组件.一般来讲, view负责把数据展示 给用户,也 ...

  7. redis 学习笔记-cluster集群搭建

    一.下载最新版redis 编译 目前最新版是3.0.7,下载地址:http://www.redis.io/download 编译很简单,一个make命令即可,不清楚的同学,可参考我之前的笔记: red ...

  8. Redis学习笔记4-Redis配置具体解释

    在Redis中直接启动redis-server服务时, 採用的是默认的配置文件.採用redis-server   xxx.conf 这种方式能够依照指定的配置文件来执行Redis服务. 依照本Redi ...

  9. go微服务框架kratos学习笔记七(kratos warden 负载均衡 balancer)

    目录 go微服务框架kratos学习笔记七(kratos warden 负载均衡 balancer) demo demo server demo client 池 dao service p2c ro ...

随机推荐

  1. HTML5系列四(特征检测、Modernizr.js的相关介绍)

    Modernizr:一个HTML5特征检测库 Modernizr帮助我们检测浏览器是否实现了某个特征,如果实现了那么开发人员就可以充分利用这个特征做一些工作 Modernizr是自动运行的,无须调用诸 ...

  2. BZOJ1812 [IOI2005]river

    传送门: 很常规的一道树规,转为左儿子右兄弟. 然后$f[node][anc][K]$表示在node节点上,最近的有贡献祖先在anc上,在node的儿子和兄弟上有k个有贡献节点的最优值. 然后得出以下 ...

  3. collectionView

    // /* UICollectionView 类是iOS6 新引进的API,用于展示集合视图, 布局更加灵活,可实现多列布局,用法类似于UITableView类. - 更新视图: [collectio ...

  4. IOS OC 计算器算法(不考虑优先级)

    个人见解:为还在计算器算法方面迷惑的同学一个数据处理解决方案:定义一个可变数组array,一个可变字符串str,使字符通过[array addObject:str];方法添加到可变数组,每当触发运算符 ...

  5. nginx+php-fpm的socket配置小结

    关于socket的介绍本文不再赘述,生产环境中常用socket方式,本文简述其配置方式. #cd /app/local/php#切换到php安装目录下 #mkdir run #chmod 777 ./ ...

  6. 如何用Nsight调试C# OpenGL程序

    https://devtalk.nvidia.com/default/topic/804306/nsight-visual-studio-edition/nsight-4-5-can-t-debug- ...

  7. Jquerymobile 简单安装

    需要导入三个文件jquery,jquerymobile,css(jquerymobile地址:http://jquerymobile.com/) <script src="js/jqu ...

  8. Hive部署

    前置环境:CentOS 6.5 + JDK 1.7 + Hadoop 2.6 注:此处采用伪分布安装Hadoop,平时测试使用,Hive的元数据信息使用MySQL存储 一.安装MySQL 1.检查是否 ...

  9. Effective Objective-C 2.0 — 第二条:类的头文件中尽量少引入其他头文件

    第二条:类的头文件中尽量少引入其他头文件 使用向前声明(forward declaring) @class EOCEmployer 1, 将引入头文件的实际尽量延后,只在确有需要时才引入,这样就可以减 ...

  10. JQuery Easy Ui 可装载组合框 - ComboBox

    可装载组合框 - ComboBox 继承自$.fn.combo.defaults,通过$.fn.combobox.defaults覆盖默认值 combobox显示的是一个可以编辑的文本框和一个下拉列表 ...