有序集合(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命令使用方式一样。
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。
前一篇博客中已经说过Golang对Gzip的处理,其实这是我的服务器端的处理,那么当我们服务器返回Gzip压缩的字符串后,客户端如何进行解压呢?本文主要记录下JavaScript对Gzip进行压缩和解压处理。
最近想把公司的内网几台服务器能通过打开一个网站的方式进行管理,所以寻求了一圈最终选择了Teleport。Teleport,这是一个使用Go语言编写的,高效的现代SSH管理工具。
Mysql in 多个字段的用法
Python调用WPS把文档转换PDF,并把PDF转图片,首先需要安装WPS,然后利用pypiwin32把文档转化成PDF,再利用fitz、PyMuPD把PDF转化成图片
快速生成表格
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问题
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。