当前位置:   article > 正文

Redis常用命令_redis客户端连接命令

redis客户端连接命令

Redis是一个开源、基于内存、使用ANSI C语言编写的数据结构存储,可用于数据库、缓存、消息中间件。它的数据结构十分丰富,基础数据类型包括:string(字符串)、list(列表,双向链表)、hash(散列,键值对集合)、set(集合,不重复)和sorted set(有序集合)。是一种NoSQL(not-only sql)非关系型数据库。

Redis 一般用来做缓存、分布式锁、限流等功能,接下来将介绍一些Redis的常用命令。

一、基本命令

远程连接

如果是连接本地的redis服务端,直接使用 ./redis-cli -a 密码 就可以登录。

./redis-cli -h host -p port -a password
# 例子
./redis-cli -h 127.0.0.1 -p 6379 -a 123456
  • 1
  • 2
  • 3
auth password

密码验证,连接服务端时如果没有设置密码,会没有权限使用客户端命令。可以使用 auth 密码 进行密码验证。
在这里插入图片描述

select index

切换库,index表示库的编号0-15。
redis没有查看当前是哪个数据库的命令,因为当你在哪个数据库的时候,会显示其的索引号。
客户端刚连接redis的时候,默认的是第一个数据库,也就是索引号为0,不显示。切换成其他的数据库,就会显示其对应的索引号了。
在这里插入图片描述

dbsize

查看当前库中key的数量。
在这里插入图片描述

flushdb与flushall

清除数据。
flushdb:清除当前数据库中的所有key,不会立即删除rdb文件,直到触发持久化条件。慎用;
flushall:清除所有数据库中的所有ke,并执行持久化,立刻更新rdb快照文件。慎用;

# redis.conf配置文件中的rbd持久化

# 900秒内 若有一个1key发生变化就进行保存 可多设几个形成互补
save 900 1
#300秒内,若有1个Key发生变化,就进行rdb保存
save 300 10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 单库删除:flushdb 清除当前数据库的数据(redis默认下标为0-15个数据库,默认为0,flushdb会删除当前为0的数据库),【不会立即删除rdb文件,直到触发上述的save条件,如果未触发条件,那么重启后会恢复数据】。(rdb的保存时间为900才会执行一次save)
  • 多库删除:flushall会删除所有数据库,并执行持久化,立刻更新rdb快照文件。
    所以,实际上并不是flushdb命令可以恢复,而是因为未达到触发存储rdb文件的条件,如果使用del key命令也是一样的,如果未达到rdb的保存条件,立即重启也是可以恢复redis数据的。
echo message

打印字符串。
在这里插入图片描述

ping message

查看服务是否运行。
在这里插入图片描述

quit

关闭当前连接/退出。

info [section]

返回关于 Redis 服务器的各种信息和统计数值。
在这里插入图片描述
通过给定可选的参数 section ,可以让命令只返回某一部分的信息:
● server : 一般 Redis 服务器信息,包含以下域:Redis 服务器版本,Redis 服务器的宿主操作系统,架构(32 或 64 位),TCP/IP 监听端口,自 Redis 服务器启动以来,经过的天数,等等。
● clients : 已连接客户端信息,包含以下域:已连接客户端的数量(不包括通过从属服务器连接的客户端),当前连接的客户端当中,最长的输出列表,等等。
● memory : 内存信息,包含以下域:由 Redis 分配器分配的内存总量,Redis 的内存消耗峰值,等等。
● persistence : RDB 和 AOF 的相关信息。
● stats : 一般统计信息。
● replication : 主/从复制信息。
● cpu : CPU 计算量统计信息。
● commandstats : Redis 命令统计信息。
● cluster : Redis 集群信息。
● keyspace : 数据库相关的统计信息。

monitor

实时打印出 Redis 服务器接收到的命令,调试时使用。
在这里插入图片描述

二、操作key的命令

keys

查找所有符合给定模式pattern的 key。
格式:keys pattern

