#!/bin/bash
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=GSef7NOoIH5R
CNT=1000
KEY_NAME=vc_*
KEY_FILE=key_list.txt
VALUE_FILE=value_list.txt
RESULT_FILE=kv_result.txt
INTERVAL=0.01
redis-cli -h $REDIS_HOST -p $REDIS_PORT -a $REDIS_PASSWORD scan 0 match "$KEY_NAME" count $CNT 2>/dev/null> scan_tmp_result
new_cursor=`sed -n '1p' scan_tmp_result`
sed -n '2,$p' scan_tmp_result > $KEY_FILE
while [ $new_cursor -ne 0 ]
do
redis-cli -h $REDIS_HOST -p $REDIS_PORT -a $REDIS_PASSWORD scan $new_cursor match "$KEY_NAME" count $CNT 2>/dev/null> scan_tmp_result
new_cursor=`sed -n '1p' scan_tmp_result`
echo `cat $KEY_FILE |wc -l`
sed -n '2,$p' scan_tmp_result >> $KEY_FILE
done
TOTAL=`cat $KEY_FILE |wc -l`
echo $TOTAL
> $VALUE_FILE
i=0
for key in `cat $KEY_FILE`
do
i=$(($i+1))
if [[ ${i}%1000 -eq 0 || ${i} -eq $total ]]; then
echo "$i / $TOTAL"
fi
echo "GET $key" | redis-cli $INTERVAL -h $REDIS_HOST -p $REDIS_PORT -a $REDIS_PASSWORD 2>/dev/null >> $VALUE_FILE
done
paste $KEY_FILE $VALUE_FILE > $RESULT_FILE
rm -f scan_tmp_result $VALUE_FILE $KEY_FILE
|