作为现在web应用开发的黄金搭档,Redis正被广泛应用于存储session信息、权限信息、交易作业等热数据。但是Redis的数据可视化不便、数据查看维护困难、Redis状态监控、运维不易等问题也是我们经常会遇到的问题。作为一名性能测试人员,在工作当中不可避免会碰到系统使用Redis数据库。Redis的功能和性能非常出色,考虑篇幅问题,本文将会对Redis和常见的监控工具进行简单的介绍,后面有机会再分享Redis特性及性能相关的内容。

一、简要介绍

Redis(http://Redis.io)是一款开源的、高性能的键-值存储(key-value store),它是用ANSIC来编写。Redis的项目名是Remote Dictionary Server的缩写,但它常被称作是一款数据结构服务器(data structureserver)。Redis的键-值可以包括字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)和有序集合(sorted sets)等数据类型。对这些数据类型可以执行原子操作,例如:对字符串进行附加操作(append)、递增哈希中的值、向列表中增加元素、计算集合的交集、并集与差集等。

为了获得优异的性能,Redis采用了内存中(in-memory)数据集(dataset)的方式。根据使用场景的不同,可以每隔一段时间将数据集转存到磁盘上来持久化数据,或者在日志尾部追加每一条操作命令。

Redis同样支持主-从复制(master-slave replication),并且具有非常快速的非阻塞首次同步(non-blockingfirst synchronization)、网络断开自动重连等功能。同时Redis还具有其它一些特性,其中包括简单的check-and-set机制、pub/sub和配置设置等,以便使得Redis能够表现得更像缓存(cache)。此外,Redis还提供了丰富的客户端,以便支持现阶段流行的大多数编程语言。 Redis内部结构图如下所示:

各功能模块说明如下:

File Event:处理文件事件(在多个客户端中实现多路复用,接受它们发来的命令请求(读事件),并将命令的执行结果返回给客户端(写事件);

Time Event:时间事件(更新统计信息,清理过期数据,附属节点同步,定期持久化等);

AOF:命令日志的数据持久化;

RDB:实际的数据持久化;

Lua Environment :Lua 脚本的运行环境。 为了让 Lua 环境符合 Redis 脚本功能的需求,Redis 对 Lua 环境进行了一系列的修改,包括添加函数库、更换随机函数、保护全局变量等等;

Command table(命令表):在执行命令时,根据字符来查找相应命令的实现函数;

Share Objects(对象共享):主要存储常见的值:a.各种命令常见的返回值,例如返回值OK、ERROR、WRONGTYPE等字符;

b.小于redis.h/REDIS_SHARED_INTEGERS(默认1000)的所有整数。通过预分配的一些常见的值对象,并在多个数据结构之间共享对象,程序避免了重复分配的麻烦。也就是说,这些常见的值在内存中只有一份;

Databases:Redis数据库是真正存储数据的地方。当然,数据库本身也是存储在内存中的。一个数据库,在内存中的数据结构如下图所示:

Redis对于Linux是官方支持,普通使用按照官方指导即可安装成功,这里对于Redis安装本文不再详述。下面介绍一下Redis监控方面的内容。

二、Reids监控

性能测试当中,尤其是针对Redis的性能测试,如和做好Redis监控是至关重要的,redis自带有命令行的监控工具,也有一些基于这些命令行而还发的工具,其中一些是具有图形界面的,这里主要介绍以下四个监控工具。

1. redis-faina

redis-faina是由Instagram开发并开源的一个Redis查询分析小工具。Instagram团队曾经使用PGFouine来作为其PostgreSQL的查询分析工具,他们觉得Redis也需要一个类似的工具来进行query分析工作,于是开发了redis-faina。   redis-faina是通过Redis的MONITOR命令来实现的,通过对在Redis上执行的query进行监控,统计出一段时间的query特性。下面就是其使用方法简介:

下载使用:

测试结果如下:

统计的内容有Overall Stats(总体统计数据)、Top Prefixe(按key前缀统计)、Top Keys(操作最频繁的key)、Top Command(执行最多的命令)、Command Time(microsecs)(命令执行时长)、Heaviest Commands(microsecs)(耗时最多的命令)、Slowest Calls(最慢的命令)。

图中展示了一些实时的数据,从上面结果我们可以看到对Redis的操作规律,比如针对哪些key在进行操作,进行了什么操作,这些操作的效率如何等相关有用信息。

由于Redis的MONITOR 也对性能有所影响,所以建议在使用时不要一直开启MONITOR来分析。可以采用定时抽样一段时间来做样本分析推荐使用,但redis版本必须大于2.4。

2. redisLive

RedisLive是一款用Python编写的Redis图形监控工具安装Redis图形监控工具既然RedisLive由Python编写,那么Python环境是必不可少的,一般Linux默认都安装了Python,如需安装或者更新网上提供很多教程。RedisLive的原理很简单,就是通过监控脚本来利用Redis提供的MONITOR命令从被监控Redis实例中获取数据并存储到Redis的监控实例中来做数据分析。RedisLive以可视化的方式展示了Redis实例中的数据,分析查询模式和峰值。

下载安装使用:

在浏览器中输入:http://10.20.111.188:8888/index.html 即可看到下图。

上图中监控数据不多,下面给出一张官网的效果图。

一个web界面,可以同时监控多个redis实例,做集中监控比较好。

3. redis-stat

Redis-stat用Ruby写成的监控Redis的程序,本身基于Redis的info命令封装而成。通常来说,不会像基于MONITOR命令的监控工具一样,对Redis本身有性能上的影响。redis-stat可以监控Redis的实例,一方面可以像vmstat一样,把状态信息从终端输出,另一方面也可以通过基于嵌入式的web server使用dashboard页面查看状态信息。

运行环境安装:

redis-stat安装:

redis-stat的具体用法:

redis-stat的命令行模式:

redis-stat的web模式:

效果图如下:

运行web模式:

在浏览器中输入 http://10.20.111.188:8080/  结果如下:

此工具既有命令行又有web界面,可以放到后台运行,ruby开发的,数据比redis-live感觉直观 ,唯一的缺点是如果同时监控多个redis实例,不能单独显示每一个实例的数据信息,貌似是总和。

4. redis-monitor

monitor是一个调试命令,用JAVA编写的,返回服务器处理的每一个命令,它有助于我们了解在数据库上发生了什么操作,可以通过redis-cli和telnet命令使用。使用sigint (Ctrl-C)来停止通过redis-cli使用monitor命令返回的输出,使用quit命令来停止通过telnet使用monitor返回的输出。

由于MONITOR命令返回 服务器处理的所有的命令,所以在性能上会有一些消耗。做集中监控使用redis-live、命令行使用redis-stat,可能会比较合适,另外也可根据自己的情况自行编写,总之就是根据info和monitor命令来获取并展示信息。

相对于命令行工具来说,图形化监控Redis结果更加美观、直接,但是同时图形化的工具安装起来也比较麻烦。有些甚至会对Redis的性能造成一定的影响,是实际的项目中,可以根据自己想要的监控结果来选择合适的监控工具。

参考资料:

http://blog.csdn.net/dc_726/article/details/47699739

http://redis.majunwei.com/

http://www.redis.net.cn/tutorial/3502.html

http://www.cnblogs.com/Leo_wl/p/5870006.html

Redis及其监控工具简介相关推荐

  1. Redis和nosql简介,api调用;Redis数据功能(String类型的数据处理);List数据结构(及Java调用处理);Hash数据结构;Set数据结构功能;sortedSet(有序集合)数

    1.Redis和nosql简介,api调用 14.1/ nosql介绍 NoSQL:一类新出现的数据库(not only sql),它的特点: 1.  不支持SQL语法 2.  存储结构跟传统关系型数 ...

  2. NoSQL数据库Redis使用命令简介

    NoSQL 数据库Redis使用命令简介 NOSQL数据库可以按照它们的数据模型分成4类: 1.键-值对存储库(Key-Value) redis-- 2.BigTable实现(BigTable-imp ...

  3. java redis监控工具_聊聊redis的监控工具

    序 本文主要研究一下redis的监控工具 redis-stat redis-stat是一个比较有名的redis指标可视化的监控工具,采用ruby开发,基于redis的info命令来统计,不影响redi ...

  4. Redis学习 - NoSQL简介、redis安装、redis基础知识、数据类型、持久化、订阅发布、主从复制、哨兵模式、缓存击穿和雪崩

    学习视频地址:https://www.bilibili.com/video/BV1S54y1R7SB 完结撒花,感谢狂神 文章目录 1. NoSQL 1.1 单机Mysql的演进 1.2 当今企业架构 ...

  5. python在材料方面的应用_python应用性能监控工具简介

    Published: 一 22 十月 2018 监控简介 监视工具捕获,分析和显示Web应用程序执行信息.每个应用程序在Web堆栈的所有层都可能出现问题.监控工具通过展示帮助开发人员和运营团队响应并修 ...

  6. 缓存服务——Redis集群简介

    文章目录 缓存服务--Redis集群 一.Redis简介 1.Redis软件获取和帮助 2.Redis特性 3.企业缓存数据库解决方案对比 4.Redis应用场景 二.Redis基本部署 1.编译安装 ...

  7. 【Redis】NoSQL简介

    文章目录 1. 简介 2. 分类 3. 特点: 4. 适用场景 5. ACID 6. CAP理论: 7. BASE 8. 思考题: 1. 简介 NoSQL最常见的解释是"non-relati ...

  8. Redis -- 01 【简介,特点,搭建,shell,数据类型】

    1.Redis的简介 Redis中文官网链接: 1.1.NoSql NoSql 是Not-Only Sql的简写,泛指非关系型数据库 关系型数据库不太适合存储非结构化的大数据(现在的非结构化的数据占比 ...

  9. Redis安装和简介

    CENTOS7下安装REDIS 官网:https://redis.io/download 第一步:解压压缩包 [root@hd01 opt]# tar -zxf redis-5.0.14.tar.gz ...

最新文章

  1. http://www.cnblogs.com/amboyna/archive/2008/03/08/1096024.html
  2. SQL 百万级别记录优化之 -- 单引号带来的性能下降
  3. 五天带你学完《计算机网络》·第一天·物理层
  4. Anaconda3自带jupyter
  5. c++ map用法_Python的 5 种高级用法,效率提升没毛病
  6. Java并发编程实战_不愧是领军人物!这种等级的“Java并发编程宝典”谁能撰写?...
  7. 【转】如何学会独立思考?
  8. [技术讨论][DDS] AD9833原理介绍及chiliDDS驱动分享(上)
  9. html根据出生日期计算星座,星座测算.html
  10. 世界读书日,给大家推荐几本书
  11. oracle中导出查询结果,Oracle SQL 查询结果导出到文本或Excel文件方法
  12. 径向基函数(RBF)
  13. json格式转数组过程数值改变的问题
  14. 网上书城 springboot vue前后端分离
  15. 计算机一级云居寺,刁常宇-Zhejiang University Personal homepage
  16. CSS的再深入2(更新中···)
  17. 如何让ecshop做淘宝客
  18. Oracle 以当前时间为准,取前三个小时后两个小时的分钟枚举
  19. 私服服务器需要多大的配置
  20. U盘损坏和文件修复(前方高能!!!)

热门文章

  1. 论文笔记(六)【Glow: Generative Flow with Invertible 1 x 1 Convolutions】
  2. 仿牛客社区——开发社区搜索功能
  3. 《离散数学》:集合、关系和函数
  4. 海森伯模型的严格对角化方法
  5. MATLAB中的eig函数用法
  6. 我的MEM管理类研究生,在路上
  7. 教学记事:用提问的方式解疑
  8. 【洛谷P1311】选择客栈【二分】
  9. Denso 盘点机应用介绍
  10. 服装鞋帽吊牌条码如果用吉度PDA扫码出入库盘点