# 查找所有符合给定模式( pattern)的 key
keys pattern
# 获取所有的key
keys *
# 获取所有以name开头的key
keys name*
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述

del

用于删除已存在的键,不存在的 key 会被忽略。
格式:del key
在这里插入图片描述

exists

检查给定的key是否存在。
格式:exists key
在这里插入图片描述

expire/expireat/pexpireat/persist/PTTL/TTL

expire:用于设置 key 的过期时间。key 过期后将不再可用。格式:expire key seconds
expireat:用于以 UNIX 时间戳(unix timestamp)格式设置 key 的过期时间。key 过期后将不再可用。格式:expireat key timestamp
pexpireat:用于设置 key 的过期时间,已毫秒计算。key 过期后将不再可用。格式:pexpireat key milliseconds-timestamp
persist:用于移除给定 key 的过期时间,使得 key 永不过期。格式:persist key
pttl:以毫秒为单位返回 key 的剩余过期时间。格式:pttl key
TTL:以秒为单位返回 key 的剩余过期时间。格式:ttl key
在这里插入图片描述

move

将当前数据库的key移动到数据库db当中。格式:move key db
在这里插入图片描述

randomkey

从当前数据库中随机返回一个key。格式:randomkey
在这里插入图片描述

rename

修改key的名称,将key改名为newkey。格式:rename key newkey
在这里插入图片描述

renamenx

仅当newkey不存在时,将key改名为newkey。格式:renamenx key newkey
在这里插入图片描述

type

返回key所存储的值的类型。格式:type key
在这里插入图片描述

三、字符串命令

set

为字符串键设置值。使用格式: set key value [ NX | XX ] 。
在最基本的情况下,用户只需要向SET命令提供一个键和一个值就可以了:set key value。
在这里插入图片描述

改变覆盖规则 NX | XX

在默认情况下,对一个已经设置了值的字符串键执行SET命令将导致键的旧值被新值覆盖。
从Redis 2.6.12版本开始,用户可以通过向SET命令提供可选的NX选项或者XX选项来指示SET命令是否要覆盖一个已经存在的值:set key value [ NX | XX ] 。
NX: 只在键不存在时执行;等同于 setnx key value.
XX: 只在键存在时执行;
在这里插入图片描述

SETNX

SETNX是 Set If Not Exists 的简写。为字符串键设置值,当key不存在时,设置成功。基本语法如下:setnx key value。
在这里插入图片描述

SETEX

为字符串键设置值的同时,并设置过期时间。SETEX命令的基本语法如下。 setex key seconds value 。
SETEX用于设置key对应的值为String类型的value,并指定此key对应的有效期,有效期的过期时间以秒(seconds)为单位。
如果key对应的值已经存在,那么SETEX将覆盖旧值。这个命令类似于以下两个命令:

  • set key value # 设置值
  • expire key seconds # 设置过期时间
    不同之处在于,SETEX命令是一个原子性操作,设置值和设置过期时间两个操作会在同一时间内完成。该命令经常用在缓存操作中。
    在这里插入图片描述
get

获取字符串键的值。
在这里插入图片描述

getset

获取旧值并设置新值。
GETSET命令就像GET命令和SET命令的组合版本,GETSET首先获取字符串键目前已有的值,接着为键设置新值,最后把之前获取到的旧值返回给用户。
在这里插入图片描述

MSET

一次为多个字符串键设置值。基本语法如下:mset key value [key value…]
在这里插入图片描述
优点:
MSET命令除了可以让用户更为方便地执行多个设置操作之外,还能有效地提高程序的效率:执行多条SET命令需要客户端和服务器之间进行多次网络通信,并因此耗费大量的时间;而使用一条MSET命令去代替多条SET命令只需要一次网络通信,从而有效地减少程序执行多个设置操作时的时间。

MGET

