在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一、有序集合类型 有序集合类型,大家从名字上应该就可以知道,实际上就是在集合类型上加了个有序而已。Redis中的有序集合类型,实际上是在集合类型上,为每个元素都关联一个分数,有序实际上说的是分数有序,我们根据分数的范围获取集合及其他操作。集合的元素依然是不能够相同的,但是分数可以相同。 下面列举有序集合和类型和列表类型的相似处: ①两者都是有序的(废话!) ②两者都可以获得某一范围的元素 下面列举区别: ①列表是链表实现的,靠近两边的数据读取极快,而元素过多后获取中间元素的速度则会很慢;有序集合类型使用的散列表和跳跃表(Skip list)实现的,所以读取哪部分的数据都差不多(时间复杂度是O(logN))。 ②列表中不能简单的调整元素的位置,但是有序集合可以(通过改变分数)。 ③有序集合比列表费内存(要存储分数、散列、跳跃表)。 二、Redis有序集合的常用命令 Redis有序集合的常用命令有: 1、ZADD命令 将一个或多个 如果某个
先用 127.0.0.1:6379> zadd myzadd 1 a 2 b 3 c 4 d 5 e 6 f 7 d 8 e 9 f 10 tanteng.me (integer) 7 如图所示: 有序集合最特别的地方在于 2、ZRANGE命令 语法:
看下面的操作一目了然。 127.0.0.1:6379> zrange myzadd 0 1 1) "a" 2) "b" 127.0.0.1:6379> zrange myzadd 0 5 1) "a" 2) "b" 3) "c" 4) "d" 5) "e" 6) "f" 127.0.0.1:6379> zrange myzadd 1 5 1) "b" 2) "c" 3) "d" 4) "e" 5) "f" 127.0.0.1:6379> zrange myzadd 0 -1 1) "a" 2) "b" 3) "c" 4) "d" 5) "e" 6) "f" 7) "tanteng.me" 加上 127.0.0.1:6379> zrange myzadd 0 -1 WITHSCORES 1) "a" 2) "1" 3) "b" 4) "2" 5) "c" 6) "3" 7) "d" 8) "7" 9) "e" 10) "8" 11) "f" 12) "9" 13) "tanteng.me" 14) "10" 3、ZREMRANGEBYRANK命令 语法: 移除有序集中指定排名(rank)区间内的所有成员。start从0开始,stop可以为负数,表示倒过来第几位。 127.0.0.1:6379> zremrangebyrank myzadd 0 2 (integer) 3 执行这个命令就删除了前三个元素a,b,c. 4、ZREMRANGEBYSCORE命令 语法: 移除有序集 127.0.0.1:6379> zremrangebyscore myzadd 7 8 (integer) 2 这样一来就把分值是7和8的元素d,e移除了.
5、ZCARD命令 语法: 返回有序集合的基数。 127.0.0.1:6379> zcard myzadd (integer) 2 经过前面的删除元素操作,现在只剩2个元素了。 6、ZCOUNT命令 语法:
由于集合元素都差不多删没了,重新添加一组元素: 127.0.0.1:6379> zadd new 100 www.baidu.com 900 www.tanteng.me 12 www.yahoo.com 90 www.xunlei.com 88 www.juanpi.com (integer) 5 如图所示: 现在返回分值在80和100之间的成员数量。 127.0.0.1:6379> zcount new 80 100 (integer) 3 返回3个。 在Redis里面,还有个参数inf,-inf表示第一个成员,+inf表示最后一个。 127.0.0.1:6379> zcount new 80 +inf (integer) 4 这里就返回4个数量,+inf这里表示没有限制最高分值的意思。 总结 以上就是关于Redis有序集合类型常用命令的全部内容,文章总结的还是很详细的,希望能对大家的学习或者工作带来一些便捷,如果有大家有疑问也可以留言交流,谢谢大家对极客世界的支持。 |
请发表评论