文档章节

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

s阿飞
 s阿飞
发布于 2016/11/08 14:56
字数 297
阅读 141
收藏 2
#!/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])

 

© 著作权归作者所有

s阿飞

s阿飞

粉丝 13
博文 27
码字总数 4395
作品 0
成都
程序员
私信 提问
centos7 ansible yum安装web软件

一、网站拓扑 ansible主机inventory的情况: # cat ansible_inventory.txt [front] 10.11.7.224 ansibleconnection=ssh ansiblesshuser=root ansiblessh_pass=xuAK 10.11.5.209 ansibleconn......

youkoudiancom
2017/04/15
0
0
Yii2 redis同步数据到mysql

将redis数据写入mysql中: 本次案例讲解将如何将商城中商品浏览次数通过缓存记录并写入mysql中 具体的redis安装过程暂且就省略了..... 一、安装redis插件|配置redis composer require yiisof...

botkenni
2018/05/03
106
0
Redis 基础梳理以及其在渗透测试中的利用

0X01 简介 我们知道 NOSQL 和 MYSQL 的差距还是非常大的,他不再是关系型数据库(也就是说他不在存在表这种东西),那他是什么呢?实际上它是以键值对的形式存放数据的,很像 json 的形式,并且...

小刀爱编程
2018/11/09
18
0
linux定时备份mysql并同步到其它服务器

数据在任何一家公司里面都是最核心的资产,定期备份则是为了保证数据库出现问题的时候能够及时回滚到最近的备份点,将损失缩小到最小 这篇文章将会两部分来说明:1、mysql的定期备份;2、同步...

纯洁的微笑
2016/09/30
237
0
安装redis和phpredis模块

安装redis shell> wget http://redis.googlecode.com/files/redis-2.0.4.tar.gz shell> tar zxvf redis-2.0.4.tar.gz shell> mv redis-2.0.4 redis shell> cd redis shell> make shell> redi......

老牛
2011/03/14
7.4K
0

没有更多内容

加载失败,请刷新页面

加载更多

PhotoShop 色调:理解直方图/RGB通道信息

一、直方图:图表的形式,展示图像像素分布的情况 1.平均值:表示平均亮度 2.标准偏差值:表示亮度值范围内的中间值 3.像素: 表示用于计算直方图的像素总数 4.色阶:显示指针下面的区域亮度...

东方墨天
22分钟前
5
0
wildfly(JBoss AS)应用服务器快速入门

什么是wildfly JBoss AS 从8版本起名为wildfly。Wildfly是一个开源的基于JavaEE的轻量级应用服务器。可以在任何商业应用中免费使用。 WildFly是一个灵活的、轻量的、强大管理能力的应用程序服...

程序新视界
47分钟前
4
0
Java集合类常见面试知识点总结

Java集合类学习总结 这篇总结是基于之前博客内容的一个整理和回顾。 这里先简单地总结一下,更多详细内容请参考我的专栏:深入浅出Java核心技术 https://blog.csdn.net/column/details/21930...

Java技术江湖
50分钟前
6
0
怎么用for循环打出爱心

先上效果图: 这是用*组成的爱心,下面讲讲思路: 首先这个图形可以拆分成三部分:第一部分是上面三行的两个梯形,第二部分是中间三行的长方形,第三部分是最下面的倒三角形。 其实图形拆分好...

INEVITABLE
56分钟前
4
0
用HttpUrlConnection伪造成HttpClient

https://www.jianshu.com/p/27ad06cc39d2

shzwork
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部