当前位置: 首页 > article >正文

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

http://www.kler.cn/news/359656.html

相关文章:

  • 浏览器实时更新esp32-c3 Supermini http server 数据
  • 智能汽车制造:海康NVR管理平台/工具EasyNVR多品牌NVR管理工具/设备实现无插件视频监控直播方案
  • Redis主从复制实现原理
  • 汽车行业焕新潮流涌动,联众优车以优质服务响应市场变化
  • vue前端开发框架的常见知识点和应用
  • 【wpf】08 xml文件的存取操作
  • Imagic: Text-Based Real Image Editing with Diffusion Models
  • 基于python3.6读取jsonl文件,并保存到Mysql数据库
  • android NDK 编译提示 is not able to compile a simple test program
  • AI创新驱动教育:科技革命下的教育转型
  • 从上市首份半年报业绩亮点看绿联科技发展
  • 面试之mybatis的一二级缓存
  • 基于深度学习的西红柿成熟度检测系统
  • CTF(二)
  • excel导出加密
  • IDEA下lombok安装及找不到get,set的问题的解决方法
  • 【Python-AI篇】数据结构和算法
  • Dockerfile 中 Expose 命令的作用
  • Spring 中的 @AUtowire 和 @Resource 用法和原理,以及避坑
  • 24.安卓逆向-frida基础-objection工具3-实战