一次获取多个字符串键的值。基本语法如下:mget key [key …]
MGET命令就是一个多键版本的GET命令,MGET接受一个或多个字符串键作为参数,并返回这些字符串键的值。
在这里插入图片描述

MSETNX

只在键不存在的情况下,一次为多个字符串键设置值。如果在给定键当中,即使有一个键已经有值了,那么MSETNX命令也会放弃对所有给定键的设置操作。(要么都成功,要么都失败)
基本语法如下:msetnx key value [key value…]
在这里插入图片描述
MSETNX与MSET的主要区别
MSETNX只会在所有给定键都不存在的情况下对键进行设置,而不会像MSET那样直接覆盖键已有的值:如果在给定键当中,即使有一个键已经有值了,那么MSETNX命令也会放弃对所有给定键的设置操作。MSETNX命令在成功执行设置操作时返回1,在放弃执行设置操作时则返回 0。

APPEND

追加新内容到值的末尾,分为两种情况:
● 如果key已经存在并且是一个字符串,那么可以通过APPEND将value追加到key关联的值后面。
● 如果key不存在,就简单地将key设为value,就像执行SET key value一样。
返回值:追加value之后,key中字符串的长度。
APPEND命令的基本语法如下:append key value
在这里插入图片描述

STRLEN

获取字符串值的字节长度。基本语法如下: strlen key
STRLEN用于返回key所存储的字符串的长度。返回值:字符串的长度。当key不存在时,返回0。
在这里插入图片描述

INCR

将key中存储的整数值加1,并返回加1操作之后的值。如果key不存在,则以0为key的初始值,然后执行INCR命令,设置key为1。返回值:执行INCR命令之后key的值。基本语法如下:incr key 。
数值在Redis中以字符串的形式保存。
当字符串键存储的值能够被Redis解释为整数时,用户就可以对被存储的整数值执行加法或减法操作。如果是非整数,执行此操作会报错。
在这里插入图片描述

INCRBY

将key所存储的整数值加上指定的整数增量,并返回执行加法操作之后的值。如果key不存在,则以0为key的初始值,然后执行INCRBY命令。返回值:加上增量之后key的值。基本语法如下:incrby key increment
在这里插入图片描述

DECR

将key中存储的整数值减1,并返回减1操作之后的值。如果key不存在,则以0为key的初始值,然后执行DECR命令,设置key对应的值为-1。返回值:执行DECR命令之后key的值。基本语法如下:decr key
在这里插入图片描述

DECRBY

用于为整数值减去指定的整数值,并返回执行减法操作之后的值。如果key不存在,则以0为key的初始值,然后执行DECRBY命令。返回值:减去减量之后key的值。基本语法如下:decrby key decrement
在这里插入图片描述

四、Hash命令

哈希类型:用于存储对象/字典,结构为键值对。key、域、值的类型都为string。域在同一个hash中是唯一的。

