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/
python多维数组为一维数组(reshape、flatten、ravel),使用NumPy库.
快速生成表格
Electron页面跳转、浏览器打开链接和打开新窗口
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问题
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。