mysql数据同步到Redis

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
版权声明:本文为博主原创文章,转载请附上博文链接!

上一篇:redis工具类


下一篇:MySql定时备份脚本