首页 > 数据库 >Redis扩展数据类型&命令

Redis扩展数据类型&命令

时间:2024-02-26 14:11:44浏览次数:26  
标签:消费 队列 扩展 Redis 命令 消息 key 数据类型 id

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

标签:消费,队列,扩展,Redis,命令,消息,key,数据类型,id
From: https://www.cnblogs.com/zly1015/p/18030212

相关文章

  • 在Docker中设置Redis的密码
    目录1,介绍2,实现“DockerRedis设置密码”的整体流程3,具体实现步骤4,结论1,介绍Docker是一个开源的应用容器引擎,可以自动化部署、扩展应用程序。它可以帮助开发人员将应用程序及其依赖项打包到一个可移植的容器中,然后在任何环境中运行。Redis是一个开源的内存数据结构存储系统,它可以......
  • redis-深入分析redis之listpack,取代ziplist?
    ziplist的不足主要在于当ziplist中元素个数过多,它的查找效率就会降低。而且如果在ziplist里新增或修改数据,ziplist占用的内存空间还需要重新分配;更糟糕的是,ziplist新增某个元素或修改某个元素时,可能会导致后续元素的prevlen占用空间都发生变化,从而引起连锁更新问题,导致......
  • Redis 教程
    Redis教程Redis概述Redis(RemoteDictionaryServer),即远程字典服务。是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把......
  • 解决Redis和数据库一致问题
    昨天面试了一家公司,简历上我写了用redis做缓存,当面试官问到,当有用户修改了信息,怎么做到缓存的信息和数据库一致呢,当时或许是紧张或许是真不知道,还是脑子短路了,就没回答出来。面试完和我舍友提到的时候,慢慢就想起以前看到过类似的解决方法:那就是当用户的信息有更新的时候就进行缓......
  • 数据类型拓展
    publicclassDemo01{publicstaticvoidmain(String[]args){//整数扩展进制二进制0b十进制八进制0十六进制0xinti=10;inti2=010;//八进制inti3=0x10;//十六进制System.out.println(i);System.out.println(i2);......
  • SpringBoot + Redis 的配置及使用
    一、SpringBoot配置Redis1.1pom引入spring-boot-starter-data-redis包<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></......
  • 揭秘一线大厂Redis面试高频考点(3万字长文、吐血整理)
    ###3万+长文揭秘一线大厂Redis面试高频考点,整理不易,求一键三连:点赞、分享、收藏本文,已收录于,我的技术网站aijiangsir.com,有大厂完整面经,工作技术,架构师成长之路,等经验分享1、说说什么是Redis?Redis是一个开源的、基于内存的高性能键值对数据库,支持多种类型的数据结构,如字符......
  • 前端上传到阿里云步骤 安装redis
    前端:1.输入命令会生成一个src文件 2.上传有两个方法:①下载一个xftp5软件   接受并保存上传只需从左往右拖过去即可,在pycharm中会出现一个dist文件    把这个文件夹内包含的文件删除 第②种: scp-r表示连着文件夹一起上传scp表示只上传文件 ~表示+......
  • Python的数据类型
    Python3中有六个标准的数据类型:Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Sets(集合)、Dictionary(字典) 在Python3的六个标准数据类型中: 不可变数据(3个):Number(数字)、String(字符串)、Tuple(元组); 可变数据(3个):List(列表)、Dictionary(字典)、Set(集合)。   如何......
  • Unity编辑器扩展秘籍-利用Editor.finishedDefaultHeaderGUI增加Header功能
    利用Editor.finishedDefaultHeaderGUI这个回调可以实现自定义Header菜单usingUnityEditor;usingUnityEngine;namespaceYaojz{[InitializeOnLoad]publicstaticclassDefaultHeaderDrawer{staticDefaultHeaderDrawer(){E......