前言
在linux上我们会有一些批量插入redis mock数据的需求,下面通过bash脚本来自动化完成整个过程。
步骤
1.安装脚本依赖redis-cli(Ubuntu)
(1)安装redis-cli:运行以下命令以安装Redis命令行工具:
sudo apt install redis-tools
(2)验证redis-cli安装:安装完成后,你可以运行以下命令来验证redis-cli是否成功安装:
redis-cli --version
2.脚本详情
(1)脚本支持string、zset、hash 3种数据类型的插入、读取、删除操作
#!/bin/bash
redis="$1"
operation="$2"
iterations="$3"
# Function to write string keys
write_string_keys() {
for i in $(seq 1 "$iterations"); do
key="key_$i"
$redis set "$key" "$key"
done
}
# Function to query string keys
query_string_keys() {
for i in $(seq 1 "$iterations"); do
key="key_$i"
$redis get "$key"
done
}
# Function to clean up string keys
cleanup_string_keys() {
for i in $(seq 1 "$iterations"); do
key="key_$i"
$redis del "$key"
done
}
# Function to write Zset keys
write_zset_keys() {
for i in $(seq 1 "$iterations"); do
zset_name="myzset$i"
for j in $(seq 1 100); do
key="key_$j"
value="$zset_name-value_$j"
$redis zadd "$zset_name" "$j" "$key:$value"
done
done
}
# Function to query Zset keys
query_zset_keys() {
for i in $(seq 1 "$iterations"); do
zset_name="myzset$i"
for j in $(seq 1 100); do
key="key_$j"
value="$zset_name-value_$j"
$redis zscore "$zset_name" "$key:$value"
done
done
}
# Function to clean up Zset keys
cleanup_zset_keys() {
for i in $(seq 1 "$iterations"); do
zset_name="myzset$i"
$redis del "$zset_name"
done
}
# Function to write hash keys
write_hash_keys() {
for i in $(seq 1 "$iterations"); do
hash_name="myhash$i"
for j in $(seq 1 100); do
key="key_$j"
field="field_$j"
value="$hash_name-value_$j"
$redis hset "$hash_name" "$field:$key" "$value"
done
done
}
# Function to query hash keys
query_hash_keys() {
for i in $(seq 1 "$iterations"); do
hash_name="myhash$i"
for j in $(seq 1 100); do
key="key_$j"
field="field_$j"
value="$hash_name-value_$j"
$redis hget "$hash_name" "$field:$key"
done
done
}
# Function to clean up hash keys
cleanup_hash_keys() {
for i in $(seq 1 "$iterations"); do
hash_name="myhash$i"
$redis del "$hash_name"
done
}
# Execute the selected operation
case "$operation" in
"write_string")
write_string_keys
;;
"query_string")
query_string_keys
;;
"cleanup_string")
cleanup_string_keys
;;
"write_zset")
write_zset_keys
;;
"query_zset")
query_zset_keys
;;
"cleanup_zset")
cleanup_zset_keys
;;
"write_hash")
write_hash_keys
;;
"query_hash")
query_hash_keys
;;
"cleanup_hash")
cleanup_hash_keys
;;
*)
echo "Invalid operation. Available options: write_string, query_string, cleanup_string, write_zset, query_zset, cleanup_zset, write_hash, query_hash, cleanup_hash"
exit 1
;;
esac
(2)把上面的脚本保存为linux redis_mock.sh文件
(3)使用命令
自己把“redis-cli -h 127.0.0.1 -p 6379”,放到${host}的位置,然后执行
# redis: redis-cli -h 127.0.0.1 -p 6379
# 写入
sudo sh redis_mock.sh "${host}" write_string 100
sudo sh redis_mock.sh "${host}" write_zset 100
sudo sh redis_mock.sh "${host}" write_hash 100
# 查询
sudo sh redis_mock.sh "${host}" query_string 100
sudo sh redis_mock.sh "${host}" query_zset 100
sudo sh redis_mock.sh "${host}" query_hash 100
# 查询并保存到本地
sudo touch a.txt
sudo chmod 777 a.txt
cat /dev/null > a.txt
sudo sh redis_mock.sh "${host}" query_string 100 | tee a.txt
sudo sh redis_mock.sh "${host}" query_zset 100 | tee a.txt
sudo sh redis_mock.sh "${host}" query_hash 100 | tee a.txt
# 统计本地查询到文件的结果
统计查到的String类型条数:grep -o "key_" a.txt | wc -l
统计查到的hash、zset条数:grep -vE '^$' a.txt | wc -l
# 清理
sudo sh redis_mock.sh "${host}" cleanup_string 100
sudo sh redis_mock.sh "${host}" cleanup_zset 100
sudo sh redis_mock.sh "${host}" cleanup_hash 100
总结
一个临时在linux上对redis生成小批量mock数据的脚本命令,优点是简单自动化,大数据量不推荐。