一、有序集合类型
有序集合类型,大家从名字上应该就可以知道,实际上就是在集合类型上加了个有序而已。Redis中的有序集合类型,实际上是在集合类型上,为每个元素都关联一个分数,有序实际上说的是分数有序,我们根据分数的范围获取集合及其他操作。集合的元素依然是不能够相同的,但是分数可以相同。
下面列举有序集合和类型和列表类型的相似处:
①两者都是有序的(废话!)
②两者都可以获得某一范围的元素
下面列举区别:
①列表是链表实现的,靠近两边的数据读取极快,而元素过多后获取中间元素的速度则会很慢;有序集合类型使用的散列表和跳跃表(Skip list)实现的,所以读取哪部分的数据都差不多(时间复杂度是O(logN))。
②列表中不能简单的调整元素的位置,但是有序集合可以(通过改变分数)。
③有序集合比列表费内存(要存储分数、散列、跳跃表)。
二、Redis有序集合的常用命令
Redis有序集合的常用命令有:zadd,zrange,zremrangebyrank,zremrangebyscore,zcard等,这些都是使用频率比较高的,还有一些参数的说明等。下面来看看一起看看吧。
1、ZADD命令
将一个或多个 member 元素及其 score 值加入到有序集 key 当中。
如果某个 member 已经是有序集的成员,那么更新这个 member 的 score 值,并通过重新插入这个 member 元素,来保证该 member 在正确的位置上。
score 值可以是整数值或双精度浮点数。
先用zadd命令批量添加一些元素到有序集合中,后面的操作都是基于这个集合进行。

有序集合最特别的地方在于score,有了分值可以做很多事情,这个score不仅可以理解为分值,有时也会存时间戳,或者ip的整形形式,可以灵活运用。
2、ZRANGE命令
语法:ZRANGE key start stop [WITHSCORES]
zrange命令用于返回有序集合中给定区间的元素。start从0开始,stop是结束下标,如果是负数表示从倒数开始,-1倒数第一个,-2倒数第二个……
看下面的操作一目了然。
3、ZREMRANGEBYRANK命令语法:ZREMRANGEBYRANK key start stop
移除有序集中指定排名(rank)区间内的所有成员。start从0开始,stop可以为负数,表示倒过来第几位。
4、ZREMRANGEBYSCORE命令语法:ZREMRANGEBYSCORE key min max
移除有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。
语法:ZCARD key
返回有序集合的基数。
6、ZCOUNT命令语法:ZCOUNT key min max
ZCOUNT命令和ZCARD命令的不同是,ZCOUNT支持根据范围返回元素个数。
由于集合元素都差不多删没了,重新添加一组元素:

现在返回分值在80和100之间的成员数量。
在Redis里面,还有个参数inf,-inf表示第一个成员,+inf表示最后一个。127.0.0.1:6379> zcount new 80 +inf(integer) 4
这里就返回4个数量,+inf这里表示没有限制最高分值的意思。
本篇文章到此结束,如果您有相关技术方面疑问可以联系我们技术人员远程解决,感谢大家支持本站!