Redis一键巡检脚本

2024-06-03 08:36
文章标签 redis 一键 脚本 巡检

本文主要是介绍Redis一键巡检脚本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今日分享redis一键巡检脚本,适用于单机、主从和cluster集群。大家有需要的可以先在本地测试,确认没问题后再运行于生产环境。

#!/bin/bash# 检查是否安装了redis-cli工具,如果没有安装,则提示安装if ! command -v redis-cli &> /dev/nullthenecho "redis-cli could not be found, please install it first."exit 1fi# 设置你的Redis地址和端口,如果没有安装,则提示安装REDIS_HOST="127.0.0.1"REDIS_PORT=6379# 登录的密码,如果没有设置密码,这一行可以注释掉REDIS_PASSWORD="123456"function check_redis() {
#这是核心函数,它接受主机、端口和密码作为参数并执行检查local HOST=$1local PORT=$2local PASSWORD=$3# 执行INFO命令,获取Redis状态信息if [ -z "$PASSWORD" ]; thenREDIS_INFO=$(redis-cli -h $HOST -p $PORT INFO)elseREDIS_INFO=$(redis-cli -h $HOST -p $PORT -a $PASSWORD INFO)fiecho "Checking Redis on $HOST:$PORT"# 打印内存使用情况MEMORY_USED=$(echo "$REDIS_INFO" | grep "used_memory_human" | cut -d':' -f2)echo "Memory Used: $MEMORY_USED"# 打印连接数TOTAL_CONNECTIONS=$(echo "$REDIS_INFO" | grep "total_connections_received" | cut -d':' -f2)echo "Total Connections Received: $TOTAL_CONNECTIONS"# 打印当前连接数CURRENT_CONNECTIONS=$(echo "$REDIS_INFO" | grep "connected_clients" | cut -d':' -f2)echo "Currently Connected Clients: $CURRENT_CONNECTIONS"# 打印Key数量TOTAL_KEYS=$(redis-cli -h $HOST -p $PORT -a $PASSWORD DBSIZE)echo "Total Keys: $TOTAL_KEYS"# 打印角色,判断是否为主从结构或集群ROLE=$(echo "$REDIS_INFO" | grep "role" | cut -d':' -f2)echo "Role: $ROLE"if [ "$ROLE" = "master" ]; thenecho "This is a master instance."# 打印已连接的从节点数量以及信息CONNECTED_SLAVES=$(echo "$REDIS_INFO" | grep "connected_slaves" | cut -d':' -f2)echo "Connected Slaves: $CONNECTED_SLAVES"for i in $(seq 0 $(($CONNECTED_SLAVES - 1)))doSLAVE_INFO=$(echo "$REDIS_INFO" | grep "^slave${i}:")echo "Slave ${i}: $SLAVE_INFO"doneelif [ "$ROLE" = "slave" ]; thenecho "This is a slave instance."# 打印主节点的信息MASTER_HOST=$(echo "$REDIS_INFO" | grep "master_host" | cut -d':' -f2)MASTER_PORT=$(echo "$REDIS_INFO" | grep "master_port" | cut -d':' -f2)echo "Connected to Master: $MASTER_HOST:$MASTER_PORT"fiecho "-----------------------------------------"}# 单机模式巡检check_redis $REDIS_HOST $REDIS_PORT $REDIS_PASSWORD# 如果有多个Redis实例(如主从结构或集群模式),可以增加相应的IP和端口# 如:check_redis "192.168.1.1" 6380 "yourpassword"# 集群模式巡检,通过集群节点遍历# 获取集群节点列表CLUSTER_NODES=$(redis-cli -h $REDIS_HOST -p $REDIS_PORT -a $REDIS_PASSWORD CLUSTER NODES | awk '{print $2}' | awk -F@ '{print $1}')for NODE in $CLUSTER_NODES; doNODE_IP=$(echo $NODE | cut -d':' -f1)NODE_PORT=$(echo $NODE | cut -d':' -f2)check_redis $NODE_IP $NODE_PORT $REDIS_PASSWORDdone

脚本说明:

  • 检查redis-cli工具是否安装:如果没有安装,则提示安装。
  • 基本配置:你需要设置Redis的地址、端口以及密码(如果有的话)。
  • 函数check_redis:这是核心函数,它接受主机、端口和密码作为参数并执行检查。
  • 内存使用、连接数、key数量检查:通过redis-cli INFO命令提取相关信息。
  • 区分单机、主从、集群:通过检查role字段来判断Redis的角色,并针对不同的角色执行相应的操作。
  • 单机模式巡检:对单个Redis实例执行检查。
  • 集群模式巡检:遍历所有集群节点进行检查。

这篇关于Redis一键巡检脚本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1026489

相关文章

Redis 的 SUBSCRIBE命令详解

《Redis的SUBSCRIBE命令详解》Redis的SUBSCRIBE命令用于订阅一个或多个频道,以便接收发送到这些频道的消息,本文给大家介绍Redis的SUBSCRIBE命令,感兴趣的朋友跟随... 目录基本语法工作原理示例消息格式相关命令python 示例Redis 的 SUBSCRIBE 命令用于订

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

C#实现一键批量合并PDF文档

《C#实现一键批量合并PDF文档》这篇文章主要为大家详细介绍了如何使用C#实现一键批量合并PDF文档功能,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言效果展示功能实现1、添加文件2、文件分组(书签)3、定义页码范围4、自定义显示5、定义页面尺寸6、PDF批量合并7、其他方法

sky-take-out项目中Redis的使用示例详解

《sky-take-out项目中Redis的使用示例详解》SpringCache是Spring的缓存抽象层,通过注解简化缓存管理,支持Redis等提供者,适用于方法结果缓存、更新和删除操作,但无法实现... 目录Spring Cache主要特性核心注解1.@Cacheable2.@CachePut3.@Ca

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署

基于Redis自动过期的流处理暂停机制

《基于Redis自动过期的流处理暂停机制》基于Redis自动过期的流处理暂停机制是一种高效、可靠且易于实现的解决方案,防止延时过大的数据影响实时处理自动恢复处理,以避免积压的数据影响实时性,下面就来详... 目录核心思路代码实现1. 初始化Redis连接和键前缀2. 接收数据时检查暂停状态3. 检测到延时过

Redis实现分布式锁全过程

《Redis实现分布式锁全过程》文章介绍Redis实现分布式锁的方法,包括使用SETNX和EXPIRE命令确保互斥性与防死锁,Redisson客户端提供的便捷接口,以及Redlock算法通过多节点共识... 目录Redis实现分布式锁1. 分布式锁的基本原理2. 使用 Redis 实现分布式锁2.1 获取锁

Redis中哨兵机制和集群的区别及说明

《Redis中哨兵机制和集群的区别及说明》Redis哨兵通过主从复制实现高可用,适用于中小规模数据;集群采用分布式分片,支持动态扩展,适合大规模数据,哨兵管理简单但扩展性弱,集群性能更强但架构复杂,根... 目录一、架构设计与节点角色1. 哨兵机制(Sentinel)2. 集群(Cluster)二、数据分片

Java调用Python脚本实现HelloWorld的示例详解

《Java调用Python脚本实现HelloWorld的示例详解》作为程序员,我们经常会遇到需要在Java项目中调用Python脚本的场景,下面我们来看看如何从基础到进阶,一步步实现Java与Pyth... 目录一、环境准备二、基础调用:使用 Runtime.exec()2.1 实现步骤2.2 代码解析三、