Redis扩展数据类型&命令

Stream

Redis Stream 是 Redis 5.0 版本引入的一种新的数据类型,它是一个持久化的、可查询的、可扩展的消息队列服务。Stream 类型的数据结构类似于一个日志系统,数据被添加到 Stream 的末尾,并且每个数据都会被分配一个唯一的序列号,这个序列号是按照时间顺序递增的。

主体

  • 队列:Stream的主要实体,用于存储管理消息
  • 生产者:使用XADD命令向队列中创建消息
  • 消费者:按照消费者分组消费队列中的消息,同一个消费分组中的所有消费者使用同一个消费游标(同消费组内负载均衡、消费组间广播)

生产者相关命令

xadd

向Stream队列中添加消息,命令格式:XADD key [NOMKSTREAM] [<MAXLEN | MINID> [= | ~] threshold [LIMIT count]] <* | id> field value [field value ...]

  • NOMKSTREAM:默认情况下key不存在时自动创建key,若使用NOMKSTREAM参数则不会自动创建
  • MAXLEN:队列最大可存储的消息数量,后面使用=时与指定数量强一致,使用~时与指定数量大致相等
  • LIMIT count:LIMIT表示消息添加后需要裁剪队列中消息的数量,count用于指定裁剪的具体数量
  • <* | id>: 指定当前新增消息的id,若使用*,则redis自动创建id
    image

队列相关命令

xinfo stream

查看队列的详细信息,包含消息内容,消息数量,消费组信息
image

xdel

删除队列中的消息
image

xlen

查看队列中消息的长度
image

xrange

根据指定的id范围,查看队列中的消息
image

xrevrange

根据指定的id范围,倒叙查看队列中的消息
image

xtrim

裁剪队列中的消息
image

xinfo groups

查询队列的消费分组信息
image

xinfo consumers

查询队列的消费者的信息
image

xpending

查看队列中已经消费,待ack确认的消息
image

消费者相关命令

xgroup create(ENTRIESREAD参数为redis.7.x新特性)

创建消费者分组,命令格式:XGROUP CREATE key group <id | $> [MKSTREAM] [ENTRIESREAD entries-read]

  • MKSTREAM:Strean不存在时自动创建Stream
  • ENTRIESREAD: 消费分组需要跳过的已读消息数量,正数时跳过队列前的已消费消息,负数时跳过最近已消费的消息
    image

xgroup createconsumer

创建消费者
image

xgroup delconsumer

删除消费者
image

xgroup destroy

删除消费分组
image

xgroup setid

修改消费者分组当前消费的消息id和需要跳过的消息数量,命令格式:XGROUP SETID key group <id | $> [ENTRIESREAD entries-read]

  • $: 设置已消费id为当前队列中最大的id
  • ENTRIESREAD entries-read: 设置需要跳过的消息数量
    image

xread

从队列中读取消息
image

xreadgroup

通过消费者消费队列中的消息,命令格式:XREADGROUP GROUP group consumer [COUNT count] [BLOCK milliseconds]
[NOACK] STREAMS key [key ...] id [id ...]
image

xclaim

消费待确认列表中的消息,命令格式:XCLAIM key group consumer min-idle-time id [id ...] [IDLE ms]
[TIME unix-time-milliseconds] [RETRYCOUNT count] [FORCE] [JUSTID] [LASTID lastid]

  • min-idle-time:消息未处理时间,消息最后的处理时间与当前时间的时间差大于这个时间时才会匹配成功
  • IDLE(ms): 修改消息的未处理时间差
  • TIME(unix-time-milliseconds): 修改消息最近一次被处理的具体时间
  • RETRYCOUNT:修改消息被重复处理的次数
  • FORCE:将消息强制添加到待处理列表
  • JUSTID:只获取消息id
  • LASTID:获取的消息的id需要小于指定的LASTID
    image

xautoclaim

消费待确认列表中的消息,不需要指定消息id,命令格式:XAUTOCLAIM key group consumer min-idle-time start [COUNT count] [JUSTID]
image

xack

确认消息的消费状态
image

Bitmap

Redis位图,由0和1组成的二进制数组;可以做布隆过滤器、签到统计、用户访问统计

setbit

根据指定的下标给位图数据设置0或1,redis自动按照下标扩容,扩容时以字节byte为基础单位(8bit)
image

getbit

获取位图数据中指定下标的值
image

bitcount

获取位图数据中数值为1的数量,可按照字节或位为单位的范围获取
image

bitop

对多个位图的数据的数据位做逻辑运算操作,命令格式:BITOP <AND | OR | XOR | NOT> destkey key [key ...]
image

bitpos

返回字符串里面第一个被设置为1或者0的bit位。
image

HyperLogLog

Redis HyperLogLog (简称HLL)是一种用于统计基数(cardinality)的数据结构,基数是指一个集合中不重复元素的个数;可用于统计网页访问量。

pfadd

添加数据元素
image

pfcount

统计基数个数(去重后的元素个数)
image

pfmerge

汇总多个基数队列
image

geo

地图数据类型,提供通过经纬度检索附近地点的功能

geoadd

按照经纬度添加地点,命令格式:GEOADD key [NX | XX] [CH] longitude latitude member [longitude
latitude member ...]
image

geopos

获取地点经纬度
image

geohash

获取地点坐标,将经纬度转换为hash值,便于存储
image

geodist

计算两个地点之间的距离,命令格式:GEODIST key member1 member2 [M | KM | FT | MI]
image

georadius

给出指定的地址经纬度,获取该地点周围指定距离内的地点,命令格式:GEORADIUS key longitude latitude radius <M | KM | FT | MI>
[WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count [ANY]] [ASC | DESC]
[STORE key | STOREDIST key]
image

posted @ 2024-02-26 14:03  周仙僧  阅读(50)  评论(0编辑  收藏  举报