mysql数据同步到Redis,同时设置过期时间
一、redis协议
*<args><cr><lf> 参数个数
$<len><cr><lf> 第一个参数长度
<arg0><cr><lf> 第一个参数
$<len><cr><lf> 第二个参数长度
<arg1><cr><lf> 第二个参数
......
二、mysqlToRedis_ad_info.sql
SELECT CONCAT(
"*8\r\n",
'$', LENGTH(redis_cmd), '\r\n',
redis_cmd, '\r\n',
'$', LENGTH(redis_key), '\r\n',
redis_key, '\r\n',
'$', LENGTH(hkey1), '\r\n',
hkey1, '\r\n',
'$', LENGTH(hval1), '\r\n',
hval1, '\r\n',
'$', LENGTH(hkey2), '\r\n',
hkey2, '\r\n',
'$', LENGTH(hval2), '\r\n',
hval2, '\r\n',
'$', LENGTH(hkey3), '\r\n',
hkey3, '\r\n',
'$', LENGTH(hval3), '\r\n',
hval3, '\r'
),
CONCAT(
"*3\r\n",
'$', LENGTH(redis_cmd_expire), '\r\n',
redis_cmd_expire, '\r\n',
'$', LENGTH(redis_key), '\r\n',
redis_key, '\r\n',
'$', LENGTH(expire_time), '\r\n',
expire_time, '\r'
)
FROM (
SELECT
'HMSET' AS redis_cmd,
CONCAT('1_',id) AS redis_key,
'title' AS hkey1, title AS hval1,
'product_url' AS hkey2, product_url AS hval2,
'pic_url' AS hkey3, pic_url AS hval3,
'EXPIRE' AS redis_cmd_expire,
'604800' AS expire_time
FROM ad_info
WHERE STATUS = 1
) AS t
三、创建shell脚本 mysqlToRedis_ad_info.sh
mysql -h ip -uroot -p密码 -D数据库名 --default-character-set=utf8 --skip-column-names --raw < ./mysqlToRedis_ad_info.sql | redis-cli -h ip -p 端口 -a 密码 --pipe > temp.log
–raw: 使mysql不转换字段值中的换行符。
–skip-column-names: 使mysql输出的每行中不包含列名。
四、直接测试:
echo -en '*4\r\n$5\r\nHMSET\r\n$3\r\n1_1\r\n$5\r\ntitle\r\n$81\r\n夏天有领短袖T恤男 夏季纯棉翻领大码青年男装商务polo衫潮男\r\n' | redis-cli -h ip -p 端口 -a 密码 --pipe
---------------------
作者:middle11
来源:CSDN
原文:https://blog.csdn.net/fhm6100411074/article/details/80929838
版权声明:本文为博主原创文章,转载请附上博文链接!