FREE教程
目录
  • 主页
  • Oracle教程
  • redis教程
  • hadoop
  • ODI教程
  • BIEE教程
redis基础教程
redis基础教程 redis是什么 Windows下如何安装redis redis参数如何配置 redis String类型(字符串)的使用和应用场景 redis list类型(列表)的使用和应用场景 redis 集合(set)类型的使用和应用场景 redis有序集合(sorted set)详解和应用场景 redis 哈希(hash)数据类型详解和应用场景 redis发布与订阅 redis排序(sort) redis事务 redis管道 redis持久化 redis 持久化_rdb redis持久化_AOF
分类导航
Oracle基础教程 PL/SQL教程 Oracle管理 Oracle备份和恢复 Oracle RAC Oracle优化 Oracle技术 redis基础教程 hadoop教程
    首页->redis教程->redis基础教程->redis排序(sort)
redis发布与订阅
redis事务

redis排序(sort)

redis的排序和其它编程语言排序类似,都可以根据某些比较规则对一系列元素进行有序的排列。redis利用SORT命令可以对redis中的字符串、列表、集合、有序集合、散列中存储的数据进行排序。如果读者之前用过类似关系型数据库的话,那么redis的SORT命令可以看做SQL中的order by。

sort 命令

sort命令可以对list、set和sorted set的元素进行排序,然后显示排序的结果,但是不影响redis数据类型中存储数据的位置。就是说你对list进行元素排序,但是执行lrange命令你会发现内存中的元素的顺序是不发生任何变化的。因此sort命令的排序只是显示结果的排序。

sort排序命令的结构如下:

SORT key [BY pattern] [LIMIT start count] [GET pattern] [ASC|DESC] [ALPHA] [STORE dstkey]

下面就通过实例来一一讲解SORT排序的命令结构:

例子1、一般排序:

 --像链表list中加入实验数据
 lpush   list 1 2 4 5 3
 --查询数据在listSort链表中的物理位置
 lrange  list 0 -1
 --简单排序
 sort list 
 --简单的降序
 sort list desc

结果如下:(参数什么都不指定的情况下是按照数字升序排序的,当指定DESC时,将会 按照数字降序排序)

sort 排序



例子2、使用ALPHA对字符串进行排序:

--像链表list中加入实验数据
 lpush   list hello free world
--对其使用ALPHA排序
sort list alpha

结果如下:(当list表当中有字符串时,可以使用alpha参数对其进行排序,排序的结果是数字被当做是a,字符串之间再按照ASCII值进行排序)

1562689410086_054611.png


 例子3、使用limit修饰符限制返回结果。

sort list  alpha limit 2 5

结果如下:( limit 2 5指的是从list中的第二个偏移量(偏移量是从0,1,2....)开始往后取五个元素内的集合进行排序

1563115724183_744724.png


BY pattern等参数的排序通过下面的一个简单的学生信息表进行测试。表结构数据如下:

stuid
name_stuid
age_stuid
1
admin25
2
free29
3
zhangsan26
4
redis33

向redis中添加测试数据,代码如下:

 --添加四位学生学号
 lpush stulist 1 2 3 4
 
 --添加四位学生信息
 --admin
 mset name_1 admin age_1 25
 --free
 mset name_2 free age_2 29
 --zhangsan
 mset name_3 zhangsan age_3 26
 --redis
 mset name_4 redis  age_4 33

例子4、利用BY pattern通过外部key的数据作为权重进行排序,如:按照学生的年龄进行排序,代码如下:

sort stulist by age_*

sort 添加测试数据


例子5、按照学生姓名进行排序。代码如下:

sort stulist by name_* alpha asc

sort 按照姓名排序


我们也可以通过get选项去获取指定pattern作为新key对应的值.

例子6、比如通过对stulist的学号进行排序获取到对应学号的学生姓名。代码如下:

sort stulist get name_*

sort get


我们也可以利用hash表存储学生的基本信息,然后再对其进行排序。数据添加代码如下:

--admin 
hmset stu_1 name admin age 25
--free
hmset stu_2 name free age 29
--zhangsan 
hmset stu_3 name zhanggsan age 26
--redis 
hmset stu_4 name redis age 33

    例子7、通过对年龄字段进行排序获,代码如下:(可以用 key->field 的格式来获取哈希表中的域的值, 其中 key 表示哈希表键, 而 field 则表示哈希表的域。)

sort stulist by stu_*->age

1563119161724_197548.png

例子8、通过学号的排序获取学生基本信息,代码如下:

sort stulist get # get stu_*->name get stu_*->age

1563119434459_054051.png


redis发布与订阅
redis事务
关于我们 | 免责声明 | Copyright ? 2018 FREE教程 | 备案号:闽ICP备18020855号-1
公安备案

闽公网安备 35020602001245号