zoukankan      html  css  js  c++  java
  • 编写 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
    
    }
  • 相关阅读:
    【转载】大连商品交易所-套利交易相关问题
    LC 1340. Jump Game V
    1057 Stack
    1059 Prime Factors
    LC 1425. Constrained Subset Sum
    LCP 13. 寻宝
    P3381 【模板】最小费用最大流
    P3376 【模板】网络最大流
    LC 面试题51. 数组中的逆序对
    LC 466. Count The Repetitions
  • 原文地址:https://www.cnblogs.com/zbseoag/p/14038966.html
Copyright © 2011-2022 走看看