HTML5技术

【菜鸟玩Linux开发】通过MySQL自动同步刷新Redis - zhxilin(3)

字号+ 作者:H5之家 来源:H5之家 2016-10-03 16:00 我要评论( )

由于MySQL默认的结束分隔符是分号(;),如果我们在BEGIN...END中出现了分号,将被标记成结束,此时没法完成触发器的定义。有一个办法,可以调用DELIMITER命令来暂时修改结束分隔符,用完再改会分号即可。比如改成$

由于MySQL默认的结束分隔符是分号(;),如果我们在BEGIN...END中出现了分号,将被标记成结束,此时没法完成触发器的定义。有一个办法,可以调用DELIMITER命令来暂时修改结束分隔符,用完再改会分号即可。比如改成$:

mysql> DELIMITER $

我们开始定义一个触发器,监听对Student表的插入操作,Student表在上一篇文章中创建的,可以查看上一篇文章。

mysql > DELIMITER $ tg_student > AFTER INSERT on Student > FOR EACH ROW (, new.Sid), , CAST(new.Sid AS CHAR(8)))); (, new.Sid), , CAST(new.Sname AS CHAR(20)))); (, new.Sid), , CAST(new.Sage AS CHAR))); (, new.Sid), , CAST(new.Sgen AS CHAR))); (, new.Sid), , CAST(new.Sdept AS CHAR(10)))); > END $

创建完触发器可以通过show查看,或者drop删除:

mysql> SHOW TRIGGERS;

mysqltg_student;

接下来我们调用一句插入语句,然后观察Redis和MySQL数据的变化:

mysqlStudent , , , ); Query OK, 1 row affected (0.27 sec)

MySQL的结果:

mysql Student; Sid Lucy F Rose F zhsuiy F daemon M David M zhxilin M rows in set (0.00 sec)

Redis的结果:

127.0.0.1:6379> HGETALL stu_09388165 1) "id" 2) "09388165" 3) "name" 4) "Rose" 5) "age" 6) "19" 7) "gender" 8) "F" 9) "department" 10) "SS3-205"

以上结果表明,当MySQL插入数据时,通过触发器调用UDF,实现了自动刷新Redis的数据。另外,调用MySQL插入的命令,可以通过C++实现,进而就实现了在C++的业务逻辑里,只需调用MySQL++的接口就能实现MySQL数据库和Redis缓存的更新,这部分内容在上一篇文章已经介绍过了。

 

总结

通过实践,能体会到MySQL和Redis是多么相亲相爱吧!^_^

本篇文章讲了从最基础的UDF开始,再到通过UDF连接Redis插入数据,再进一步介绍通过MySQL Trigger自动更新Redis数据的整个思路,实现了一个目标,即只在业务代码中更新MySQL数据库,进而Redis能够自动同步刷新。

MySQL对UDF函数和触发器的支持,使得实现Redis数据和MySQL自动同步成了可能。当然UDF毕竟是通过插件的形式运行在MySQL中的,并没有过多的安全干预,一旦插件发生致命性崩溃,有可能MySQL也会挂,所以在编写UDF的时候需要非常谨慎!

 

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 混合开发的几个框架 - 夜枭

    混合开发的几个框架 - 夜枭

    2016-10-03 15:00

  • 前端开发面试题 - wangwen896

    前端开发面试题 - wangwen896

    2016-10-03 14:00

  • 菜鸟介绍达到什么样的标准才能是大公司要的前端 - wangwen896

    菜鸟介绍达到什么样的标准才能是大公司要的前端 - wangwen896

    2016-10-03 10:00

  • 开发资源总结 (持续整理中) - wangwen896

    开发资源总结 (持续整理中) - wangwen896

    2016-10-02 18:00

网友点评
"