linux自动化运维之linux脚本自动操作redis数据

前言

在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数据的脚本命令,优点是简单自动化,大数据量不推荐。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值