介绍

Redis是一个开源的内存中键值数据存储。它带有几个命令,可以帮助您进行故障排除和调试。由于Redis具有内存中的键值存储的性质,因此其中许多命令都集中在内存管理上,但是还有一些其他命令对于概述Redis服务器的状态很有用。本教程将提供有关如何使用其中一些命令来帮助诊断和解决使用Redis时可能遇到的问题的详细信息。

如何使用本指南

本指南以备有完整示例的备忘单形式编写。我们鼓励您跳至与您要完成的任务相关的任何部分。

本指南中显示的命令已在运行Redis版本4.0.9的Ubuntu 18.04服务器上进行了测试。要设置类似的环境,您可以按照我们的指南如何在Ubuntu 18.04上安装和保护Redis的步骤1进行操作。我们将通过使用Redis命令行界面运行它们来演示这些命令的行为。请注意,如果您使用其他Redis界面(例如Redli),则某些命令的确切输出可能会有所不同。redis-cli

另外,您可以提供一个托管的Redis数据库实例来测试这些命令,但是请注意,根据数据库提供者所允许的控制级别,本指南中的某些命令可能无法按所述方式工作。要配置DigitalOcean托管数据库,请遵循我们的托管数据库产品文档。然后,您必须 安装Redli 设置TLS隧道才能通过TLS连接到托管数据库。

对内存相关问题进行故障排除

memory usage告诉您单个键当前正在使用多少内存。它以键的名称作为参数,并输出其使用的字节数:

memory usage key_meaningOfLife

(integer) 42

为了更全面地了解您的Redis服务器如何使用内存,可以运行以下memory stats命令:

memory stats

此命令输出与内存相关的指标及其值的数组。以下是报告的指标memory stats

  • peak.allocated:Redis消耗的最大字节数
  • total.allocated:Redis分配的总字节数
  • startup.allocated:Redis在启动时消耗的初始字节数
  • replication.backlog:复制积压的大小,以字节为单位
  • clients.slaves:所有副本_开销_的总大小(输出和查询缓冲区以及连接上下文)
  • clients.normal:所有客户端开销的总大小
  • aof.buffer:当前和重写的仅附加文件缓冲区的总大小
  • db.0:服务器上正在使用的每个数据库的主要和到期字典的开销,以字节为单位报告
  • overhead.total:用于管理Redis密钥空间的所有开销的总和
  • keys.count:服务器上所有数据库中存储的密钥总数
  • keys.bytes-per-key:服务器的净内存使用率与 keys.count
  • dataset.bytes:数据集的大小,以字节为单位
  • dataset.percentage:Redis占用的Redis净内存使用量的百分比 dataset.bytes
  • peak.percentagepeak.allocated取出的百分比total.allocated
  • fragmentation:当前正在使用的内存量除以Redis实际使用的物理内存之比

memory malloc-stats提供了来自jemalloc的内部统计报告,该报告是Linux系统上Redis使用的内存分配器:

memory malloc-stats

如果您似乎遇到了与内存有关的问题,但是解析前面命令的输出证明是无济于事的,则可以尝试运行memory doctor

memory doctor

此功能将输出它可以找到的所有内存消耗问题,并提出潜在的解决方案。

获取有关Redis实例的常规信息

与内存管理没有直接关系的调试命令是monitor。此命令使您可以查看Redis服务器处理的每个命令的恒定流:

monitor

OK
1566157213.896437 [0 127.0.0.1:47740] "auth" "foobared"
1566157215.870306 [0 127.0.0.1:47740] "set" "key_1" "878"

另一个对调试有用的命令是info,它返回有关服务器的多个信息和统计信息块:

info

# Server
redis_version:4.0.9
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:9435c3c2879311f3
redis_mode:standalone
os:Linux 4.15.0-52-generic x86_64
. . .

此命令返回很多信息。如果您只想查看一个信息块,则可以将其指定为info

info CPU

# CPU
used_cpu_sys:173.16
used_cpu_user:70.89
used_cpu_sys_children:0.01
used_cpu_user_children:0.04

