redis的sort命令
1、简单描述
sort命令可以对list、set和sorted set的元素进行排序,然后显示排序的结果,不影响这些类型里面存储的数据的排序。就是说sort可以对list的元素排序,但是执行lrange等命令会发现在内存中存储的元素的顺序没变。
2、相关操作(基于4.0.1版本)
sort的格式:
sort key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE destination]
1)sort key 不加其他的参数,那么会按照asc的方式来排序,注意这里前提是元素的值是数字类型,如果元素的值是字符串,需要加上alpha(表示按照字母排序)才能排序。
2)sort key by pattern 就是按照一个模式来排序
3)sort key get pattern:返回的值是按照get pattern来显示,其中get #表示显示原来的key里面元素的值。
4)sort key limit start num: 获取从下标start开始的num个元素,注意下标是从0开始计算的。
5)sort key store 目标list:把排序的结果存储到一个目标list上。
3、小结
1)大数据量的sort命令会占用不少时间,由于redis是单进程单线程的,那么在sort排序期间,其他的client的操作就会被阻塞,要等待。解决方法就是把这种耗时的操作放在slave机器(主从复制的从机器)去执行,另外就是对排序的结果存储起来,避免多次做同一sort操作。还有一种做法是采用sorted set根据需求建立索引。
2)如果有多个redis server,比如集群的情况下,key可能会放在不同的服务器上,那么是不好操作的,如果进行sort要根据所有的name*的排序结果来排序某个list或者set,会很难操作,那么可以使用一致性哈希算法,尽量把包含有相同用途的key放在同一台服务器上,比如key的名称可以用{}包含相同的部分,比如{name}11 , {name}12,根据{}里面的内容做哈希算法,那么{name}11 和{name}12等key会存放在同一台服务器上,方便做sort等操作。{}这个叫做hash tag,有兴趣的朋友可以自行搜索hash tag去进一步了解。
redis的sort命令的更多相关文章
- Redis的 SORT命令
SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC | DESC] [ALPHA] [S ...
- 8、Redis中sort命令详解
写在前面的话:读书破万卷,编码如有神 ------------------------------------------------- 1.排序 (1)sort:可以对List.Set.ZSet里面 ...
- redis入门指南(三)—— 事务、过期时间、SORT命令、消息通知与管道
写在前面 学习<redis入门指南>笔记,结合实践,只记录重要,明确,属于新知的相关内容. 事务 1.redis中的事务由一组命令的集合组成,要么都执行,要么都不执行,同时redis的事务 ...
- 通过redis的monitor命令排除故障
项目里有10台服务器都在一个刀箱里,其中一台是redis缓存服务器,另外的是app服务器.通过监控发现这个刀箱的流量750M,其中缓存服务器的流量达105M,这么高的流量已经造成其它项目的服务器网络延 ...
- Jedis对Redis的常用命令操作
本篇主要总结一些Jedis对Redis的常用命令操作: 1.对key操作命令 2.对String操作命令 3.对List操作命令 4.对Set操作命令 5.对Hash操作命令 6.排序操作指令 一.项 ...
- redis常用的命令总结
redis常用的命令大全 1.基于内存的key-value数据库 2.基于c语言编写的,可以支持多种语言的api //set每秒11万次,取get 81000次 3.支持数据持久化 4.value可以 ...
- redis的常用命令01
启动redis的命令: redis-server redis.windows.conf把redis设置成windows下的服务的命令:输入命令后刷新会出现redis的服务:redis-server - ...
- 2、redis原生的命令操作不同数据类型
一.常用数据类型简介: redis常用五种数据类型:string,hash,list,set,zset(sorted set). 1.String类型 String是最简单的类型,一个key对应一个v ...
- 【REDIS】 redis-cli 命令
Redis提供了丰富的命令(command)对数据库和各种数据类型进行操作,这些command可以在Linux终端使用. 在编程时,比如使用Redis 的Java语言包,这些命令都有对应的方法.下面将 ...
随机推荐
- Linux下安装ActiveMQ CPP
ActiveMQ CPP ActiveMQ CPP是用C++语言访问ActiveMQ的客户端开发库,也称cms(cpp message service),安装cms开发库需要先安装一些基础库. 如下: ...
- [转载] Tomcat架构分析
转载自http://gearever.iteye.com/category/223001
- SpringAware
哈哈,终于把分布式的课程演讲给混过去了,下面开始随便自己学点东西. 正题:SpringAware--------在实际项目中,用到spring容器的本省功能资源,这是Bean必须意识到Spring容器 ...
- RunLoop已入门?赶紧来应用一下
前言 对RunLoop还没有什么概念的同学请移步我的上一篇文章,传送门:RunLoop入门 看我就够了http://www.cnblogs.com/weiming4219/p/7879443.html ...
- linux top结果保存到文本上
[root@web-DB script]# cat top.sh # !/bin/bash today=`date +%Y%m%d%H%M` yesterday=`date -d "1 da ...
- 9. 使用ZooKeeper Java API编程
ZooKeeper是用Java开发的,3.4.6版本的Java API文档可以在http://zookeeper.apache.org/doc/r3.4.6/api/index.html上找到. Ti ...
- MS08_067漏洞学习研究
p197 MS08-067漏洞渗透攻击 按照书上的设置做,exploit得到错误信息: Exploit failed [unreachable]: Rex::ConnectionRefused The ...
- Pyqt5学习系列
最近在学习Pyqt5做界面,找到了一个非常棒的博主的学习系列 在此记录下来: http://blog.csdn.net/zhulove86/article/category/6381941
- MongoDB中的MapReduce介绍与使用
一.简介 在用MongoDB查询返回的数据量很大的情况下,做一些比较复杂的统计和聚合操作做花费的时间很长的时候,可以用MongoDB中的MapReduce进行实现 MapReduce是个非常灵活和强大 ...
- 迷宫问题-POJ 3984
迷宫问题 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 24348 Accepted: 14206 Descriptio ...