首页 > 数据库 >redis monitor 监控说明

redis monitor 监控说明

时间:2023-07-31 09:55:12浏览次数:40  
标签:monitor redis Redis client 监视器 监控 服务器 客户端

1、监视器

Redis监视器是用于监控或观察Redis服务器指令执行的一种特殊的客户端。创建Redis监视器的方式也很简单,启动一个客户端后,执行monitor指令,客户端将进入监视器状态。进入监视器状态的客户端将不再接受Redis指令输入,而称为了一个实时接受服务器指令执行信息的消费者。如下图:

Redis监视器由Redis客户端切换状态而来,故其在服务器端的信息也由client结构来维护。monitor命令的执行逻辑如下,可以看出monitor指令会将client结构中flags字段的对应标志位进行置位,同时将客户端client添加于redisServer.monitors链表中,并返回OK字符串。

void monitorCommand(client *c) {
    /* ignore MONITOR if already slave or in monitor mode */
    if (c->flags & CLIENT_SLAVE) return;

    c->flags |= (CLIENT_SLAVE|CLIENT_MONITOR);  //设置监视器标志位
    listAddNodeTail(server.monitors,c);         //将client添加于服务器信息的monitors链表中
    addReply(c,shared.ok);                      //给客户端返回OK
}

2、监视器与Redis服务器关系

Redis服务器可以有多个监视器,工作原理见下图:

由monitor指令的执行逻辑也可以看出监视器同Redis服务器的关系采用链表维护与redisServer中。结构如下:

当Redis服务器执行指令时,会遍历redisServer.monitors链表,将相关信息发送与所有的监视器。

参考资料:
ref: https://blog.51cto.com/u_16099192/6371038
《Redis设计与实现》---黄健宏

标签:monitor,redis,Redis,client,监视器,监控,服务器,客户端
From: https://www.cnblogs.com/mountainstudy/p/17592675.html

相关文章

  • 文件监控脚本
    先给脚本发了吧先贴个效果图完整代码如下:1#!/bin/bash23#指定要监控的文件夹路径4WATCH_DIR=$156#检查参数是否为空7if[-z"$WATCH_DIR"];then8echo"请输入要监控的文件夹路径"9exit110fi1112#备份文件13if[-d"bak/$WATCH......
  • python操作redis
    redis/relate一、python连接redis1.方式一importredis#创建连接对象r=redis.Redis(host='127.0.0.1',port=6379)r.set('name','zhangsan')print(r.get('name'))2.方式二使用连接池当并发量比较高的时候,频繁的创建连接和释放连接会对性能有影响,使......
  • redis常见的5中数据类型以及相关命令
    redisredis简介redis是采用ASNIC语言编写的采用的是C/S架构是非关系型数据库以键值对的形式存储在内存中redis在windows中的启动命令redis-serverredis.windows.confredis-cli切换到客户端一、redis的数据类型1.String(字符串)最基本的数据结构,可以......
  • redis做消息队列学习
    转自:https://juejin.cn/post/7094272373930590245#heading-9,https://zhuanlan.zhihu.com/p/3442697371、消息队列基本作用:应用解耦(作为中介)、削峰填谷。redis做mq的优点:轻量级,使用和运维成本低。mq的3个基本要求:消息保序sequence:对应消息需要有序消费的场景;处理重复消息dupl......
  • Java面试题 P17:Redis篇:Redis使用场景-缓存-缓存穿透
    什么是缓存击穿:给某一个key设置了过期时间,当key过期的时候,恰好这时间点对这个key有大量的并发请求过来,这些并发的请求可能会瞬间把数据库压垮。  互斥锁代码:1privatefinalReadWriteLockreadWriteLock=newReentrantReadWriteLock();2privatefinalLock......
  • redis群集模式
    redis群集有三种模式,redis群集有三种模式,分别是主从同步/复制、哨兵模式、Cluster,可以提高redis的高可用,高性能。目录一、redis群集模式二、主从复制三、哨兵四、集群五、总结     一、redis群集模式1.redis群集模式(1)主从复制:主从复制主要实现......
  • 通过Redis+Mysql来自定义Spring-Statemachine的持久化
    我们在使用Spring状态机的时候,往往需要对于StateMachine持久化操作,但是官方为我们提供的基于redis的持久化并不是特别好,一方面是因为只存redis容易导致数据丢失,另一方面因为状态机的特性需要对应的StateMachine的数据永久有效,导致redis中的key永不过期。我现在希望实现将StateMac......
  • Redis
    1.什么是Redis?它主要用来什么的?Redis,英文全称是RemoteDictionaryServer(远程字典服务),是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。与MySQL数据库不同的是,Redis的数据是存在内存中的。它的读写速度非常快,每......
  • 02:SpringBoot2 整合 Redis 详细步骤
    1、pom文件中添加redis引用1<dependency>2<groupId>org.springframework.boot</groupId>3<artifactId>spring-boot-starter-web</artifactId>4</dependency>5<dependency>6......
  • 《Redis 设计与实现》的总结
    17.集群cluster-enabled#是否开启集群模式的选项CLUSTERMEET<ip><port>#告诉当前节点将ip:port节点加入到集群中三个数据结构:clusterNode:clusterNode结构保存了一个节点的当前状态,比如节点的创建时间、节点的名字、节点当前的配置纪元、节点的IP地址和端口号等等。......