请注意,该info命令返回的信息将取决于您所使用的Redis版本。

使用keys命令

keys如果您忘记了某个键的名称,或者您已经创建了一个键,但又意外误拼了它的名称,则该命令很有用。keys查找与模式匹配的键:

keys pattern

支持以下glob样式的变量

  • ?是通配符站在任何单个字符,这样s?mmy的比赛sammysommysqmmy
  • *是一个通配符,用来代表任何数量的字符,包括没有任何字符,所以sa*y比赛sammysaysammmmmmy,和salmony
  • 您可以通过将模式将其括在方括号中来指定模式可以包含的两个或多个字符,以s[ai]mmy匹配sammysimmy,但不能匹配summy
  • 要设置一个忽略一个或多个字母的通配符,请将其括在方括号中,并在其前面加上一个胡萝卜(^),这样s[^oi]mmy可以匹配sammysxmmy,但不能匹配sommysimmy
  • 要设置一个通配符,其中包括一系列的字母,范围的开头和结尾分开连字符和括号包起来,这样s[a-o]mmy将匹配sammyskmmysommy,但不srmmy

警告:Redis的文件警告说,keys应该几乎从来没有在生产环境中使用,因为它可能会对性能产生重大的负面影响。

结论

本指南详细介绍了许多命令,这些命令可用于故障排除和解决与Redis一起使用时可能遇到的问题。如果您想在本指南中概述其他相关的命令,参数或过程,请在下面的评论中提出疑问或提出建议。

有关Redis命令的更多信息,请参阅关于如何管理Redis数据库的系列教程。

  1. 如何在ubuntu18.04上安装和保护redis
  2. 如何连接到Redis数据库
  3. 如何管理Redis数据库和Keys
  4. 如何在Redis中管理副本和客户端
  5. 如何在Redis中管理字符串
  6. 如何在Redis中管理list
  7. 如何在Redis中管理Hashes
  8. 如何在Redis中管理Sets
  9. 如何在Redis中管理Sorted Sets
  10. 如何在Redis中运行事务
  11. 如何使Redis中的Key失效
  12. 如何解决Redis中的故障
  13. 如何从命令行更改Redis的配置
  14. Redis数据类型简介
    作者:分布式编程
    出处:https://zthinker.com/
    如果你喜欢本文,请长按二维码,关注 分布式编程
    .

