redis排序
1、sort
排序最常见的是sort命令,可以对列表或者有序集合排序,最简单的排序方式如下:
> lpush list (integer) > lpush list (integer) > lpush list (integer) > sort list ) " ) " ) "
该命令常与alpha、desc、limit等搭配使用。
2、BY参数
上述的使用方法比较简单,有时候无法满足人们的需求,以学生成绩为例,人们需要按照成绩,来排序,从而得到一个相应的学号的列表,这样比较复杂的排序使用上述的方法就不好操作了,因此需要用BY参数来操作。
首先准备一个学号的列表,且最终希望这个列表按照学生的成绩排列。
> lpush list (integer)
给每个学生设置成绩,键名为stuscore:学号
> OK > OK > OK > OK > OK > OK > OK > OK >
比较容易看出,第一名是学号为555的学生,最后一名是学号为777的学生。
> sort list by stuscore:* desc ) " ) " ) " ) " ) " ) " ) " ) " ) "
可以看出,BY这个参数的实际作用是:将待排序列表中的每个键值带入到stuscore:*的*中,并对score:*进行排序,从而获得对应的学号列表。
若代入*的键值不存在,则默认为0
> del stuscore: (integer) > sort list by stuscore:* desc ) " ) " ) " ) " ) " ) " ) " ) " ) "
3、GET参数
获得到排序后的列表,可以通过这种形式获取对应学号的学生信息,如姓名。
设姓名的键名如:stuname:学号,则可以这样获取:
> MR.zhang OK > MR.wang OK > MISS.li OK > MISS.lin OK > sort list by stuscore:* desc get stuname:* ) (nil) ) (nil) ) "MR.zhang" ) (nil) ) "MISS.lin" ) "MR.wang" ) (nil) ) (nil) ) "MISS.li"
使用get #可以一并输出list中的值
> sort list by stuscore:* desc get stuname:* get # ) (nil) ) " ) (nil) ) " ) "MR.zhang" ) " ) (nil) ) " ) "MISS.lin" ) " ) "MISS.li" ) " ) "MR.wang" ) " ) (nil) ) " ) (nil) ) "
4、store参数
如果想要存储排序的结果,可以将结果存于列表中
> sort list by stuscore:* desc get stuname:* get # store sort.result (integer) > lrange sort.result - ) "" ) " ) "" ) " ) "MR.zhang" ) " ) "" ) " ) "MISS.lin" ) " ) "MISS.li" ) " ) "MR.wang" ) " ) "" ) " ) "" ) "
5、性能优化
根据《redis入门指南》:
sort命令是redis一个很强大且复杂的命令,使用不好很容易成为性能瓶颈,故在开发的时候需要注意这么几点:
1)尽可能减少待排序的元素的数量
2)使用limit,值获取需要的数据
3)如果需要获取的数据量比较大,请用store保存
redis排序的更多相关文章
- 三.redis 排序
本篇文章介绍下redis排序命令.redis支持对list,set和sorted set元素的排序.排序命令是sort 完整的命令格式如下: SORT key [BY pattern] [LIMIT ...
- laravel操作Redis排序/删除/列表/随机/Hash/集合等方法全解
Song • 3563 次浏览 • 0 个回复 • 2017年10月简介 Redis模块负责与Redis数据库交互,并提供Redis的相关API支持: Redis模块提供redis与redis.con ...
- Redis - 排序
SORT 命令格式 SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALP ...
- redis的sort排序
Redis排序命令是sort,完整的命令格式如下:SORT key [BY pattern] [LIMIT start count] [GET pattern] [ASC|DESC] [ALPHA] ...
- 【转载】Redis sort 排序命令详解
转载地址:http://www.jb51.net/article/69131.htm 本文介绍redis排序命令 redis支持对list,set,sorted set元素的排序 sort 排序命令格 ...
- 解决Redis Cluster模式下的排序问题
通常的redis排序我们可以这么做: 比如按商品价格排序:sort goods_id_set by p_*_price 这样在非集群模式下是没问题的,但如果在集群模式下,就会报错: 说是在集群模式下不 ...
- Redis简介 Linux安装Redis Redis使用
其他一些操作(包括 APPEND.GETRANGE.MSET 和 STRLENGTH 也可用于字符串.请参见http://doc.redisfans.com/string/index.html ) 使 ...
- Java连接Redis之redis的增删改查
一.新建一个maven工程,工程可以以jar的形式或war都行,然后导入正确的依赖 <project xmlns="http://maven.apache.org/POM/4.0.0& ...
- Redis常用数据类型及使用场景
Redis最为常用的数据类型 字符串(String) 字符串列表(list) 字符串集合(set) 哈希(hash) 有序的字符串集合(sorted set) String(字符串) 字符串是最基本的 ...
随机推荐
- angualrjs 文本框去掉表情
html: <textarea ng-module="dataText"></textarea> js: <script> var BQ_RAN ...
- tensorFlow(五)深层神经网络
TensorFlow基础见前博客 上实例: MNIST 数据集介绍 MNIST 是一个手写阿拉伯数字的数据集. 其中包含有 60000 个已经标注了的训练集,还有 10000 个用于测试的测试集. 本 ...
- .net core 使用 ef core
第一步: 创建一个.net core console app. 第二步:安装EFCore package 和 design(以前vs是有EF项目模板的,core版本现在没有,所有安装这个工具来创建M ...
- RabbitMQ使用介绍及实例
消息列队不做过多解释了,直接讲讲rabbitmq的基本概念和路由模式. 一.安装及基本概念 rabbitmq是基于erlang编写的,所以安装rabbitmq之前需要安装erlang的环境,配置环境变 ...
- L1-057 PTA使我精神焕发
以上是湖北经济学院同学的大作.本题就请你用汉语拼音输出这句话. 输入格式: 本题没有输入. 输出格式: 在一行中按照样例输出,以惊叹号结尾. 输入样例: 无 输出样例: PTA shi3 wo3 ji ...
- effective java——31用实例域代替序数
1,永远不要根据枚举的序数导出与它关联的值,而是要将他保存在一个实例域中.(ordinal()) public enum Ensemble { SOLO, DUET, TRIO, QUARTET, Q ...
- L2-008. 最长对称子串(思维题)*
L2-008. 最长对称子串 参考博客 #include <iostream> using namespace std; int main() { string s; getline(ci ...
- 第一篇,java学习之旅
在java的这座殿堂中,我才刚刚推开了大门,就像是在岔路口找到了一条,走向前进java大门的路. 下面是一些java算法的问题 第一题: package project.model; import j ...
- CentOS7 cannot find a valid baseurl for repo base
找到文件夹: cd /etc/sysconfig/network-scripts/ 然后找ifcfg 开头的文件,挨个打开 里面有下面那些代码前三行的就是,添加后面DNS两行,保持并退出,然后继续执行 ...
- Python学习之路基础篇--01Python的基本常识
1 计算机基础 首先认识什么是CPU(Central Processing Unit),即中央处理器,相当于人类的大脑.内存,临时储存数据,断电即消失.硬盘,可以长久的储存数据,有固态硬盘,机械硬盘之 ...