设为首页 收藏本站
查看: 924|回复: 0

[经验分享] MySQL触发器自动更新memcache[转]

[复制链接]

尚未签到

发表于 2015-8-31 08:28:31 | 显示全部楼层 |阅读模式
  今天看了MYSQL官方网站,发现这个UDFs,UDFs 是 User Defined Functions 的缩写,指 Mysql 的用户定义函数,应用可以通过使用这些函数从 Mysql5.0 以上版本的数据库中访问 Memcached 写入或者获得数据。此外,从 Mysql5.1 开始支持触发器,这样就可以在触发器中使用 UDFs 直接更新 Memcached 的内容,减轻了应用程序设计和编写的复杂性。下面我们简要介绍 UDFs 的安装和使用:
  1、安装Libmemcached(memcached的客户端C API)
  下载地址:http://download.tangent.org/
       # ./configure –prefix=/usr  && make && make install
       注意:请安装在/usr下,不然后面安装memcached_functions_mysql的时候找不到,还要指定PKG_CONFIG_PATH,麻烦。
  2、安装memcached_functions_mysql
  下载地址:http://download.tangent.org/
  # ./configure –with-mysql=/usr/local/mysql/bin/mysql_config
      安装完成之后,需要将 libmemcached_functions_mysql 的库文件拷贝到 mysql/lib 目录下的 plugin 目录中。
  # cp /usr/local/lib/libmemcached_functions_mysql* /usr/local/mysql/lib/plugin/.
      # shell> mysql <sql/install_functions.sql
  3、触发器实现
  定义memcached服务器
  mysql> SELECT memc_servers_set(’192.168.0.1:11211,192.168.0.2:11211&prime;);
  创建测试表:
  mysql> create table test3 (
     -> id int(3) not null,
        -> name varchar(64) not null default ”,
        -> primary key (id)
        -> );
    创建触发器
  mysql>DELIMITER |
      ->CREATE TRIGGER test3_insert
      ->BEFORE INSERT ON test3
      ->FOR EACH ROW BEGIN
      ->SET @mm = memc_set(concat(’id:’,NEW.id), NEW.name);
      ->END |
  可以参见官方网站:http://dev.mysql.com/doc/refman/5.1/en/ha-memcached-interfaces-mysqludf.html
  后记:我觉得它的应用场景应该是写操作不太频繁,但查询量非常大的网站,memcache不超时的缓存数据库的数据,当数据库发生更改的时候,利用mysql的insert,update,delete触发器来更改memcached服务器的数据。但mysql的操作数据类型不支持数组,memc_set应该也不支持对象或者数组等数据类型。实现起来有点难度。
续记:MYSQL UDF OF JSON
  基于以上的试用感想,我认为应该有UDF可以将数据行转成json格式的数据,这样就真的可以实现前端不用访问数据库的想法了,GOOGLE真是个好东西,google后还真找到了:UDF Repository for MySQL,外国人真是有开源精神:),这是一个MYSQL UDF库的网站,我在里面找到for json的udf。
  下载地址:http://www.mysqludf.org/lib_mysqludf_json/lib_mysqludf_json_0.0.2.tar.gz
安装:
# mkdir udf_of_json
# cd udf_of_json
# wget http://www.mysqludf.org/lib_mysqludf_json/lib_mysqludf_json_0.0.2.tar.gz
# tar zxvf lib_mysqludf_json_0.0.2.tar.gz
# cp ./lib_mysqludf_json.so /usr/local/mysql/lib/plugin/.
# mysql -u root
mysql> source ./ lib_mysqludf_json.sql
  测试:
DELIMITER ||
CREATE TRIGGER user_insert
AFTER INSERT ON users
FOR EACH ROW BEGIN
SELECT json_array(username,user_type,real_name,password,active,last_login,description) into @user_info FROM users where user_id=NEW.user_id;
SET @mm= memc_set(concat(’user_info_’,NEW.user_id), @user_info);
END ||
  它还支持中文真是让人很欣喜,但不支持多行集,如果我用存储过程或者自定义函数自己写一个呢。研究中。。。。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-106537-1-1.html 上篇帖子: Memcache 协议 (译) 下篇帖子: 设计memcache的部署结构
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表