SORT命令(列表或集合)
简介排序是我们经常遇到的问题,在Redis中,集合或列表都是无序的,有序集合是根据权重进行排序的。有时候我们希望获取到列表或集合是有序的,或者以某种非权重对有序集合进行排序。那么Redis给我们提供了SORT命令。
排序是我们经常遇到的问题,在Redis中,集合或列表都是无序的,有序集合是根据权重进行排序的。有时候我们希望获取到列表或集合是有序的,或者以某种非权重对有序集合进行排序。那么Redis给我们提供了SORT命令。
操作
1、集合进行排序【数字】
127.0.0.1:6379> SADD "users_id" 232 111 453 90 1121 #集合
(integer) 5
127.0.0.1:6379> SORT "users_id" #进行排序,默认为升序
1) "90"
2) "111"
3) "232"
4) "453"
5) "1121"
127.0.0.1:6379> SORT "users_id" DESC #可以指定DESC进行降序
1) "1121"
2) "453"
3) "232"
4) "111"
5) "90"
127.0.0.1:6379> SORT "users_id" DESC limit 0 2 #使用limit进行限制数量的返回
1) "1121"
2) "453"
127.0.0.1:6379> SORT "users_id" DESC limit 2 4
1) "232"
2) "111"
3) "90"
2、集合进行排序【非数字】
127.0.0.1:6379> SADD "users_name" "xiao" "wang" "abc" "hello" "world"
(integer) 5
127.0.0.1:6379> SORT "users_name" #这里如果是非数字的,就会报错,所以需要加上ALPHA修饰符
(error) ERR One or more scores can't be converted into double
127.0.0.1:6379> SORT "users_name" ALPHA
1) "abc"
2) "hello"
3) "wang"
4) "world"
5) "xiao"
127.0.0.1:6379> SORT "users_name" ALPHA DESC
1) "xiao"
2) "world"
3) "wang"
4) "hello"
5) "abc"
3、我们不希望按照值的元素进行排序,而是根据其他的键中定义的权重来对元素进行排序
127.0.0.1:6379> SET "id_232" 5.0
OK
127.0.0.1:6379> SET "id_111" 4.9
OK
127.0.0.1:6379> SET "id_453" 4.0
OK
127.0.0.1:6379> SET "id_90" 5.8
OK
127.0.0.1:6379> SET "id_1121" 3.2
OK
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379> SORT "users_id" BY "id_*"
1) "1121"
2) "453"
3) "111"
4) "232"
5) "90"
127.0.0.1:6379> SORT "users_id" BY "id_*" DESC
1) "90"
2) "232"
3) "111"
4) "453"
5) "1121"
4、有时候可能还会根据排序后的去获取某些键的值,需要结合上面的3进行处理
127.0.0.1:6379> set "name_232" "zhang"
OK
127.0.0.1:6379> set "name_111" "yang"
OK
127.0.0.1:6379> set "name_453" "li"
OK
127.0.0.1:6379> set "name_90" "xing"
OK
127.0.0.1:6379> set "name_1121" "lei"
OK
127.0.0.1:6379> SORT "users_id" BY "id_*" DESC GET "name_*"
1) "xing"
2) "zhang"
3) "yang"
4) "li"
5) "lei"
GET选项可以被多次使用,GET #表示获取元素本身
127.0.0.1:6379> SORT "users_id" BY "id_*" DESC GET #
1) "90"
2) "232"
3) "111"
4) "453"
5) "1121"
SORT命令还有一个选项是STORE,这个选项可以将结果保存到指定的键中
注意:SORT的时间复杂度为O(N+M*log(M)),其中N是列表或集合中的元素的个数,M是要返回的元素的条目。所以在对大量数据进行排序时,Redis服务器的性能会降低,所以一定要注意。
网页扫描二维码库:Html5-Qrcode,官网地址:https://scanapp.org/html5-qrcode-docs/
nodejs中使用npm和yarn,使用最新阿里云镜像 aliyun mirror,网上很多还是文章用的是下面这个地址~~yarn config set registry https://registry.npm.taobao.org~~
在Golang编程中,经常会用到MongoDB数据库进行查询,但是当日期是一个字符串的时候,如何根据日期进行分组查询呢?本文将记录如何分组查询统计。
默认情况下 pip 使用的是国外的镜像,在下载的时候速度非常慢,本文我们介绍使用国内源对pip进行加速。
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。
快速生成表格
Electron页面跳转、浏览器打开链接和打开新窗口
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。
Docker编译镜像出现:fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.12/main: temporary error (try again later)
WARNING: Ignoring APKINDEX.2c4ac24e.tar.gz: No such file or directory问题