redis 学习
一、Redis Streams
xadd:添加消息
xread:消费消息
xdel:删除消息
xgroup:消费组管理
xreadgroup:分组消费
xrange: 获取没有删除标识的消息列表
xlen:获取整个Stream的消息长度
del:删除整个Stream的消息
xdel:删除消息
xpending: 查看未处理消息
xack:确认消息已经被处理
xclaim:转移消息
xinfo:查看队列信息
xtrim:消息队列容量
xrevrange:逆序获取消息队列中的消息
xadd
添加消息,可以把数据添加到流的redis命令,id是增量的,可以使用maxlen来限制流大小,但是会有一些性能损失,但如果在后面加个~来使他高效一些,*代表采用内部生成的id
xadd stream [MAXLEN ~ count][id][field value][field value]
1、每一组消息需要一个唯一的Id,*号表示服务器自动生成ID,后面顺序跟着一组或者多组消息(filed value)
2、消息ID的形式是timestampInMillis-sequence,例如1527846880572-5,它表示当前的消息在毫米时间戳1527846880572时产生,并且是该毫秒内产生的第5条消息
消息ID可以由服务器自动生成,也可以由客户端自己指定,但是形式必须是整数-整数,而且必须是后面加入的消息的ID要大于前面的消息ID
3、消息元素的的结构为key-value,必须成对出现,如果key或者value元素中有空格,必须用"abc def"或者'abc def'括起来
示例
xadd mystream * who me when now what person; xadd mystream maxlen 1000 * name 1; xadd mystream maxlen ~ 1000 * name 2;
如图
效果如下:
也可以自己指定EntryID的值,如:
XADD somestream 0-1 field value
如下:
xread
使用 XREAD 以阻塞或非阻塞方式获取消息列表 ,语法格式:
XREAD [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] id [id ...]
- count :数量
- milliseconds :可选,阻塞毫秒数,没有设置就是非阻塞模式
- key :队列名
- id :消息 ID
xread count 2 streams Master 0-0
如图
续...
客户端1中执行以下操作
XREAD BLOCK 0 STREAMS Master $
注意,无光标,它将进入等待状态。
你向客户端2添加元素:
XADD Master * test 1
刚添加的元素将显示在客户端1中:
显示结果
续...
xdel
代表删除消息,可以接多个id
xdel mystream 1600608058992-0
如图:
如下
xlen
返回流中的条目数,如果键不存在或流为空,返回0
xlen mystream
如图:
xrange
要根据范围查询Stream,我们只需要提供两个ID,即start 和 end。返回的区间数据将会包括ID是start和end的元素,因此区间是完全包含的。两个特殊的ID-
和 +
分别表示可能的最小ID和最大ID。
xrange Master - +
可以只取前两个
xrange Master - + COUNT 2
如图:
起始指定为- +
表示查询所有的,相应的可以把这两个换成时间,例如取某个时间段的
XRANGE Master 1610333414346 1610333809575
如图:
二、消费组
当流的数量非常大时, 或者当使用者处理非常耗时时, 如果只有一个使用者, 它将承受更大的压力。因此, redis流提供了使用者组的概念, 从而允许多个使用者处理同一个流以实现负载平衡。
相关文章
- Redis的分布式锁python-redis-lock使用
- redis中lua脚本实战
- 案例:用Redis来存储关注关系
- Redis学习(6)-常用命令
- Redis学习(1)--环境配置,安装JDK,MySQL,tomcat
- redis和mongodb
- Redis学习笔记
- Redis缓存实现排序功能
- 深入理解Spring Redis的使用 (一)、Spring Redis基本使用
- 在django中使用Redis存取session
- Redis 客户端管理 存活状态
- Python Flask框架学习30:redis操作/配置静态文件路径
- 深入浅出Redis-redis哨兵集群
- SpringBoot学习笔记(6) SpringBoot数据缓存Cache [Guava和Redis实现]
- redis_04 _ AOF日志:宕机了,Redis如何避免数据丢失
- Redis进阶学习10---redis最佳实践
- Redis进阶学习04---秒杀优化和消息队列
- Redis学习笔记
- Redis详解(五)——Redis多实例
- 【redis源码学习】传说中,redis使用的是单线程?
- 【redis源码学习】rax,我愿称之为“升级版字典树”
- 【redis源码学习】redisObject
- redis.conf翻译与配置(四)【redis6.0.6】
- Redis key的生命周期详解及故障案例描述(三)
- Redis五种常用字符串类型的KEY基本操作操作(二)