【Redis】不卡壳的 Redis 学习之路:从十大数据类型开始入手

news/2024/7/5 12:27:52

目录

类型

String 字符串

List 列表

Set 集合

Sorted Set /ZSet 有序集合

Hash 哈希表

GEO 地理空间

HyperLogLog 基数统计

Bitmap 位图

BitField 位域

Stream 流

线上测试地址

常用命令

key 操作指令

String 操作指令

List 操作指令

Set 操作指令

ZSet 操作指令

Hash操作指令

GEO 操作指令

HyperLogLog 操作指令

Bitmap 操作指令

Bitfield 操作指令

Stream 操作指令(附示例)


这是Redis系列的第一篇( ̄∇ ̄)/,我们来介绍众说纷纭的Redis数据类型,本文会对 Redis 7.0 中10大数据类型的基本定义、使用场景、常用命令进行通俗易懂的介绍(就是额。。🤔说人话),看完会对Redis的数据类型方面有个全面的了解(应付个面试够够的),如果还想要更深入更全面的学习,我也都附上了官方文档的地址,可直达权威⁄(⁄ ⁄ ⁄ω⁄ ⁄ ⁄)⁄

正文开始┏ (^ω^)=

估计大家应该也都看过挺多相关的内容,但各个文章总有些小不同,首先强调下,本系列文章讨论的是 Redis 7.0,不同版本之间还是有有一些差异的,为确保准确,我们直接看官网

https://redis.io/docs/data-types/

类型

这里的类型是Value,Key一般都是String

  • Strings

  • Lists

  • Sets

  • Sorted Sets (ZSet)

  • Hashes

  • Streams

  • Geospatial

  • HyperLogLog

  • Bitmaps

  • Bitfields

String 字符串

  • Redis中最基本的类型,一个Key可以对应一个Value

  • 二进制安全的(可以包含任何数据,比如图片或者序列化的对象)

  • 一个Redis中的字符串value最多可以是512M

List 列表

  • 简单的字符串列表,按照被插入的顺序排序,你可以添加一个元素到列表的头部(左边)或者尾部(右边)

  • 底层是个双端链表,最多可以包含2^32-1个元素(4294967295,超过40亿个元素)

  • 对两端操作性能很高,通过索引下标操作中间节点性能会比较差

Set 集合

  • String类型的集合

  • 不允许重复 + 无序

  • 集合对象的编码可以是intset和hashtable(底层)

  • 通过哈希表实现的,所以查询、删除、添加的时间复杂度都是O(1)

  • 可以包含2^32-1个元素(4294967295,超过40亿个元素)

  • 应用场景

    • 微信抽奖小程序(sadd/spop/srandmember)

    • 朋友圈的点赞

    • QQ可能认识的人

Sorted Set /ZSet 有序集合

  • 与Set一样是String类型的集合

  • 不同的是每个元素都会关联一个double类型的分数(给Redis从小到大排序用的)

    • value变成了一个键值对:score1 value1

    • key1 score1 value1 key2 score2 value2

  • ZSet的成员是唯一的,但分数(score)可以重复

  • 通过哈希表实现的,所以查询、删除、添加的时间复杂度都是O(1)

  • 可以包含2^32-1个元素(4294967295,超过40亿个元素)

  • 应用场景

    • 各种排行榜

Hash 哈希表

  • K-V 键值对

  • 可以包含2^32-1个元素(4294967295,超过40亿个元素)

GEO 地理空间

  • 原理(实际上是个ZSet,score变成了经纬度)

    • 核心思想:将球体转换为平面,区块转换为一点

    • 主要分为3步:

      • 将三维地球变为二维坐标

      • 将二维坐标转换为一维的点块

      • 将一维的点块转换为二进制再通过base32编码

  • 主要用于存储地理位置信息,并对存储的信息进行操作,包括

    • 添加地理位置的坐标

    • 获取地理位置的坐标

    • 计算两个位置之间的距离

    • ……

  • 应用场景

    • 美团地图位置附近的酒店

    • 高德地图附近的核酸点

