Redis中有序集合的常用命令有哪些?

本文和大家分享的主要是redis 中有序集合类型的常用命令,一起来看看吧,希望对大家 学习redis有所帮助。

一、有序集合类型

有序集合类型,大家从名字上应该就可以知道,实际上就是在集合类型上加了个有序而已。Redis 中的有序集合类型,实际上是在集合类型上,为每个元素都关联一个分数,有序实际上说的是分数有序,我们根据分数的范围获取集合及其他操作。集合的元素依然是不能够相同的,但是分数可以相同。

下面列举有序集合和类型和列表类型的相似处:

① 两者都是有序的(废话!)

② 两者都可以获得某一范围的元素

下面列举区别:

① 列表是链表实现的,靠近两边的数据读取极快,而元素过多后获取中间元素的速度则会很慢;有序集合类型使用的散列表和跳跃表( Skip list )实现的,所以读取哪部分的数据都差不多(时间复杂度是 O(logN) )。

② 列表中不能简单的调整元素的位置,但是有序集合可以(通过改变分数)。

③ 有序集合比列表费内存(要存储分数、散列、跳跃表)。

二、Redis 有序集合的常用命令

Redis 有序集合的常用命令有:  zadd ,  zrange ,  zremrangebyrank ,  zremrangebyscore ,  zcard  等,这些都是使用频率比较高的,还有一些参数的说明等。下面来看看一起看看吧。

1 、 ZADD 命令

将一个或多个  member  元素及其  score  值加入到有序集  key  当中。

如果某个  member  已经是有序集的成员,那么更新这个  member  的  score  值,并通过重新插入这个  member  元素,来保证该 member  在正确的位置上。

score  值可以是整数值或双精度浮点数。

先用  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

如图所示:

有序集合最特别的地方在于  score  ,有了分值可以做很多事情,这个  score  不仅可以理解为分值,有时也会存时间戳,或者ip 的整形形式,可以灵活运用。

2 、 ZRANGE 命令

语法:  ZRANGE key start stop [WITHSCORES]

zrange  命令用于返回有序集合中给定区间的元素。start 从 0 开始, stop 是结束下标,如果是负数表示从倒数开始, -1 倒数第一个, -2 倒数第二个 ……

看下面的操作一目了然。

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"

加上  WITHSCORES  参数显示分值:

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 命令

语法:  ZREMRANGEBYRANK key start stop

移除有序集中指定排名(rank) 区间内的所有成员。 start 从 0 开始, stop 可以为负数,表示倒过来第几位。

127.0.0.1:6379>  zremrangebyrank  myzadd 0 2

( integer) 3

执行这个命令就删除了前三个元素a,b,c.

4 、 ZREMRANGEBYSCORE 命令

语法:  ZREMRANGEBYSCORE key min max

移除有序集  key  中,所有 score  值介于  min  和  max  之间 ( 包括等于  min  或  max ) 的成员。

127.0.0.1:6379>  zremrangebyscore  myzadd 7 8

( integer) 2

这样一来就把分值是7 和 8 的元素 d,e 移除了 .

ZREMRANGEBYRANK  和  ZREMRANGEBYSCORE  从字面上很好理解,都是移除元素,一个根据下标,一个根据分值。

5 、 ZCARD 命令

语法:  ZCARD key

返回有序集合的基数。

127.0.0.1:6379>  zcard  myzadd

( integer) 2

经过前面的删除元素操作,现在只剩2 个元素了。

6 、 ZCOUNT 命令

语法:  ZCOUNT key min max

ZCOUNT  命令和  ZCARD  命令的不同是,  ZCOUNT  支持根据范围返回元素个数。

由于集合元素都差不多删没了,重新添加一组元素:

127.0.0.1:6379>  zadd  new 100  www.baidu.com 900  www.tanteng.me 12  www.yahoo.com 90  www.xunlei.com 88www.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 有序集合类型常用命令的全部内容,文章总结的还是很详细的,希望能对大家的学习或者工作带来一些便捷,如果有大家有疑问也可以留言交流,谢谢大家对脚本之家的支持。

来源:Linux 视野

时间: 2024-08-03 07:27:55

Redis中有序集合的常用命令有哪些?的相关文章

Redis中有序集合与列表占用内存分析