(Redis基础教程之十二) 如何解决Redis中的故障的更多相关文章

  1. (Python基础教程之十二)Python读写CSV文件

    Python基础教程 在SublimeEditor中配置Python环境 Python代码中添加注释 Python中的变量的使用 Python中的数据类型 Python中的关键字 Python字符串操 ...

  2. 【面试 redis】【第十二篇】redis的相关面试问题

    redis的相关面试问题 redis教程:http://www.redis.net.cn/tutorial/3501.html ==================================== ...

  3. 【OpenCV新手教程之十二】OpenCV边缘检測:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/25560901 作者:毛星云(浅墨) ...

  4. [OpenCV入门教程之十二】OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑

    http://blog.csdn.net/poem_qianmo/article/details/25560901 本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog ...

  5. Senparc.Weixin.MP SDK 微信公众平台开发教程(十二):OAuth2.0说明

    紧接上一篇<Senparc.Weixin.MP SDK 微信公众平台开发教程(十一):高级接口说明>,这里专讲OAuth2.0. 理解OAuth2.0 首先我们通过一张图片来了解一下OAu ...

  6. Spring Boot 2.x基础教程:使用集中式缓存Redis

    之前我们介绍了两种进程内缓存的用法,包括Spring Boot默认使用的ConcurrentMap缓存以及缓存框架EhCache.虽然EhCache已经能够适用很多应用场景,但是由于EhCache是进 ...

  7. 【转】抓包工具Fiddler的使用教程(十二)下:Fiddler抓取HTTPS

    在教程十二(上),我们也了解了HTTPS协议,该教程就和大家分享Fiddler如何抓取HTTPS 抓包工具Fiddler的使用教程(十二):[转载]HTTPS协议 再次回忆一下关键内容: iddler ...

  8. MyBatis基础入门《十二》删除数据 - @Param参数

    MyBatis基础入门<十二>删除数据 - @Param参数 描述: 删除数据,这里使用了@Param这个注解,其实在代码中,不使用这个注解也可以的.只是为了学习这个@Param注解,为此 ...

  9. mongodb,Mysql,redis基础教程

    数据库基础 1:mongodb基础教程 1:pymongo基础教程  2:Mysql基础教程 3:redis基础教程

  10. iOS 11开发教程(十二)iOS11应用视图始祖——UIView

    iOS 11开发教程(十二)iOS11应用视图始祖——UIView 在Swift中,NSObject是所有类的根类.同样在UIKit框架(UIKit框架为iOS应用程序提供界面对象和控制器)中,也存在 ...

随机推荐

  1. 【Mac + Python + Selenium】之获取验证码图片code并进行登录

    自己新总结了一篇文章,对代码进行了优化,另外附加了静态图片提取文字方法,两篇文章可以结合着看:<[Python]Selenium自动化测试之动态识别验证码图片方法(附静态图片文字获取)> ...

  2. 一个操作系统的设计与实现——第19章 IA32-e模式

    19.1 64位段描述符与GDT 在32位操作系统中,我们使用的是平坦模型而非分段模型,从而,段描述符的段基址和段限长均成了摆设.在64位模式下,就连CPU也淘汰了分段模型,转而固定使用平坦模型. 6 ...

  3. 基于PaddleOCR + NLP实现证件识别

    基于PaddleOCR + NLP实现证件识别 PaddleOCR识别 paddleOCR安装 安装 anconda虚拟环境(可参考yolov5的安装教程) paddleOCR识别 PaddleNLP ...

  4. .NET 多版本兼容的精美 WinForm UI控件库

    前言 有粉丝小伙伴在后台留言咨询有没有WinForm 控件库推荐,现在就给安排上. .NET 平台进行 Windows 应用程序开发的我们来说,找一个既美观又实用的 WinForm UI 控件库至关重 ...

  5. tarjan—算法的神(一)

    本篇包含 tarjan 求强连通分量.边双连通分量.割点 部分, tarjan 求点双连通分量.桥(割边)在下一篇. 伟大的 Robert Tarjan 创造了众多被人们所熟知的算法及数据结构,最著名 ...

  6. Goby漏洞发布 | CVE-2024-4879 ServiceNowUI /login.do Jelly模板注入漏洞【已复现】

    漏洞名称:ServiceNowUI /login.do Jelly模板注入漏洞(CVE-2024-4879) English Name:ServiceNowUI /login.do Input Val ...

  7. postgre基于行数的外连接及python连接postgre数据库

    外连接 左外/右外连接 左外连接:左表全部出现在结果集中,若右表无对应记录,则相应字段为NULL left join ... on 条件 右外连接:右表全部出现在结果集中,若左表无对应记录,则相应字段 ...

  8. USB协议详解第11讲(USB描述符-总结)

    描述符回顾总结 1.其实所有的描述符都是USB设备用来描述自己属性及用途的,所以必须在设备端实现对应的描述符,主机会在枚举此设备的时候根据设备实现的描述符去确定设备到底是一个什么样的设备.设备需要的总 ...

  9. 【题目全解】ACGO排位赛#13

    ACGO排位赛#13 - 题目解析 感谢大家参加本次排位赛! T1 - 纪元流星雨 题目链接跳转:点击跳转 也没有特别大的难度,手动模拟一下就可以了. 解题步骤 先计算出这个人一生中第一次看到流星雨的 ...

  10. Java日期时间API系列26-----Jdk8中java.time包中的新的日期时间API类,YearMonth类的源码,转换和应用。

    Java8中为年月新增了类YearMonth,可以用来表示卡片过期时间等问题. 1.YearMonth 默认格式为:2007-12 1.1 部分源码 * * @implSpec * This clas ...