HyperLogLog 基数统计

  • 用完做基数统计的算法

    • 基数:是一种数据集,去重后的真实个数

    • 基数统计:用于统计一个几乎中不重复的元素的个数,就是对集合去重后剩余元素的计算,即去重脱水后的真实数据

  • 优点是在输入元素的数量或者体积特别大时,计算基数所需的空间总是固定且很小的

    • 每个HyperLogLog键只需要12kb内存,就可以计算出接近2^64个不同的元素的基数

    • 这和元素越多耗费内存越多的集合产生了鲜明的对比

  • 但HyperLogLog并不会记录每个元素的具体值

  • 可用于统计某个网站/文章的UV用户搜索🔍关键词的数量用户每天搜索不同词条的个数

    • UV unique visitor 独立访客(一般为用户IP)

Bitmap 位图

  • Bit arrays(or simply bitmaps)Bitmap是用String作为底层数据结构实现的一种统计二值状态的数据类型

  • 一个字节占8位(1 byte = 8 bit)

  • 由0和1组成的二进制位的bit数组(1 bit 只能存1个0/1)

  • 一般用于状态记录📝

    • 用户是否登陆过

    • 电影广告是否被点击播放过

    • 上下班打卡统计

BitField 位域

  • 可以一次性操作多个比特位域(连续的多个比特位),它会执行一系列操作并返回一个响应数组,这个数组中的元素对应参数列表中的相应操作的执行结果(其实就是一次性对多个比特位进行操作)

Stream 流

  • Redis 5.0 新增的数据结构 : MQ消息中间件+阻塞队列

  • 主要用于消息队列(MQ,Message Queue)

    • 支持消息队列的持久化

    • 支持自动生成全局唯一ID

    • 支持ack确认消息的模式

    • 支持消费组(多个消费者)模式等

  • Redis本身有一个发布/订阅来实现消息队列的功能,但他的缺点消息无法持久化,如果出现网络断开、Redis宕机等,消息就会被丢弃

    • 即发布/订阅可以分发消息,但无法记录历史消息

  • Redis的Stream提供了消息的持久化以及主从备份复制功能,可以让任何客户端访问任何时刻的数据,并且能记住每一个客户端的访问位置,还能保证消息不丢失,让消息队列更加稳定和可靠

线上测试地址

如果有不想在本地安装Redis的同学可以试试这个官方提供的测试网站

https://try.redis.io/

常用命令

需要注意的有两点

  • 命令不区分大小写,但是key是区分大小写的
  • 中括号('[]')内的为可选参数

各个命令查询地址 https://redis.io/commands/

key 操作指令

指令

作用

备注

key *

查看当前库所有key

exists key

判断某个key是否存在

type key

查看某个key的类型

del key

删除指定的key

原子的

unlink key

非阻塞删除(仅将key从keyspace元数据中移除)

ttl key

查看还有多少秒过期(-1表示永不过期,-2表示已过期)

expire key 秒钟

为给定的key设置过期时间

move key dbindex

将当前数据库的key移动到给定的数据库db中(dbindex的值为0-15)

默认0

dbsize

查看当前数据库key的数量

flushdb

清空当前库

flushall

清空全部库

String 操作指令

指令

作用

可选项说明及备注

set key value [NX|XX] [GET][EX seconds|PX milliseconds|EXAT unit-time-milliseconds|KEEPTTL]

设置/添加

  • NX 键不存在的时候设置(键存在会设置失败)

  • XX 键存在的时候设置(会覆盖)

  • GET 先返回旧值,再设置新值

  • EX seconds 设置过期时间(单位:秒)

  • PX milliseconds 设置过期时间(单位:毫秒)

  • KEEPTT 设置续接过期时间(不设置默认用不失效-1)

批处理

mset key value [key value ...]

同时设置多个值

mget key value [key value ...]

同时获取多个值

msetnx key value

key不存在才设置

所有的key都不存在才会设置成功

getrange key start end

获取指定区域内的值

  • start 开始下标(从0开始)

  • end 结束下标

setrange key offset vaue

设置指定区域内的值

  • offset 开始下标

  • vaue 设置数量

数值增减

(必须是数字才行)

INCR key

递增数字

INCRBY key increment

增加减少指定的参数

  • increment 指步长

DECR key

递减数值

DECRBY key decrement

减少指定的参数

STRLEN key

获取字符串长度

APPENG key value

内容追加

分布式锁

(原子操作)

setnx key value

key不存在才设置

nx: set if not exsit

setex key seconds value

同时设置值和过期时间

ex: set with expire

getset key value

先get后set

等价于 set key value get

List 操作指令

指令

作用

可选项说明及备注

lpush key value

从左边👈设置/添加

rpush key value

从右边👉设置/添加

