有序集合(Sorted Set)类型
简介有序集合是一种比较复杂的数据类型。集合中每个元素都有自己的权重,在某些需要数据保持有序的场景中,有序集合就非常方便。有序集合的功能非常强大,可以获取指定区间内的元素个数,可以进行排名,这都可以在实际的运用场景中大展身手。
有序集合是一种比较复杂的数据类型。集合中每个元素都有自己的权重,在某些需要数据保持有序的场景中,有序集合就非常方便。有序集合的功能非常强大,可以获取指定区间内的元素个数,可以进行排名,这都可以在实际的运用场景中大展身手。
相关命令
ZADD、ZREVRANGE、ZRANGE、ZINCRBY、ZREVRANK、ZUNIONSTORE、ZCARD、ZREM、ZSCAN
更多命令学习参考redis官网
操作
1、使用ZADD命令添加元素到有序集合
127.0.0.1:6379> ZADD sort_set_1 20 "yang" 10 "li" 30 "wang" 18 "sun" 33 "zhang"
(integer) 5
注意:在使用ZADD命令的时候,有选项NX和XX。这个跟前面的用法一样,NX能够实现不更新已存在的成员的情况下只添加新成员,而XX则是不向集合中增加新成员的情况下更新成员。如果相同的成员具有相同的权重,那么Redis就会按照字典顺序进行排序。
2、使用ZREVRANGE命令来获取排名(从大到小)、使用ZRANGE命令获取成员信息(从小到大)【例子在后面】
127.0.0.1:6379> ZREVRANGE sort_set_1 0 -1
1) "zhang"
2) "wang"
3) "yang"
4) "sun"
5) "li"
127.0.0.1:6379> ZREVRANGE sort_set_1 0 -1 WITHSCORES
1) "zhang"
2) "33"
3) "wang"
4) "30"
5) "yang"
6) "20"
7) "sun"
8) "18"
9) "li"
10) "10"
3、使用ZINCRBY命令来对分值增加数字
127.0.0.1:6379> ZINCRBY sort_set_1 1 "zhang"
"34"
127.0.0.1:6379> ZINCRBY sort_set_1 5 "wang"
"35"
4、使用ZREVRANK命令查看排名
127.0.0.1:6379> ZREVRANK sort_set_1 "zhang"
(integer) 1
127.0.0.1:6379> ZREVRANK sort_set_1 "wang" #0表示第一名
(integer) 0
127.0.0.1:6379> ZREVRANK sort_set_1 "xing" #不存在的就返回nil
(nil)
5、使用ZSCORE命令查看分值
127.0.0.1:6379> ZSCORE sort_set_1 "zhang"
"34"
127.0.0.1:6379> ZSCORE sort_set_1 "wang"
"35"
6、使用SUNIONSTORE命令合并有序集合
127.0.0.1:6379> ZADD sort_set_2 100 "zhang" 201 "wang" 111 "sun" #增加另一个集合
(integer) 3
127.0.0.1:6379> ZUNIONSTORE sort_set_3 2 sort_set_1 sort_set_2 #进行合并,如果两个集合中相同元素的分值会相加
(integer) 5
127.0.0.1:6379> ZREVRANGE sort_set_3 0 -1 WITHSCORES
1) "wang"
2) "236"
3) "zhang"
4) "134"
5) "sun"
6) "129"
7) "yang"
8) "20"
9) "li"
10) "10"
127.0.0.1:6379> ZUNIONSTORE sort_set_4 2 sort_set_1 sort_set_2 WEIGHTS 2 1 #分别为每个集合指定一个权重值,然后它们的分值会分别先进行权重值相乘在相加
(integer) 5
127.0.0.1:6379> ZREVRANGE sort_set_4 0 -1 WITHSCORES
1) "wang"
2) "271"
3) "zhang"
4) "168"
5) "sun"
6) "147"
7) "yang"
8) "40"
9) "li"
10) "20"
7、使用ZCARD获取集合元素的个数
127.0.0.1:6379> ZCARD sort_set_1
(integer) 5
127.0.0.1:6379> ZCARD sort_set_2
(integer) 3
8、使用ZREM移除集合中的元素
127.0.0.1:6379> ZREM sort_set_1 sun
(integer) 1
127.0.0.1:6379> ZCARD sort_set_1
(integer) 4
9、使用ZRANGE命令获取成员信息(从小到大)
127.0.0.1:6379> ZRANGE sort_set_1 0 -1 WITHSCORES
1) "li"
2) "10"
3) "yang"
4) "20"
5) "zhang"
6) "34"
7) "wang"
8) "35"
注意:ZSCAN命令用于来迭代成员非常多的集合,跟前面集合的SSCAN命令使用方式一样。
有时候我们并不想让自己的应用能多次进行启动,所以本文主要讲解下如何限制Electron的应用多次被启动。
迪米特法则(Law of Demeter,LoD)又叫作最少知识原则(Least Knowledge Principle,LKP),产生于 1987 年美国东北大学(Northeastern University)的一个名为迪米特(Demeter)的研究项目,由伊恩·荷兰(Ian Holland)提出,被 UML 创始者之一的布奇(Booch)普及,后来又因为在经典著作《程序员修炼之道》(The Pragmatic Programmer)提及而广为人知。
Python项目中必须包含一个 requirements.txt 文件,用于记录所有依赖包及其精确的版本号。以便新环境部署。本文记录python需求文件requirements.txt的创建及使用。
you-get是一个基于Python的开源命令行工具,主要用于下载来自多个视频网站的视频、音频和图片资源。它支持YouTube、Bilibili、Vimeo等平台,可通过简单命令快速获取下载链接并支持自定义保存路径和格式。
用supervisord管理python进程,python程序中的print内容不能输出到指定的日志文件
快速生成表格
在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问题