Redis 性能测试

2020-08-17  本文已影响0人  走在成长的道路上

本文使用 redis 自带的 redis-benchmark 工具进行压力测试

参数说明

命令格式如下:

Usage: redis-benchmark [-h <host>] [-p <port>] [-c <clients>] [-n <requests]> [-k <boolean>]

参数说明如下:

选项 描述 默认值
-h 指定服务器主机名 127.0.0.1
-p 指定服务器端口 6379
-s 指定服务器 socket
-c 指定并发连接数 50
-n 指定请求数 10000
-d 以字节的形式指定 SET/GET 值的数据大小 2
-k 1=keep alive 0=reconnect 1
-r SET/GET/INCR 使用随机 key, SADD 使用随机值
-P 通过管道传输 <numreq> 请求 1
-q 强制退出 redis。仅显示 query/sec 值
--csv 以 CSV 格式输出
-l 生成循环,永久执行测试
-t 仅运行以逗号分隔的测试命令列表
-I Idle 模式。仅打开 N 个 idle 连接并等待

仅显示指标数据测试100000次: redis-benchmark -q -n 100000

常见测试用例

  1. 压测指定命令列表 get,set
redis-benchmark -h 127.0.0.1 -p 6086 -c 50 -n 10000 -t set,lpush
  1. 长链接压测
redis-benchmark -h host -p port -t ping -c 10000 -n 500000 -k 1
  1. 命令方式
redis-benchmark -n 100000 -q script load “redis.call(‘set’,’foo’,’bar’)”

常见指标检查

#!/bin/bash
# -------------------------------------------------------------------------------
# FileName:    check_redis.sh
# Revision:    1.0
 
REDIS_CLI_COMMAND="redis-cli"
REDIS_HOST="172.18.1.*"
REDIS_PORT="28001"
 
ARGS=1
 
if [ $# -ne "$ARGS" ];then
    echo "Please input one arguement:"
fi
#!/bin/bash

while getopts 's:p:' OPT; do
    case $OPT in
        s)
            REDIS_HOST="$OPTARG";;
        p)
            REDIS_PORT="$OPTARG";;
        h)
            echo "Usage: `basename $0` [-s server] [-p port] command";
            echo "        command: connected_clients, used_memory_rss_human ...etc.";
            exit 1;;
    esac
done

shift $((OPTIND - 1))
COMMAND=$@ 

echo "the redis server: $REDIS_HOST:$REDIS_PORT command: $COMMAND"

case $COMMAND in
    connected_clients)
        result=`$REDIS_CLI_COMMAND -h $REDIS_HOST -p $REDIS_PORT -a 'password' info | grep -w "connected_clients" | awk -F':' '{print $2}'`
            echo $result
            ;;
    used_memory_rss_human)
        result=`$REDIS_CLI_COMMAND -h $REDIS_HOST -p $REDIS_PORT -a 'password' info | grep -w "used_memory_rss_human" | awk -F':' '{print $2}'`
            echo $result
            ;;
    used_memory_peak_human)
        result=`$REDIS_CLI_COMMAND -h $REDIS_HOST -p $REDIS_PORT -a 'password' info | grep -w "used_memory_peak_human" | awk -F':' '{print $2}'`
            echo $result
            ;;
    total_connections_received)
        result=`$REDIS_CLI_COMMAND -h $REDIS_HOST -p $REDIS_PORT -a 'password' info | grep -w "total_connections_received" | awk -F':' '{print $2}'`
            echo $result
            ;;
    instantaneous_ops_per_sec)
        result=`$REDIS_CLI_COMMAND -h $REDIS_HOST -p $REDIS_PORT -a 'password' info | grep -w "instantaneous_ops_per_sec" | awk -F':' '{print $2}'`
            echo $result
            ;;
    instantaneous_input_kbps)
        result=`$REDIS_CLI_COMMAND -h $REDIS_HOST -p $REDIS_PORT -a 'password' info | grep -w "instantaneous_input_kbps" | awk -F':' '{print $2}'`
            echo $result
            ;;
    instantaneous_output_kbps)
        result=`$REDIS_CLI_COMMAND -h $REDIS_HOST -p $REDIS_PORT -a 'password' info | grep -w "instantaneous_output_kbps" | awk -F':' '{print $2}'`
            echo $result
            ;;
    rejected_connections)
        result=`$REDIS_CLI_COMMAND -h $REDIS_HOST -p $REDIS_PORT -a 'password' info | grep -w "rejected_connections" | awk -F':' '{print $2}'`
            echo $result
            ;;
    expired_keys)
        result=`$REDIS_CLI_COMMAND -h $REDIS_HOST -p $REDIS_PORT -a 'password' info | grep -w "expired_keys" | awk -F':' '{print $2}'`
            echo $result
            ;;
    evicted_keys)
        result=`$REDIS_CLI_COMMAND -h $REDIS_HOST -p $REDIS_PORT -a 'password' info | grep -w "evicted_keys" | awk -F':' '{print $2}'`
            echo $result
            ;;
    keyspace_hits)
        result=`$REDIS_CLI_COMMAND -h $REDIS_HOST -p $REDIS_PORT -a 'password' info | grep -w "keyspace_hits" | awk -F':' '{print $2}'`
            echo $result
            ;;
    keyspace_misses)
        result=`$REDIS_CLI_COMMAND -h $REDIS_HOST -p $REDIS_PORT -a 'password' info | grep -w "keyspace_misses" | awk -F':' '{print $2}'`
            echo $result
            ;;
esac
上一篇下一篇

猜你喜欢

热点阅读