lrange key start stop

从左边👈开始遍历

  • start 开始下标(从0开始)

  • stop 结束下标

lrange key 0 -1 表示遍历全部

lpop

弹出最左边的值

rpop

弹出最右边的值

lindex

按照索引下标获得元素(从上到下)

左(上)右(下)

llen

获取list中的元素个数

lrem key N value

删除N值为value的元素

  • N 表示删除值的个数

ltrim key start stop

截取指定索引范围的值再赋值给key

  • start 开始下标(从0开始)

  • stop 结束下标

rpoplpush key1 key2

从key1中弹出最右边的,加入到key2的最左端并返回

lset key index value

将key中序号为index的值设置为value

  • index 要设置的值的序号(没有该序号则会报错)

linsert key before/after pivot element

在key中值为pivot的元素前/后插入值为element的元素

  • pivot 已有值

  • element 插入值

从上向向下👇第一个等于pivot的值

Set 操作指令

指令

作用

可选项说明及备注

sadd key member [member...]

添加元素

自动去重

smembers key

遍历所有元素

sismember key member

判断元素是否在集合中

srem key member[member...]

删除元素

scard key

获取集合里面的元素个数

srandmember key [n]

从集合中随机展现n个元素,不删除

  • n 展示元素的个数

spop key [n]

从集合中随机弹出/删除n个元素

  • n 弹出/删除元素的个数

smove key1 key2 [value]

将key1中的某个值value赋值给key2

  • value:key1中的某个值

集合运算

sdiff key [key...]

差集运算 A - B

sunion key [key...]

并运算 A U B

sinter key [key...]

交运算 A n B

sintercard numkeys key [key...] [limit num]

只返回基数(去重统计数)

  • num 返回个数

ZSet 操作指令

指令

作用

可选项说明及备注

zadd key [NX|XX] [GT|LT] [CH] [INCR] score member [score member ...]

向有序集合添加一个元素和该元素的分数

zrange key start stop [withscores]

按照元素分数从小到大的顺序,返回索引从start到stop之间的所有元素

  • withscores 带分数

  • start 开始下标(从0开始)

  • stop 结束下标

zrevrange key start stop [withscores]

zrange的反转(从大到小)

  • withscores 带分数

  • start 开始下标(从0开始)

  • stop 结束下标

zrangebyscore key min max [withscores][limit offset count]

