编写 Redis 测试 shell 脚本

redis-cli 是交互模式,每次测试都要一条条写命令,有点烦了。特别是一些多条命令组合实现功能的时候,还是用脚本测试,更容易学习。

请看效果图:

下面把代码写在下面了

#!/usr/bin/env bash
:<<EOF
Redis 测试脚本
测试之前,先关闭所有 Redis 服务器:
sudo pkill -9 redis-server

关闭单台服务器
redis-cli -p <port> -a <requirepass>  shutdown

用法:
. ./demo-redis.sh
-connect

EOF





function shutdowns(){

    sleep 5
    for port in "$@"
    do
        redis-cli -p $port shutdown
    done

}


### ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
### 连接测试
### ========================================================================
### 
### ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
function -connect(){

redis-server --port 6380 --daemonize yes
redis-cli -p 6380 --raw <<EOF

echo "测试开始..."
set uname "张三"
get uname
shutdown
quit

EOF

}


### ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
### 客户端执行一些命令
### ========================================================================
### 
### ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
function -client(){

#启动服务器
redis-server --port 6380 --requirepass 123456 --daemonize yes

#连接1
redis-cli -p 6380 <<EOF

auth 123456
time
client setname "client-1"
client getname

EOF

#连接2
redis-cli -p 6380 <<EOF

auth 123456
client setname "client-2"
client list
client kill 127.0.0.1:45888

EOF

shutdowns 6380


}




### ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
### 主从复制
### ========================================================================
### 主服务器中写入数据,再从从服务器上读取数据
### ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
function -copy(){

#启动主服务器
redis-server --port 6380 --daemonize yes
#启动从服务器
redis-server --port 6381 --replicaof 127.0.0.1 6380 --daemonize yes

#连接主服务器
redis-cli -p 6380 <<EOF

role
set uname "Tom"
get uname
quit

EOF

#连接从服务器
redis-cli -p 6381 <<EOF

role
get uname
replicaof no one

EOF

#关闭服务器
shutdowns 6380 6381


}


function -transaction(){

redis-server --port 6380 --daemonize yes

redis-cli -p 6380 --raw <<EOF

echo "设置并监视 books:"
echo "==================================================================================="
set books 1
watch books
echo "==================================================================================="

echo "调用 incr books 修改了 books 的值:"
echo "==================================================================================="
incr books
echo "==================================================================================="

echo "开始事务:"
echo "==================================================================================="
multi
set books 10
incr books
exec
get books
echo "==================================================================================="

echo "第二次测试 watch 之后, 不改变 books 的值:"
echo "==================================================================================="
watch books
multi
set books 10
incr books
exec

EOF

}
原文地址:https://www.cnblogs.com/zbseoag/p/14038966.html