Skip to content

Instantly share code, notes, and snippets.

@zhouyl
Last active April 2, 2021 03:38
Show Gist options
  • Save zhouyl/6c7d83a6490746015350b424251358c4 to your computer and use it in GitHub Desktop.
Save zhouyl/6c7d83a6490746015350b424251358c4 to your computer and use it in GitHub Desktop.
REDIS-CLUSTER Manager
#!/usr/bin/env bash
REDIS_CLUSTER_HOME=/usr/local/redis-cluster
cd $REDIS_CLUSTER_HOME
CLUSTERS=(7000 7001 7002 7003 7004 7005)
start() {
for ((i = 0; i < ${#CLUSTERS[@]}; i++)) ; do
PORT=${CLUSTERS[$i]}
PIDFILE=$REDIS_CLUSTER_HOME/run/redis_$PORT.pid
echo -ne "$REDIS_CLUSTER_HOME/bin/redis-server $REDIS_CLUSTER_HOME/conf/redis-$PORT.conf\t"
if [ -f $PIDFILE ]; then
PID=$(cat $PIDFILE)
echo -e "($PID)\t\033[0;33m[ RUNING ]\033[0m"
else
$REDIS_CLUSTER_HOME/bin/redis-server $REDIS_CLUSTER_HOME/conf/redis-$PORT.conf
sleep 0.1
PID=$(cat $PIDFILE)
echo -e "($PID)\t\033[0;32m[ STARTED ]\033[0m"
fi
done
}
stop() {
for ((i = 0; i < ${#CLUSTERS[@]}; i++)) ; do
PORT=${CLUSTERS[$i]}
PIDFILE=$REDIS_CLUSTER_HOME/run/redis_$PORT.pid
echo -ne "$REDIS_CLUSTER_HOME/bin/redis-server $REDIS_CLUSTER_HOME/conf/redis-$PORT.conf\t"
if [ -f $PIDFILE ]; then
PID=$(cat $PIDFILE)
kill -15 $PID
echo -e "($PID)\t\033[0;31m[ STOPED ]\033[0m"
else
echo -e "(----)\t\033[1;30m[ NONE ]\033[0m"
fi
done
}
restart() {
for ((i = 0; i < ${#CLUSTERS[@]}; i++)) ; do
PORT=${CLUSTERS[$i]}
PIDFILE=$REDIS_CLUSTER_HOME/run/redis_$PORT.pid
echo -ne "$REDIS_CLUSTER_HOME/bin/redis-server $REDIS_CLUSTER_HOME/conf/redis-$PORT.conf\t"
if [ -f $PIDFILE ]; then
PID=$(cat $PIDFILE)
kill -15 $PID
sleep 0.1
$REDIS_CLUSTER_HOME/bin/redis-server $REDIS_CLUSTER_HOME/conf/redis-$PORT.conf
sleep 0.1
PID=$(cat $PIDFILE)
echo -e "($PID)\t\033[0;32m[ RESTARTED ]\033[0m"
else
$REDIS_CLUSTER_HOME/bin/redis-server $REDIS_CLUSTER_HOME/conf/redis-$PORT.conf
sleep 0.1
PID=$(cat $PIDFILE)
echo -e "($PID)\t\033[0;32m[ STARTED ]\033[0m"
fi
done
}
status() {
echo "Redis Cluster Server List:"
echo "--------------------------------------------------------------------------------"
for ((i = 0; i < ${#CLUSTERS[@]}; i++)) ; do
PORT=${CLUSTERS[$i]}
PIDFILE=$REDIS_CLUSTER_HOME/run/redis_$PORT.pid
echo -ne "$REDIS_CLUSTER_HOME/bin/redis-server $REDIS_CLUSTER_HOME/conf/redis-$PORT.conf\t"
if [ -f $PIDFILE ]; then
PID=$(cat $PIDFILE)
echo -e "($PID)\t\033[0;32m[ RUNING ]\033[0m"
else
echo -e "(----)\t\033[1;30m[ NONE ]\033[0m"
fi
done
}
check() {
$REDIS_CLUSTER_HOME/bin/redis-cli --cluster info 127.0.0.1:${CLUSTERS[0]}
}
login() {
if [[ "$1" ]] ; then
PORT=$1
else
PORT=${CLUSTERS[0]}
fi
echo "$REDIS_CLUSTER_HOME/bin/redis-cli -c -p $PORT"
$REDIS_CLUSTER_HOME/bin/redis-cli -c -p $PORT
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status
;;
restart)
restart
;;
check)
check
;;
login)
login $2
;;
*)
echo -e "Usage: $0 [start|stop|status|restart|check|login]\n"
status
;;
esac
exit $?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment