Redis有一个monitor命令,某个client执行monitor命令后,就成为了一个监控器,服务器端执行的所有命令都会发送给监控器

monitor 是一个用来debug的命令,可以帮助我们了解服务器正在发生什么,例如我们打开monitor监控服务器20分钟,可以收集到期间服务器执行的所有命令,那么就可以分析出很多信息,例如:

(1)什么命令执行得次数多

(2)哪些key是热点

(3)通过对get类型命令的提取,统计出发送流量

……

monitor命令使用


127.0.0.1:6379> monitor
OK

执行后返回“OK”,说明此客户端已经成为了监控器,然后就进入了等待状态,当服务器端执行了命令后,这里会自动显示出执行信息,如:

1454886442.140044 [0 127.0.0.1:63773] "keys" "*"
1454886454.538036 [0 127.0.0.1:63773] "get" "user13"
1454886475.392050 [0 127.0.0.1:63773] "get" "mylist_score"

各部分的含义:

1454886442.140044 是时间戳
[0 127.0.0.1:63773] 其中分别为:数据库编号、clent的IP和端口
"keys" "*" 为执行的命令

monitor的实现思路


客户端发送monitor命令后,会发生3个主要的动作

(1)客户端的监视器标识被设置为true

(2)服务器把此客户端添加到了monitors链表的末尾

(3)向客户端返回“OK”

某个client发送命令请求后,server在执行完此命令后,会把命令信息同时发送给monitor链表中个每个client

使用方法


登录redis-cli命令行,输入monitor,即可进入到redis监控模式。

127.0.0.1:6379> monitor
OK

随后即可看到,当有请求时,redis具体都做了什么,我们另外打开一个redis-cli,随便插入一条数据,比如set "hello" "world",monitor监控到

redis-monitor.png

再模拟下上面的那个用户请求数据的功能场景:

def get_user_info(uuid):#如果redis中存在该用户的信息,则直接返回if REDIS.exists(uuid):returnREDIS.get(uuid)#否则从mysql中取,并在redis中设置该信息try:info = mysql_op.query(uuid)assert info is not NoneREDIS.set(uuid, info, ex=3600)except Exception, e:raise ereturn info

首次运行后,对应到redis的监控如下,可以看到,redis里没有找到,然后从mysql中查找,并做了set操作将信息存起来,再次运行后,发现redis里存在,因此直接从redis里get数据。

redis-request-log.png

当然,为了演示,上面只是一个简单的例子,并没有考虑连接性能问题,也没有考虑数据更新,比如用户是做一个更新或者删除操作,则相应的也要把redis里的信息也同步更新。

Redis monitor 监控器相关推荐

  1. Redis Monitor命令 - 实时打印出Redis服务器接收到的命令,调试用

    Redis Monitor 命令用于实时打印出Redis服务器接收到的命令,调试用. 语法 redis Monitor命令基本语法如下: redis 127.0.0.1:6379> MONITO ...

  2. Redis-集群监控之Redis monitor

    连续两天配置Redis 集群监控,尝试过三种开源软件,Redis-live,Redis-state,Redis-monitor ,由于内网生产环境,每一个软件的部署都费了老劲. 简单说一下,避免再有人 ...

  3. 微服务平台安全性提升_让我们提升软件安全性

    微服务平台安全性提升 We've all heard, "Software is eating the world." But, today let's talk about a ...

  4. 使用Redis,你必须知道的21个注意要点

    前言 最近在学习Redis相关知识,看了阿里的redis开发规范,以及Redis开发与运维这本书.分使用规范.有坑的命令.项目实战操作.运维配置四个方向,整理了使用Redis的21个注意点,希望对大家 ...

  5. 记一次redis规模化运维讨论会

    http://www.10tiao.com/html/490/201608/2648672432/1.html 7月29日下午,在滴滴,有幸邀请到了业界的一些同学,一起就「redis规模化运维」踩过的 ...

  6. Redis 键(key) 命令

    Redis 键(key) 命令 命令 描述 Redis DEL 命令 该命令用于在 key 存在是删除 key. Redis Dump 命令 序列化给定 key ,并返回被序列化的值. Redis E ...

  7. Open-Falcon 监控系统监控 MySQL/Redis/MongoDB 状态监控

    背景: Open-Falcon 是小米运维部开源的一款互联网企业级监控系统解决方案,具体的安装和使用说明请见官网:http://open-falcon.org/,是一款比较全的监控.而且提供各种API ...

  8. linux redis 监控工具,Redis服务器监控工具redis-live

    目前来说,越来越多的使用多了NOSQL的业务,但是这方面的监控缺不多.今天给大家介绍几个专业监控redis服务的工具,便于大家进行redis性能分析. 一.redmon 这个工具是用ruby语言写的, ...

  9. Docker实践(六)部署redis

    目录 选择镜像 下载镜像 创建配置 创建启动容器 测试 选择镜像 通过命令docker search redis命令查找redis镜像,在docker hub上寻找需要按章的版本. [root@ecs ...

最新文章

  1. 防止熊猫烧香的微软补丁
  2. client-go使用实例
  3. JavaScript高级程序设计44.pdf
  4. 谈谈基于机器学习的编程到底比传统编程强在哪里?
  5. activiti的processEngine空指针异常
  6. C# mciSendString()实现循环播放音乐
  7. 对应node版本_安装Node.js教程
  8. LeetCode 744. 寻找比目标字母大的最小字母(二分查找)
  9. SqlServer2008 R2删除数据库时报数据库正在使用的错误
  10. txt文档下载另存为解决
  11. VSCode下载安装最新详细教程2022(win10)
  12. 为什么说暴雪必须“手游化”?
  13. 一文彻底看懂成交量的本质
  14. 港科夜闻丨香港科大教授权龙:三维重建才是计算机视觉的灵魂
  15. java邮件抄送_JAVA实现邮件抄送,密送,多个附件发送
  16. 双十一淘宝美妆消费数据分析
  17. dynamo for Civil 3d-在横断面上生成对应桩号的平面坐标
  18. 目标检测的Tricks | 【Trick9】nms非极大值抑制处理(包括变体merge-nms、and-nms、soft-nms、diou-nms等介绍)
  19. 计算机无法访问iTunes,iPhone连接电脑后iTunes无响应怎么办【解决方法】
  20. java cs 顺丰运单_JAVA接入顺丰快递

热门文章

  1. 大数据spark篇--saprk疑问点
  2. 什么是CN2,什么是BGP,什么是3C网络,什么是阿里云线路
  3. springboot毕设项目张家口市防疫志愿者网站r6k13(java+VUE+Mybatis+Maven+Mysql)
  4. C语言float和double的区别
  5. 怀同行之心,筑信任之基,践数智之行
  6. Anaconda Jupyter notebook 如何进入D盘
  7. DBeaver21下载与安装教程
  8. dynamic-linker
  9. Java简易人员管理系统
  10. javaSE 面向对象修饰符