欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 艺术 > Redis进阶

Redis进阶

2024/10/23 19:25:44 来源:https://blog.csdn.net/binbinxyz/article/details/143099380  浏览:    关键词:Redis进阶

文章目录

  • 慢查询
  • Redis事务
  • Redis发布订阅
  • Redis Stream

慢查询

慢查询阈值默认为10ms,慢查询的记录保存在slowlog的链表中,链表默认大小(slowlog-max-len)为128,生产环境建议配置1000。
两种方式:

  • 动态设置
  • a
> config set key value # 设置变量值
> config get key # 查看变量值
# 示例:
> config get slowlog-log-slower-than
> config set slowlog-log-slower-than 10000
> config rewrite> slowlog get [count]
> slowlog reset
> 

Redis事务

Redis事务可以一次执行多个命令,并且带有以下三个重要保证:

  • 批量操作在发送EXEC命令前被放入队列缓存
  • 收到EXEC命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行
  • 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中

单个Redis命令的执行是原子性的,但Redis没有在事务上增加任何维持原子性的机制,所以Redis事务的执行并不是原子性的。事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。

> multi # 开启事务
> exec # 执行事务块内的命令
> discard # 取消事务,放弃执行事务块内的所有命令
> watch key [key ...] # 监视一个或多个key,如果在事务执行之前这个或这些key被其他命令改动,那么事务将被打断
> unwatch # 取消watch命令对所有key的监视

Redis发布订阅

Redis发布订阅(pub/sub)是一种消息通信模式:发送者发送消息,订阅者接收消息。
客户端可以订阅任意数量的频道,当有新消息通过publish命令发送给频道时,这个消息就会被发送给订阅它的所有客户端。

> subscribe channel [channel ...] # 订阅给定的一个或多个频道信息
> unsubscribe channel [channel ...] # 退订给定的频道
> publish channel message # 发送消息到指定的频道
> psubscribe pattern [pattern ...] # 订阅一个或多个符合给定模式的频道
> pubsub subcommand [argument ...] # 查看订阅与发布系统状态
# 示例:
> pubsub channels> punsubscribe [pattern ...] # 退订所有给定模式的频道

Redis Stream

Redis Stream主要用于消息队列。Redis本身有一个发布订阅来实现消息队列的功能,但它有一个缺点是无法持久化,如果出现网络断开、宕机等,消息会被丢弃。
Redis Stream提供了消息的持久化和主备复制功能,可以让任何客户端访问任何时刻的数据,并且能记住每一个客户端的访问位置,还能保证消息不丢失。

# 消息队列相关命令
> XADD key ID field value [field value ...] # 添加消息到末尾
> XTRIM key MAXLEN [~] count # 对流进行修剪、限制长度
> XDEL key ID [ID ...] # 删除消息
> XLEN key # 获取流包含的元素数量,即消息长度
> XRANGE key start end [COUNT count] # 获取消息列表,会自动过滤已经删除的消息
> XREVRANGE key start end [COUNT count] # 反向获取消息列表,ID从大到小
> XREAD [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] id [id ...] # 以阻塞或非阻塞方式获取消息列表# 示例:
> XADD mystream * name Tom
> XADD mystream * age 10 city beijing
> XADD mystream * hobby hiking hobby skiing hobby football hobby music
> XLEN mystream
> XRANGE mystream - +
> XRANGE mystream ID + 
> XTRIM mystream MAXLEN 2
> XREAD COUNT 2 STREAMS mystream  0-0##===============================================================================# 消费者组相关命令
> XGROUP [CREATE key groupname id-or-$] [SETID key groupname id-or-$] [DESTROY key groupname] [DELCONSUMER key groupname consumername] # 创建消费者组
> XREADGROUP GROUP group consumer [COUNT count] [BLOCK milliseconds] [NOACK] STREAMS key [key ...] ID [ID ...] # 读取消费者组中的消息
> XACK # 将消息标记为“已处理”
> XGROUP SETID # 为消费者组设置新的最后递送消息ID
> XGROUP DELCONSUMER # 删除消费者
> XGROUP DESTROY # 删除消费者组
> XPENDING # 显示待处理消息的相关信息
> XCLAIM # 转移消息的归属权
> XINFO # 查看流和消费者组的相关信息
> XINFO GROUPS # 打印消费者组的信息
> XINFO STREAM  # 打印流信息# 示例:
> XGROUP CREATE mystream cg-name0 0-0 # 从头开始消费
> XGROUP CREATE mystream cg-name1 $ # 从尾部开始消费
> XREADGROUP GROUP cg-name0 cname0 count 1 streams mystream >
> XINFO groups mystream
> XINFO stream mystream
> XACK mystream cg-name0 1729505719849-0

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com