key:{(属性):值,
  域:值,
  域:值,
  ...
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
hset

设置哈希表中一个或多个字段及值。如果 field 是哈希表中的一个新字段,并且值设置成功,则返回 1;如果哈希表中 field 已经存在,并且旧值已被新值覆盖,则返回 0。
基本用法如下:HSET key field value [field value …]
在这里插入图片描述

hsetnx

设置哈希表中的一个字段及值。当key对应的field不存在时才成功,存在时什么都不做。格式:hsetnx key field value
在这里插入图片描述

hmset

同时为一个key的设置多个field;值已存在就替换旧值。格式:hmset key field value [field value …]
在这里插入图片描述

hget

获取hash类型某个key下的某个field的值。返回值:给定 field 的值。当给定 filed 不存在或给定 key 不存在时,则返回 nil。基本用法:hget key field
在这里插入图片描述

hmget

同时获取一个key的多个field的值。格式:hmget key field [field …]
在这里插入图片描述

hgetall

作用:获取一个key下所有field和value。
格式:hgetall key
在这里插入图片描述

hkeys

作用:获取key对应的所有的field
格式:hkeys key
在这里插入图片描述

hvals

作用:获取key对应的所有value;
格式:hvals key
在这里插入图片描述

hdel

作用:删除key中一个或多个filed的值。
返回值:被成功移除的字段的数量,不包括被忽略的字段。
格式:hdel key field [field …]
在这里插入图片描述

hlen

作用:返回指定key的field的数量。
格式:hlen key
在这里插入图片描述

hincrby

作用:为存储在 key 中的给定域 field的值做整数加减运算。传正数就是加运算,传负数就是减运算。
格式:hincrby key field increment
在这里插入图片描述

hexists

用于查看哈希表 key 中,给定域 field 是否存在。返回值:如果哈希表含有给字段,则返回 1;如果哈希表不含有给定字段,或者是 key 不存在,那么返回 0。格式:HEXISTS key field
在这里插入图片描述

五、List列表命令

列表类型(list)可以存储一个有序的字符串列表,左侧是头部,右侧是尾部,常用的操作是向列表两端添加元素,或者获得列表的某一个片段。
列表类型内部是使用双向链表(double linked list)实现的,所以向列表两端添加元素的时间复杂度为O(1),获取越接近两端的元素速度就越快。
在redis里,可以把list巧妙的运用成 栈、队列、阻塞队列等。

lpush

将一个或多个值插入到列表头部(从左侧开始操作),如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入。
如果 key 不存在,那么一个空列表会被自动创建并执行 LPUSH 操作;当 key 存在但不是列表类型时,则返回一个错误。
返回值:执行 LPUSH 命令后,返回列表中元数的的个数。即列表的长度。
格式:lpush key value [value …]
在这里插入图片描述

rpush

将一个或多个值插入到列表尾部(从右侧开始操作),如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入。
如果 key 不存在,那么一个空列表会被自动创建并执行 RPUSH 操作;当 key 存在但不是列表类型时,则返回一个错误。
返回值:执行 RPUSH 命令后,返回列表中元数的的个数。即列表的长度。
格式:rpush key value [value …]
在这里插入图片描述

lpop

LPOP命令可以从列表左边(头部)弹出一个或多个元素。LPOP命令执行两步操作:第一步是将列表左边的元素从列表中移除,第二步是返回被移除的元素值。结合 LPUSH、RPUSH 可以使用列表类型来模拟栈和队列的操作:如果想把列表当做栈,则搭配使用LPUSH和LPOP或RPUSH和RPOP,如果想当成队列,则搭配使用LPUSH和 RPOP或RPUSH和LPOP。
格式:LPOP key [count],不传count默认为1
在这里插入图片描述

rpop

RPOP命令可以从列表右边(尾部)弹出一个或多个元素。RPOP命令执行两步操作:第一步是将列表右边的元素从列表中移除,第二步是返回被移除的元素值。结合 LPUSH、RPUSH 可以使用列表类型来模拟栈和队列的操作:如果想把列表当做栈,则搭配使用LPUSH和LPOP或RPUSH和RPOP,如果想当成队列,则搭配使用LPUSH和 RPOP或RPUSH和LPOP。
格式:RPOP key [count],不传count默认为1
在这里插入图片描述

llen

获取列表中元素的个数。LLEN命令的功能类似SQL语句SELECT COUNT(*)FROM table_name,但是LLEN的时间复杂度为O(1),使用时Redis会直接读取现成的值,而不需要像部分关系数据库(如使用 InnoDB存储引擎的MySQL表)那样需要遍历一遍数据表来统计条目数量。当key不存在时LLEN会返回 0。
格式:LLEN key
在这里插入图片描述

lrange

获取列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定。即获取列表中的某一片段。(只获取列表片段不删除)
LRANGE命令将返回索引从start到stop之间的所有元素(包含两端的元素)。LRANGE命令在取得列表片段的同时不会像LPOP一样删除该片段。列表从左边开始计算下标时,以 0 表示列表的左边第一个元素,以 1 表示列表的左边第二个元素,依次类推。LRANGE命令也支持负索引,表示从右边开始计算下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,依次类推。所以,lrange key 0 -1 可以获取列表中的所有元素。另外一些特殊情况如下:

  • 如果start的索引位置比stop的索引位置靠后,则会返回空列表。
  • 如果stop大于列表的长度,则会返回整个列表中的所有元素。
    返回值:执行命令后,返回一个列表,包含指定区间内的元素。
    格式:lrange key start stop
    在这里插入图片描述
ltrim

只保留列表指定片段。LTRIM命令可以删除指定索引范围之外的所有元素,其指定列表范围的方法和LRANGE命令相同。
格式:ltrim key start stop
在这里插入图片描述

lrem

删除列表中前count个值为value的元素,返回值是实际删除的元素个数。count 取值有以下几种情况:
● count > 0:从表头(列表左边)开始向表尾搜索,移除前 count 个值为 value 的元素。
● count < 0:从表尾(列表右边)开始向表头搜索,移除前 count(绝对值)个值为 value 的元素。
● count = 0:移除表中所有值为 value 的值。
格式:lrem key count value
在这里插入图片描述

lset

设置指定索引的元素值。它会将索引为index的元素赋值为value。从左边开始计算时,索引从0开始。如果index是负数则表示从右边开始计算的索引,最右边元素的索引是-1。
格式:lset key index value
在这里插入图片描述

lindex

获取指定索引的元素值。从左边开始计算时,索引从0开始。如果index是负数则表示从右边开始计算的索引,最右边元素的索引是-1。
格式:lindex key index
在这里插入图片描述

linsert

向列表中插入元素。
LINSERT命令首先会在列表中从左到右查找值为pivot的元素,然后根据第二个参数是BEFORE还是AFTER来决定将value插入到该元素的前面还是后面。
格式:linsert key BEFORE|AFTER pivot value
在这里插入图片描述

rpoplpush

将元素从一个列表转到另一个列表。
先执行RPOP命令再执行LPUSH命令。rpoplpush命令会先从 source列表类型键的右边弹出一个元素,然后将其加入到destination列表的左边,并返回这个元素的值。
注意:一次命令只会操作一个元素,destination列表不存在会去创建。
格式:rpoplpush source destination,source表示原列表,destination表示新列表
在这里插入图片描述

六、Set集合命令

Redis的Set集合允许用户将任意多个各不相同的元素存储到集合中,这些元素既可以是文本数据,也可以是二进制数据。集合与列表有以下两个明显的区别:
● 列表可以存储重复元素,而集合只会存储非重复元素,尝试将一个已存在的元素添加到集合将被忽略。
● 列表以有序方式存储元素,而集合则以无序方式存储元素。
这两个区别带来的差异主要跟命令的复杂度有关:
● 在执行像LINSERT和LREM这样的列表命令时,即使命令只针对单个列表元素,程序有时也不得不遍历整个列表以确定指定的元素是否存在,因此这些命令的复杂度都为O(N)。
● 对于集合来说,因为所有针对单个元素的集合命令都不需要遍历整个集合,所以复杂度都为O(1)。
因此当我们需要存储多个元素时,就可以考虑这些元素是否可以以无序的方式存储,并且是否不会出现重复,如果是,那么就可以使用集合来存储这些元素,从而有效地利用集合操作的效率优势。

sadd

向集合中添加一个或者多个元素,并且自动去重。因为集合不存储相同的元素,所以用户在使用SADD命令向集合中添加元素的时候,SADD命令会自动忽略已存在的元素,只将不存在于集合的新元素添加到集合中。
返回值:被添加到集合中的新元素的数量,不包括被忽略的元素。
格式:SADD key member [member …]
在这里插入图片描述

smembers

查看集合中所有的元素。返回值:集合中的所有元素。格式:SMEMBERS key
在这里插入图片描述

srem

从集合中移除一个或者多个元素,若元素不存在则自动忽略。
返回值:被成功移除的元素的数量,不包括被忽略的元素。
使用语法:SREM key member [member …]
在这里插入图片描述

smove

将指定元素member从一个集合(source)移动到另一个集合(destination)。
使用情况如下:
● 如果 source 集合不存在,或者不包含指定的 member 元素,则 SMOVE 命令不执行任何操作,仅返回 0。否则, member 元素从 source 集合中被移除,并添加到 destination 集合中去。
● 当 destination 集合已经包含 member 元素时, SMOVE 命令只是简单地将 source 集合中的 member 元素删除。当 source 或 destination 不是集合类型时,返回一个错误信息。
返回值:如果 member 元素被成功移除,返回 1。如果 member 元素不是 source 集合的成员,那么将返回 0 。
使用语法:SMOVE source destination member
在这里插入图片描述

scard

获取集合中元素的数量(集合中有多少个元素)。若 key 不存在时,则返回 0。
使用语法:scard key
在这里插入图片描述

sismember

用于检查给定的元素是否存在于集合当中。返回1表示给定的元素存在于集合当中;返回0则表示给定元素不存在于集合当中。
使用语法:sismember key member
在这里插入图片描述

srandmember

随机从集合中获取指定数量的元素,不指定数量默认获取 1个。被SRANDMEMBER命令返回的元素仍然会存在于集合当中,它们不会被移除。
关于count参数的描述如下:
● 如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。
● 如果 count 大于等于集合基数,那么返回整个集合。
● 如果 count 为负数,那么返回数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值。
使用语法:srandmember key [count],不传count默认获取 1个。
在这里插入图片描述

spop

随机地从集合中移除指定数量的元素,不指定数量默认移除 1个。
返回值:被移除的随机元素。当 key 不存在或 key 是空集时,返回 nil。
使用语法:spop key [count],不传count默认移除 1个。
在这里插入图片描述

SPOP与SRANDMEMBER的区别

SPOP命令和SRANDMEMBER命令的主要区别在于,SPOP命令会移除被随机选中的元素,而SRANDMEMBER命令则不会移除被随机选中的元素。
SPOP命令与SRANDMEMBER命令的另一个不同点在于,SPOP命令只接受正数count值,如果向SPOP命令提供负数count值将引发错误,因为负数count值对于SPOP命令是没有意义的。

sinter

求两个或多个集合的交集,然后返回这个交集结果中的所有元素。
使用语法:SINTER key [key …]
在这里插入图片描述

sinterstore

求两个或多个集合的交集,然后将交集结果保存到 destination 集合中。如果 destination 集合已经存在,则将其覆盖。
SINTERSTORE 命令与 SINTER 命令类似,但前者会将结果保存到 destination 集合,而不是简单地返回结果集。
使用语法:sinterstore destination key [key …]
在这里插入图片描述

sunion

求两个或者多个集合的并集,然后返回这个并集结果中的所有元素。
使用语法:sunion key [key …]
在这里插入图片描述

sunionstore

求两个或者多个集合的并集,然后将并集结果保存到 destination 集合中。如果 destination 集合已经存在,则将其覆盖。
使用语法:suniontore destination key [key …]
在这里插入图片描述

sdiff

求返回第一个集合与其他集合之间的差集,也可以认为是第一个集合中独有的元素,然后将结果集返回。对于不存在的 key 将被视为空集。
使用语法:sdiff key [key …]
在这里插入图片描述

sdiffstore

求第一个集合与其他集合之间的差集,也可以认为是第一个集合中独有的元素。然后将结果集保存到 destination 集合中。如果 destination 集合已经存在,则将其覆盖。对于不存在的 key 将被视为空集。
使用语法:sdifftore destination key [key …]
在这里插入图片描述

七、Zset有序集合命令

Zset 是 Redis 提供的最具特色的数据类型之一,首先它是一个 set,这保证了内部 value 值的唯一性,其次它给每个 value 添加了一个 score(分值)属性,通过对分值的排序实现了有序化。集合中的元素是唯一的,但是score可以是重复的。比如用 zset 结构来存储学生的成绩,value 值代表学生的 ID,score 则是的考试成绩。我们可以对成绩按分数进行排序从而得到学生的的名次。

zadd

ZADD 命令将一个或多个 member 元素及其 score 值加入到有序集合 key 当中(插入或更新)。如果集合中已存在该元素member,那么更新这个 member 的 score 值,并通过重新插入这个 member 元素,来保证该 member 在正确的位置上。
返回值:被成功添加的新成员的数量,不包括已经存在的成员。
使用语法:ZADD key [NX|XX] [CH] [INCR] score member [score member …]
常用格式:ZADD key score member [score member …]
在这里插入图片描述

zcard

获取有序集合中的元素数量。当 key 存在且是有序集类型时,返回有序集的基数。当 key 不存在时,返回 0 。
使用语法:ZCARD key
在这里插入图片描述

zcount

用于统计有序集合中指定 score 值范围内的元素个数。
使用语法:zcount key min max,min与max是指score的范围,而不是索引,为闭区间,包括min与max。
在这里插入图片描述

zrange

返回有序集合中指定索引区间内的元素。其中元素的位置按 score 值递增(从小到大)来排序。对于具有相同 score 值的元素按字典序来排列。
如果你希望元素按 score 值递减(从大到小)来排列,请使用 ZREVRANGE 命令。
通过使用 WITHSCORES 选项,可以让元素和它的 score 值一并返回。
语法:ZRANGE key start stop [WITHSCORES]
在这里插入图片描述

zrevrange

返回有序集合中指定索引区间内的元素。其中元素的位置按 score 值递增(从大到小)来排序。具有相同 score 值的元素按字典序的逆序排列。
除了成员按 score 值降序排列外, ZREVRANGE 命令的其他方面和 ZRANGE 命令相同。
通过使用 WITHSCORES 选项,可以让元素和它的 score 值一并返回。
语法:ZREVRANGE key start stop [WITHSCORES]
在这里插入图片描述

zrangebylex

返回有序集合 key 中指定区间内的成员。此命令要求有序集合成员的分数值 score 必须相同。
默认是以ASCII字符集的顺序进行排列。如果成员字符串包含utf-8这类字符集(比如:汉字)的内容,就会影响返回结果,所以建议不要使用。可以通过 zrangebylex key [13900000000 (14000000000 获取139号段的手机号码。
使用语法:zrangebylex key min max [ limit offset count ]
使用语法中的参数说明如下:

  • min:集合中排序位置较小的成员,必须以 ”[“ 开头,或者以 ”(“ 开头,可使用 ”-“ 代替。”[“ 或 ”(“符号与成员之间不能有空格。
  • max:集合中排序位置较大的成员,必须以 ”[“ 开头,或者以 ”(“ 开头,可使用 ”+”代替。”[“ 或 ”(“符号与成员之间不能有空格。
  • LIMIT:返回结果是否分页,指令中包含 LIMIT 后 offset、count 必须输入。
  • offset:偏移量,返回结果的起始位置。
  • count:返回结果数量。
    在这里插入图片描述
zrangebyscore

返回有序集合中指定分数区间内的成员。
有序集成员按 score 值递增(从小到大)顺序排列。默认情况下,区间的取值使用闭区间 (小于等于或大于等于),通过给参数前增加 ( 符号来使用可选的开区间,也就是小于或大于。
使用语法:zrangebyscore key min max [WITHSCORES] [LIMIT offset count]
在这里插入图片描述

zscore

返回有序集中,指定成员的分数值。如果 member 元素不是有序集 key 的成员,或 key 不存在,返回 nil。
使用语法:zscore key member
在这里插入图片描述

zincrby

用于增加有序集合中成员的分值,也可以传入一个负数,让分值减去相应的值。
当 key 不存在,或 member 不是 key 的成员时,ZINCRBY key increment member 等同于 ZADD key increment member;当 key 不是有序集类型时,返回一个错误。
注意:score 值可以是整数值或双精度浮点数。
使用语法:zincrby key increment member
在这里插入图片描述

zrank

返回有序集合中指定成员的索引,有序集成员按分数值递减(从小到大)排序。索引以 0 开始,0最小。
返回值:如果 member 是有序集 key 的成员,返回 member 的索引;如果 member 不是有序集 key 的成员,返回 nil 。
使用语法:zrank key member
在这里插入图片描述

zrevrank

返回有序集合中指定成员的索引,有序集成员按分数值递减(从大到小)排序。索引以 0 开始,0最小。
返回值:如果 member 是有序集 key 的成员,返回 member 的索引;如果 member 不是有序集 key 的成员,返回 nil 。
使用语法:zrevrank key member
在这里插入图片描述

zrem

移除有序集合key中的一个或多个成员,不存在的成员将被忽略。当 key 存在但不是有序集类型时,返回一个错误。
返回值:被成功移除的成员的数量,不包括被忽略的成员。
使用语法:zrem key member [member …]
在这里插入图片描述

zremrangebyrank

移除有序集合中指定索引区间内的所有成员。
其中区间分别以下标参数 start 和 stop 指出,包含 start 和 stop 在内。下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。
返回值:被移除成员的数量。
使用语法:zremrangebyrank key start stop ,包含 start 和 stop 在内。
在这里插入图片描述

zremrangebyscore

移除有序集合中指定分数区间内的所有成员。
返回值:被移除成员的数量。
使用语法:zremrangebyscore key min max ,包括等于 min 或 max 的成员。
在这里插入图片描述

zinterstore

求一个或者多个有序集合的交集,并将结果集存储在新的 key 中。
返回值:保存到 destination 新集合中结果集的数量。
使用语法:zinterstore destination numkeys key [key …] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
使用语法中的参数说明:
WEIGHTS
WEIGHTS 选项用来给每个有序集合分别指定一个加权因子,每个有序集合中所有成员的 score 值在传递给聚合函数(aggregation function)之前,都要先乘以该加权因子。如果没有指定 WEIGHTS 选项,加权因子默认设置为 1 。
AGGREGATE
使用 AGGREGATE 选项,你可以指定并集的结果集的聚合方式。默认使用的参数 SUM ,可以将所有集合中某个成员的 score 值之和作为结果集中该成员的 score 值;若使用 MIN 参数,则将所有集合中某个成员的最小 score 值作为结果集中该成员的 score 值;而参数 MAX 则是将所有集合中某个成员的最大 score 值作为结果集中该成员的 score 值。
在这里插入图片描述

zunionstore

求一个或者多个有序集合的并集,并将结果集存储在新的 key 中。
返回值:保存到 destination 新集合中结果集的数量。
使用语法:zunionstore destination numkeys key [key …] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
使用语法中的参数说明:
WEIGHTS
WEIGHTS 选项用来给每个有序集合分别指定一个加权因子,每个有序集合中所有成员的 score 值在传递给聚合函数(aggregation function)之前,都要先乘以该加权因子。如果没有指定 WEIGHTS 选项,加权因子默认设置为 1 。
AGGREGATE
使用 AGGREGATE 选项,你可以指定并集的结果集的聚合方式。默认使用的参数 SUM ,可以将所有集合中某个成员的 score 值之和作为结果集中该成员的 score 值;使用 MIN 参数,可以将所有集合中某个成员的最小 score 值作为结果集中该成员的 score 值;而参数 MAX 则是将所有集合中某个成员的最大 score 值作为结果集中该成员的 score 值。
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/452179
推荐阅读
相关标签
  

闽ICP备14008679号