获取指定分数范围的元素

  • (min 不包含

  • limit offset countoffset开始取count

zscore key member

获取元素的分数

zcard key

获取集合中元素的数量

zrem key member

删除值为指定分数的元素

  • member 要删除元素的value值

zincrby key increment member

增加某个元素的分数

  • increment 增加的值

zcount key min max

获取指定分数范围内的元素个数

  • min 开始

  • max 结束

zmpop

从键名列表中的第一个非空排序集中弹出一个或多个元素,他们是成员分数对

zrank key values

获取下标值(从0开始)

zrevrank key values

逆序获取下标值

Hash操作指令

指令

作用

可选项说明及备注

hset key field value [field value...]

添加/设置

  • field value 也是某个元素内的属性键值对

hget key field

获取键为key的元素中的field属性的值

批处理

hmset key field value [field value...]

批量添加/设置

hget key field [field ...]

批量获取

hgetall key

获取键为key的元素中的全部属性

hlen key

获取某个key内的全部数量

hexists key

判断是否存在键值为key值(0不存在)

hkeys key

获取键值为key值元素的所有字段名(field

hvals key

获取键值为key值元素的所有字段值(value

hincrby/hincrbyfloat key field increment

给键值为key值元素中field的字段值加increment

  • hincrby 加整数

  • hincrbyfloat 加小数

hsetnx key field value [field value...]

不存在才会新建成功

GEO 操作指令

指令

作用

可选项说明及备注

geoadd key

添加经纬度坐标

出现中文乱码,redis-cli启动时加个--raw

geopos

从键里面返回所有给定元素的位置(经纬度)

geodist key member1 member2 [m | km | ft | mi ]

返回给定位置之间的距离

geodist不仅可以计算两个 member 之间的距离,还可以计算一个 member 与 key 中多个 member 之间的距离

【示例】

  • 计算 member1 与 key 中 member2、member3、member4 三个 member 之间的距离:
    geodist key member1 member2 member3 member4
    • geodist会返回一个浮点数,表示两个地理位置之间的距离,如果某个 member 不存在,会返回空值(NULL)。
  • member1 member2 表示 GEO 类型中的两个 member

  • m | km | ft | mi 表示计算距离的单位

      如果没有单位参数,则默认使用米作为单位。

    • m:米

    • km:千米

    • mi:英里

    • ft:英尺

georadius key longitude latitude radius m|km|ft|mi [withdist] [withcoord] [withhash] [count num] [asc|desc] [store key] [storedist key]

以给定经纬度为中心,返回与中心距离离不超过给定最大距离的所有元素,且可以根据需求返回经纬度、距离等详细信息,并将查询结果保存到一个新的有序集合中。

  • longitude:表示中心点的经度

  • latitude:表示中心点的纬度

  • radius:表示半径大小,与单位配合使用

  • withdist返回元素时,同时返回距离(米)

  • withcoord返回元素时,同时返回经纬度

  • withhash 经过geohash编码后的52位有符号整型

  • count num 返回不超过num条记录

  • asc|desc:表示返回结果时是否按照距离从近到远或从远到近排序,默认为从近到远

  • store key:选项表示将返回结果存储到一个新的有序集合 key

  • storedist key:选项表示将返回结果存储到一个新的有序集合 key 中,并把查询位置和目标位置间的距离作为值保留到集合中

georadiusbymember key member radius m|km|ft|mi [withdist] [withcoord] [withhash] [count num] [asc|desc] [store key] [storedist key]

georadiusbymember各个参数的含义和作用与georadius命令的相应参数完全相同,唯一的不同是 georadiusbymember 使用的查询中心是指定的成员,而不是经纬度坐标。

geohash

返回坐标的geohash表示

geohash算法生成的base32编码值

HyperLogLog 操作指令

指令

作用

可选项说明及备注

pfadd key element [element]...

添加指定的元素

pfcount key [key ...]

返回给定的基数估计值

pfmerge destkey sourcekey [sourcekey...]

合并统计

Bitmap 操作指令

指令

作用

可选项说明及备注

时间复杂度

setbit key offset value

为键为key的元素序号为offset的值设置值为value

  • offset 偏移量(从0开始)

  • value

O(1)

getbit key offset

获取指定key的第offset

O(1)

strlen key

统计字节数占用多少(按字节)

O(1)

bitcount key start end

返回指定范围[start, end]内值为1的数量

  • start 开始序号

  • end 结束序号

O(n)

bitop operation destkey key

对不同的二进制存储数据进行位运算(AND、OR、NOT、XOR)

  • operation 包括AND、OR、NOT、XOR

  • destkey 新产生的值的key

O(n)

Bitfield 操作指令

实际生产中几乎……%不怎么用,这里就不列举叻,还是想了解可查看官网

https://redis.io/commands/bitfield/

Stream 操作指令(附示例)

特殊符号:

  • -+ 最小和最大可能出现的ID

  • $   表示读新到来的,即随着新消息的到来,$ 的指针会自动向前移动

  • >   表示从第一条尚未被消费的数据开始读起

  • *   添加消息的ID自增

指令

作用

可选项说明及备注

队列相关

xadd key [NOMKSTREAM] [MAXLEN | MINID [=|~] threshold [LIMIT count]] *|id field value [field value...]

添加消息到队列末尾,返回消息

  • ID 由两个由一个字符分隔的数字指定-

  • 1526919030474-55

  • 两个数量都是 64 位整数。当自动生成 ID 时,第一部分是生成 ID 的 Redis 实例的 Unix 时间(以毫秒为单位)。第二部分只是一个序列号,用于区分在同一毫秒内生成的 ID。

  • 消息ID必须比上个大

  • 默认用星号表示自动生成规矩

    • 用于xadd命令,让系统自动生成ID

  • NOMKSTREAM 当前面的key不存在时,Redis的Stream默认会先创建该key并添加元素,如果加上则会NOMKSTREAM返回nil

  • MAXLEN|MINID [=|~] threshold [LIMIT count]:可选参数,用来控制 Stream 的长度或者指定 Stream 的最小 ID

    • MAXLEN N:限制 Stream 的最大长度为 N。

    • MINID ID:设置 Stream 的最小 ID 为 ID。

    • =|~:这是一个可选的前缀,用于指定限制条件的类型。如果使用 =,表示限制条件为长度具体等于阈值 threshold;如果使用 ~,表示限制条件为长度小于或等于阈值 threshold

    • threshold:指定的长度阈值。如果限制条件为 ~,表示 Stream 最大长度将小于或等于 threshold,如果限制条件为 =,表示 Stream 的最大长度会被限制为 threshold

    • LIMIT count:可选参数,用于限制每次执行 XADD 命令时添加的条目数量,以防止一次性写入过多的数据。

  • field value:这是一个 XADD 命令的数据格式,包含每个条目的所有字段和值。每个字段和值都是一个 key-value 对。例如 field1 value1 field2 value2...

xrange key start end count

用于获取消息列表(可以指定范围),从最旧的开始

【示例】

  • 查询名为 mystream 的 Redis Stream的所有消息:
    xrange mystream - +
  • 查询名为 mystream 的 Redis Stream,在包括 ID 为 1000 的数据和 ID 为 2000 的数据的区间内,返回不多于10条数据:
    xrange mystream 1000-2000 COUNT 10

  • start:查询起始位置。可以是 - 或者 + 加上一个具体的 ID

    • - 1000 表示查询小于等于 1000 的所有消息

    • + 则表示查询大于等于给定的 ID 的所有消息

  • end:查询结束位置。可以和 start 同时使用形成一个区间

    • - + 表示查询所有消息

    • 1000 2000 表示查询大于等于 1000 和小于等于 2000 的所有消息

  • count:可以控制查询返回的结果数量,默认返回所有消息

    • 如果给定一个正整数,表示返回的消息数量不大于该值

    • 如果给定一个负数,表示返回的消息数量不小于该值

xrevrange key start end count

用于查询 Redis Stream 中的消息,从最新的开始( xread、xrange 命令的默认查询起始点是最旧的消息)

【示例】

  • 查询最新的 10 条消息:xrevrange mystream + - COUNT 10
  • 查询 ID 大于等于 1000 的所有消息:
    xrevrange mystream + 1000

  • 参数解释同xrange

xdel key ID [ID...]

删除一个或多个消息(需要注意的是 xdel 的操作一旦删除了消息就无法恢复)

  • ID:需要删除的消息的 ID

    • 可以是一个 ID,也可以是多个

xlen key

返回 Redis Stream 中的消息数量

无论有多少数据,时间复杂度都是 O(1)

xtrim key MAXLEN | MINID [=|~] threshold [LIMIT count]

将 Redis Stream 中的消息按照指定的条件进行裁剪y(同xdel一样,删除了无法恢复)

【示例】

  • 保留 Redis Stream 中最后 100 条消息:
    xtrim mystream MAXLEN 100

  • 保留 Redis Stream 中消息 ID 大于 1586610271071-3 的消息:
    xtrim mystream MINID 1586610271071-3

  • MAXLEN | MINID [=|~] threshold 裁剪策略

    • MAXLEN,需要传递一个数字,表示需要保留的消息数量

    • MINID,需要传递一个消息 ID,表示需要保留的消息的最小 ID 值

  • LIMIT count 控制查询返回的结果数量,默认返回所有消息

xread [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] ID [ID ...]

从Redis Stream 中读取数据

【示例】

  • 读取 mystream 中最新的 10 条消息:
    xread COUNT 10 STREAMS mystream $

  • 读取 mystream 和 anotherstream 中最新的 20 条消息:
    xread COUNT 20 STREAMS mystream $ anotherstream $

  • COUNT:需要返回的消息数量,表示一次最多返回的消息数量

  • BLOCK:是否以阻塞的方式读取消息,并设置阻塞超时时间,单位为毫秒

    • 默认不阻塞,milliseconds如果设为0,则永远阻塞

    • 当 Stream 中没有新消息时,xread 命令会等待阻塞超时时间后自动返回

  • STREAMS:需要读取的 Redis Stream 的名称和读取位置,可以多次使用该参数,每次读取一个 Stream。

    • Stream 名称:需要读取的 Redis Stream 数据结构的名称

    • Read ID:读取的起始位置,可以是消息 ID 或者特殊的符号,比如 $>

消费者相关

同一个消费组中的不同消费者不能消费同一个消息,但不同消费组的消费者可以,可以进行负载均衡

xgroup create key groupname ID|$ [MKSTREAM]

用于在 Redis Stream 中创建一个新的消费者组,并将指定消费者加入该组

【示例】

  • 创建一个名为 mygroup 的消费者组,并从最新的消息开始读取:xgroup create mystream mygroup $ MKSTREAM

  • 创建一个名为 mygroup 的消费者组,并从消息 ID 为 1586610271071-3 的消息开始读取:
    xgroup create mystream mygroup 1586610271071-3

  • group:消费者组名称。

  • id:消费者组的起始读取位置

    • $ 表示从最新的消息开始读取,也可以是某个具体的消息 ID

  • ...:需要传递两个参数,将用于表示从 Stream 中读取消息时的选项,具体如下:

    • MKSTREAM:如果 Stream 不存在,则创建一个新的 Stream

xreadgroup group group consumer [COUNT count] [BLOCK milliseconds] [NOACK] STREAMS key [key ...] ID [ID ...]

用于从 Redis Stream 中读取数据,并且将其发送给指定的消费者组

【示例】

  • 从消费者组 mygroup 中的 myconsumer 开始读取 mystream 中最新的 10 条消息:
    xreadgroup GROUP mygroup myconsumer COUNT 10 STREAMS mystream >

  • 从消费者组 mygroup 中的 myconsumer 开始读取 mystream 和 anotherstream 中最新的 20 条消息:
    xreadgroup GROUP mygroup myconsumer COUNT 20 STREAMS mystream > anotherstream >

  • group:需要读取的消费者组的名称

  • consumer 需要读取的消费者的名称

  • COUNT count:需要返回的消息数量,表示一次最多返回的消息数量

  • BLOCK milliseconds 设置阻塞超时时间,单位为毫秒(同xread)

  • NOACK:在消费者组中设置 NOACK 后,当接收到一条消息后,Redis 会假设消息被消费并且不会在向消费者发送消息确认信息

  • STREAMS:需要读取的 Redis Stream 数据结构的名称和读取位置,可以多次使用该参数,每次读取一个 Stream

    • key:需要读取的 Redis Stream 数据结构的名称

    • ID:读取的起始位置,可以是消息 ID 或者特殊的符号,比如 $>

xpending key group [[IDLE min-idle-time] start end count [consumer]]

于从消费者组中获取关于 Stream 的消费状态信息,包括等待下一个确认的消息还未分配给消费者的消息已经被消费者处理但还未确认的消息

【示例】

  • 获取消费者组 mygroup 中所有消费者等待确认的消息数量(最多不超过10个):
    xpending mystream mygroup - + 10

  • 获取消费者组 mygroup 中消费者 myconsumer1 还未确认的消息数量:
    xpending mystream mygroup - + 10 myconsumer1

  • 获取消费者组 mygroup 中最长未确认时间不超过 5 分钟的未确认消息:
    xpending mystream mygroup - + 100 500000

    • 其中,指定了 -+ 分别表示消息的起始 ID 和结束 ID,100 表示返回的最大消息数量,500000 表示最长未确认时间为 5 分钟

  • group 消费者组名称

  • IDLE min-idle-time 表示最长未确认时间,即在消费者组中存在未确认的消息时,距离这些消息上次被处理的时间超过了 IDLE 参数指定的时间,那么这些消息将被列入 xpending 返回的结果列表中,单位为毫秒

  • start 消息的开始 ID

  • end 消息的结束 ID

  • count 需要返回的消息数量

  • consumer 可选参数,指定返回特定消费者的未确认消息列表

xack key group ID [ID ...]

用于向 Redis Stream 数据结构中添加消费者对消息的确认,即表示此消息已经被成功消费和处理

【示例】

  • 确认消费者组 mygroup 中消费者 myconsumer1 已消费并处理消息 1535007665264-0
    xack mystream mygroup 1535007665264-0 myconsumer1

  • 确认消费者组 mygroup所有消费者已消费并处理消息 1535007665264-1
    xack mystream mygroup 1535007665264-1

  • group:消费者组名称

  • ID:需要确认的消息 ID(一个或多个)

xinfo [consumers key groupname] [groups key] [stream key] [help]

用于打印Stream/Consumer/Group的详细信息,便于监控和调试

【示例】

  • 获取流 mystream 的信息:
    xinfo stream mystream

  • 获取消费者组 mygroup 的信息:
    xinfo groups mystream mygroup

  • 获取消费者组 mygroup 中所有消费者的信息:
    xinfo consumers mystream mygroup

  • 获取消费者组 mygroup 中消费者 myconsumer1 的信息:
    xinfo consumers mystream mygroup myconsumer1

  • groups:获取指定 Stream 中所有消费者组的信息,包括每个组的名称、拥有者及各组消费的消息的数量和时间戳最小值等信息

  • consumers:获取指定 Stream 和消费者组中所有消费者的信息,包括每个消费者的名称、未确认消息数量及它们所消费的消息列表等信息

  • stream:获取指定 Stream 中的信息,包括流的长度、最小ID和最大ID等信息

  • groups <key>:获取指定 Stream 中消费者组的信息,包括每个组的名称、拥有者及各组消费的消息的数量和时间戳最小值等信息

  • consumers <key> <group>:获取指定流和消费者组中所有消费者的信息,包括每个消费者的名称、未确认消息数量及它们所消费的消息列表等信息。其中 <key> 表示流的名称,<group> 表示消费者组的名称

  • help:帮助文档

搞定~撒个花(。・ω・。)ノ🎉🎉🎉


http://lihuaxi.xjx100.cn/news/1067990.html

相关文章

SQL优化(2):主键优化

在上一小节&#xff0c;我们提到&#xff0c;主键顺序插入的性能是要高于乱序插入的。 这一小节&#xff0c;就来介绍一下具体的 原因&#xff0c;然后再分析一下主键又该如何设计。 1 数据组织方式 在InnoDB存储引擎中&#xff0c;表数据都是根据主键顺序组织存放的&#xf…

【Python小技巧】使用Gradio构建基于ChatGPT的 Web 应用(附源码)

文章目录 前言一、Gradio是什么&#xff1f;二、使用Gradio构建基于ChatGPT的 Web 应用1. 安装gradio库2. 安装openai库&#xff08;ChatGPT的python库&#xff09;3. Web 应用示例&#xff08;源代码&#xff09; 总结 前言 随着人工智能的不断发展&#xff0c;各种智能算法越…

修炼汇编语言第二章:内存地址空间(概述)

目录 前言 一、主板和接口卡 二、存储器各类芯片 三&#xff1a;内存地址空间 总结 前言 什么是内存地址空间呢&#xff1f;如果地址线为10&#xff0c;那么可以寻址1024个地址空间&#xff0c;这1024个地址空间就构成这个CPU的内存地址空间&#xff0c;下面本文将会介绍…

快来看看这些前端开发技巧你掌握多少吧

文章目录 一、代码整洁推荐1.1 三元(三目)运算符1.2 短路判断简写1.3 变量声明简写1.4 if真值判断简写1.5 For循环简写1.6 对象属性简写1.7 箭头函数简写1.8 隐式返回简写1.9 模板字符串1.10 默认参数值1.11 解构赋值简写1.12 多条件判断简写1.13 多变量赋值简写1.14 解构时重命…

Apache默认解析后缀

Apache HTTP服务器默认情况下支持解析以下常见的文件扩展名&#xff1a; HTML文件.htmlHTML文件.htmServer Side Includes (SSI) HTML文件.shtml PHP脚本文件.phpPHP脚本文件.php3PHP脚本文件.php4PHP脚本文件.php5 Python脚本文件.pyCommon Gateway Interface (CGI) 脚本文件…

什么是视图(保姆版)

目录 一、如何提高查询效率&#xff1a; 那如何提高查询语句的效率呢&#xff1f; 二、视图的使用&#xff1a; 1、视图关键字&#xff1a;view 2、视图的基本使用 3、视图的修改 4、删除视图 三、视图的创建&#xff1a; 四、视图的修改 五、视图的删除 什么是视图&…

统计学知识

期望&#xff1a;随机变量的平均值 矩&#xff1a; X X X的 n n n阶矩&#xff1a; μ n ′ E X n \mu_n^\primeEX^n μn′​EXn X X X的 n n n阶中心矩&#xff1a; μ n E ( X − μ ) n \mu_nE(X-\mu)^n μn​E(X−μ)n X X X的2阶中心矩称为方差 三种收敛 依概率收敛 如…

产品经理与项目经理(区别/特点)

项目经理岗位要求&#xff08;侧重项目本身&#xff09;&#xff1a; 项目管理&#xff1a;熟悉项目管理的流程和方法&#xff0c;如敏捷开发、瀑布模型等&#xff0c;具备良好的项目规划、执行、监控和收尾能力。技术理解&#xff1a;具备一定的软件开发背景&#xff0c;了解…