shell实现redis数据同步mysql|shell|redis|mysql|crontab

#!/bin/bash
client="/usr/redis/redis-cli"
host="10.10.28.10"
port="6379"
left=0
offset=10
split=","
colon=":"
key="queue"


mysql="/usr/bin/mysql"
user="root"
pass="123"
data="test"
table="loginLog"


LLEN=$($client -h $host -p $port LLEN $key)
if [ $LLEN -gt $offset ]
then
	BEGIN=$(($LLEN - $offset))
	LRANGE=$($client -h $host -p $port LRANGE $key $BEGIN $LLEN)
else
	echo "This data of [$key] not long enough with offset[$offset]"
	exit
fi

#==========================================================================================================#
function parseStringJson() {
	result=$(echo ${1} | sed 's/\"//g')
	string=${result#\{}
	string=${string%\}}
	echo $string
}

function someStringCount() {
	string=${1}
	split=${2}
	length=${#string}
	for((i = 0; i < $length; i ++))
	do
		str=${string:$i:1}
		if [ $str = $split ]
		then
			j=$(($j+1))
		fi
	done
	echo $j
}
function createMysql() {
	string=${1}
	count=${2}
	flag=${3}
	length=$(($count + 2))
	if [ $flag = true ]
	then
		for((i = 1; i < $length; i ++))
		do
			result=$(echo $string | cut -d $split -f $i)
			name=$(echo $result | cut -d $colon -f 1)
			echo "\`$name\`,"
		done
		exit
	fi
	for((i = 1; i < $length; i ++))
	do
		result=$(echo $string | cut -d $split -f $i)
		value=$(echo $result | cut -d $colon -f 2)
		echo "\"$value\","
	done
}

function parseSql() {
	ARR=($@)
	for val in ${ARR[@]}
	do
		echo $val
	done
}
#==========================================================================================================#

while [ $left -lt $offset ]
do
	left=$(($left + 1))
	result=$(echo $LRANGE | cut -d " " -f $left)
	parseJson=$(parseStringJson $result)
	someCount=$(someStringCount $parseJson $split)
	sql=$(createMysql $parseJson $someCount false)
	sql=${sql%\,}
	sql="($sql),"
        ARR[$left]=$sql
	sql=$(parseSql ${ARR[@]})
done
name=$(createMysql $parseJson $someCount true)
name=${name%\,}
sql=${sql%\,}
last="use $data;INSERT INTO $table($name)VALUE$sql"
echo $last
query=$($mysql -h$host -u$user -p$pass -e"$last") 
echo $query

echo $($client -h $host -p $port LTRIM $key 0 $[$BEGIN - 1])

 

转载于:https://my.oschina.net/andyhua/blog/783793

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值