Redis一键巡检脚本的实现

 更新时间:2024年06月06日 09:18:11   作者:一坨小橙子ovo  
在使用Redis作为数据存储的时候,定期进行巡检是非常重要的,本文主要介绍了Redis一键巡检脚本的实现,具有一定的参考价值,感兴趣的可以了解一下

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

#!/bin/bash

# 检查是否安装了redis-cli工具,如果没有安装,则提示安装

if ! command -v redis-cli &> /dev/null

then

    echo "redis-cli could not be found, please install it first."

    exit 1

fi

# 设置你的Redis地址和端口,如果没有安装,则提示安装

REDIS_HOST="127.0.0.1"

REDIS_PORT=6379

# 登录的密码,如果没有设置密码,这一行可以注释掉

REDIS_PASSWORD="123456"

function check_redis() {
#这是核心函数,它接受主机、端口和密码作为参数并执行检查

    local HOST=$1

    local PORT=$2

    local PASSWORD=$3

    # 执行INFO命令,获取Redis状态信息

    if [ -z "$PASSWORD" ]; then

        REDIS_INFO=$(redis-cli -h $HOST -p $PORT INFO)

    else

        REDIS_INFO=$(redis-cli -h $HOST -p $PORT -a $PASSWORD INFO)

    fi

    echo "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" ]; then

        echo "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)))

        do

            SLAVE_INFO=$(echo "$REDIS_INFO" | grep "^slave${i}:")

            echo "Slave ${i}: $SLAVE_INFO"

        done

    elif [ "$ROLE" = "slave" ]; then

        echo "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"

    fi

    echo "-----------------------------------------"

}

# 单机模式巡检

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; do

    NODE_IP=$(echo $NODE | cut -d':' -f1)

    NODE_PORT=$(echo $NODE | cut -d':' -f2)

    check_redis $NODE_IP $NODE_PORT $REDIS_PASSWORD

done

脚本说明:

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

到此这篇关于Redis一键巡检脚本的实现的文章就介绍到这了,更多相关Redis一键巡检内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • Redis如何实现数据库读写分离详解

    Redis如何实现数据库读写分离详解

    Redis的主从架构,能帮助我们实现读多,写少的情况,下面这篇文章主要给大家介绍了关于Redis如何实现数据库读写分离的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2018-03-03
  • 解密Redis助力双11背后电商秒杀系统(推荐)

    解密Redis助力双11背后电商秒杀系统(推荐)

    这篇文章主要介绍了解密Redis助力双11背后电商秒杀系统,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • 深入理解Redis被覆写后的失效时间

    深入理解Redis被覆写后的失效时间

    Redis覆写已存在的键会导致其旧的失效时间被新的键值对所取代,本文详细解析了在键被覆写时,其失效时间的变化,具有一定的参考价值,感兴趣的可以了解一下
    2024-09-09
  • Windows环境下Redis Cluster环境搭建(图文)

    Windows环境下Redis Cluster环境搭建(图文)

    这篇文章主要介绍了Windows环境下Redis Cluster环境搭建(图文),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • redis lua脚本解决高并发下秒杀场景

    redis lua脚本解决高并发下秒杀场景

    这篇文章主要为大家介绍了redis lua脚本解决高并发下秒杀场景,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • Redis报错NOAUTH Authentication required简单解决办法

    Redis报错NOAUTH Authentication required简单解决办法

    这篇文章主要给大家介绍了关于Redis报错NOAUTH Authentication required的简单解决办法,Redis无密码报错NOAUTH Authentication required的原因是客户端访问Redis时需要提供密码,但是没有提供或提供的密码不正确,需要的朋友可以参考下
    2024-05-05
  • 从MySQL到Redis的简单数据库迁移方法

    从MySQL到Redis的简单数据库迁移方法

    这篇文章主要介绍了从MySQL到Redis的简单数据库迁移方法,注意Redis数据库基于内存,并不能代替传统数据库,需要的朋友可以参考下
    2015-06-06
  • Redis分布式锁的10个坑总结

    Redis分布式锁的10个坑总结

    日常开发中,经常会碰到秒杀抢购等业务,为了避免并发请求造成的库存超卖等问题,我们一般会用到Redis分布式锁,但是使用Redis分布式锁,很容易踩坑哦,本文将给大家分析阐述,Redis分布式锁的10个坑,需要的朋友可以参考下
    2023-05-05
  • ​Redis 实现计数器和限速器的示例代码

    ​Redis 实现计数器和限速器的示例代码

    本文主要介绍了​Redis 实现计数器和限速器的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-02-02
  • Redis MONITOR命令使用详解

    Redis MONITOR命令使用详解

    MONITOR是Redis提供的一个核心调试与审计命令,用于实时捕获并打印服务器接收到的所有命令请求,本文就来介绍一下Redis MONITOR命令使用,感兴趣的可以了解一下
    2025-11-11

最新评论