在说正题之前需要先了解几种定义:字典.压缩列表与跳跃表. 字典:非常常见的数据结构,key-value结构. 常见的实现有红黑树(stl中的map),哈希表(stl中的unordered_map).红黑树的查找操作具有O(logN)的时间复杂度.哈希表的查找操作具有O(1)的时间复杂度. redis中的字典使用哈希表作为底层实现. 压缩列表:由一些列特殊编码的连续内存块组成的顺序型数据结构. 压缩列表可以包含多种节点(只能保存一种的那叫数组). 压缩列表的优点是节省内存.顺序结构拥有的缺点压缩列

Redis中的数据结构与常用命令

开发系统:Ubuntu 17.04Redis驱动:StackExchange.Redis 1.2.3Redis版本:3.2.1开发平台:.NET Core 对于Redis的介绍这里只写一句:Redis是一种基于内存的高性能非关系型数据库,它以kye-value的形式来存储数据. 5种数据结构 Redis中包含5种数据类型:STRING.LIST.SET.HASH.ZSET. Redis中的5中数据结构(截图出自<Redis in Action>): Redis以key-value形式存储数据,

Redis中Key相关的常用指令详解

Redis是一个开源的使用ANSI C 语言编写.支持网络.同memcache相比在Redis下可以实现基于内存亦可持久化的日志型.Key-Value 类型的NoSQL数据库,且在Redis中Key的类型也更为丰富.所以较为广泛的在生产环境中使用,在这里就说一说Redis中Key相关的常用指令. 首先,先要说明下在Redis下Key,Redis的key是字符串类型,但是key 中不能包括边界字符(""),由于key 不是binary safe的字符串,所以像"my key&q

linux中vim编辑器各种常用命令及用法

linux中vim编辑器的常用命令以及用法(注意严格区分大小写以及中英文): vim编辑器有三种模式,分别是:编辑模式,输入模式以及末行模式. 模式转换: 编辑模式>>>输入模式: i:在光标所在字符前面,转为输入模式(即转完后在光标所在字符前输入):                      I:在光标所在行的行首,转为输入模式(即转完后在行首输入,不包括行首空                         白) a:在光标所在字符后,转为输入模式(即转完后在光标所在字符后面输入):

Redis中Set集合命令 阿星小栈

集合(Set)? 附录,常用集合运算: A = {'a', 'b', 'c'} B = {'a', 'e', 'i', 'o', 'u'} inter(x, y): 交集,在集合x和集合y中都存在的元素. inter(A, B) = {'a'} union(x, y): 并集,在集合x中或集合y中的元素,如果一个元素在x和y中都出现,那只记录一次即可. union(A,B) = {'a', 'b', 'c', 'e', 'i', 'o', 'u'} diff(x, y): 差集,在集合x中而不在

Redis sorted set(有序集合)相关命令

Redis 有序集合是string类型元素的集合,元素不允许重复. 有序集合中的每个元素都会关联一个数值型的分数.redis正是通过分数来为集合中的成员进行从小到大的排序. 有序集合的成员是唯一的(不可重复),但分数(score)可以重复. 1.zadd  key  score1  value1  score2  value2 .....    //往有序集合中添加一个或多个元素.score是数值型,支持整数.浮点数,支持负数.z代表sorted set. 示例: zadd students 1

redis中各种数据类型的常用操作方法汇总

一.Redis的五大数据类型 1.String(字符串) string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value.string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者序列化的对象 .string类型是Redis最基本的数据类型,一个redis中字符串value最多可以是512M 2.Hash(哈希,类似java里的Map) Redis hash 是一个键值对集合.Redis hash是一个s

辛星浅析Redis中与key有关的命令

在Redis中,我们还可以直接对key直接操作,下面是我们常用的主要命令: (1)keypattern   它表示获取所有匹配pattern的keys,这里需要注意的是,我们应该避免使用该命令,因为对于大型数据库而言,该命令非常耗时,对Redis服务器的性能打击也是比较大的.它支持glob-style的通配符格式,比如用*表示任意一个或者多个字符,用?表示任意字符,用[xyz]表示方括号中的任意一个字母. (2)del   key ....   它是从数据库中删除参数中指定的keys,如果指定的

Java中的集合和常用类

Java中的常用类: ? Object类 ? Math类 ? String类和StringBuffer类(字符串) ? 8种基本类型所对应的包装类 ? java.util包中的类——Date类 Object类: Object类是Java语言程序中所有类的父类,即承自Object类.Object类中包含了Java语言类中的所有的公共属性. ? toString()方法 ? equals()方法 ? getClass()方法 ? clone()方法 ? finalize()方法 枚举类: 用于储存变