用mysql触发器自动更新memcache的实现代码


Posted in PHP onOctober 11, 2009

mysql 5.1支持触发器以及自定义函数接口(UDF)的特性,如果配合libmemcache以及Memcached Functions for MySQL,就能够实现memcache的自动更新。简单记录一下安装测试步骤。

安装步骤

  • 安装memcached,这个步骤很简单,随处可见
  • 安装mysql server 5.1RC,安装办法也很大众,不废话了
  • 编译libmemcached,解压后安装即可
    ./configure; make; make install
  • 编译Memcached Functions for MySQL,在http://download.tangent.org/找一个最新的版本下载就是,
    ./configure --with-mysql=/usr/local/mysql/bin/mysql_config --libdir=/usr/local/mysql/lib/mysql/
    make
    make install
    接下来有两个办法让Memcached Functions for MySQL在mysql中生效

     

  • 在mysql的shell中执行memcached_functions_mysql源码目录下的sql/install_functions.sql,这会把memcache function作为UDF加入mysql
  • 运行memcached_functions_mysql源码目录下的utils/install.pl,这是一个perl脚本,作用同上一条

测试memcache function
以下测试脚本摘自memcached_functions_mysql的源码目录,有兴趣可以试试

drop table if exists urls;
create table urls (
 
id int(3) not null,
 
url varchar(64) not null default '',
 
primary key (id)
 
);
select memc_servers_set('localhost:11211');
select memc_set('urls:sequence', 0);
DELIMITER
DROP TRIGGER IF EXISTS url_mem_insert;
CREATE TRIGGER url_mem_insert
BEFORE INSERT ON urls
FOR EACH ROW BEGIN
    
SET NEW.id= memc_increment('urls:sequence');
    
SET @mm= memc_set(concat('urls:',NEW.id), NEW.url);
END
DELIMITER ;
insert into urls (url) values ('http://google.com');
insert into urls (url) values ('http://www.ooso.net/index.php');
insert into urls (url) values ('http://www.ooso.net/');
insert into urls (url) values ('http://slashdot.org');
insert into urls (url) values ('http://mysql.com');
select * from urls;
select memc_get('urls:1');
select memc_get('urls:2');
select memc_get('urls:3');
select memc_get('urls:4');
select memc_get('urls:5');
PHP 相关文章推荐
微盾PHP脚本加密专家php解密算法
Sep 13 PHP
php array_filter除去数组中的空字符元素
Jun 21 PHP
基于Zend的Config机制的应用分析
May 02 PHP
php实现查看邮件是否已被阅读的方法
Dec 03 PHP
destoon整合UCenter图文教程
Jun 21 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(六)
Jun 23 PHP
PHP正则替换函数preg_replace和preg_replace_callback使用总结
Sep 22 PHP
php实现简单文件下载的方法
Jan 30 PHP
php去除字符串中空字符的常用方法小结
Mar 17 PHP
thinkphp整合微信支付代码分享
Nov 24 PHP
Laravel中log无法写入问题的解决
Jun 17 PHP
thinkphp框架类库扩展操作示例
Nov 26 PHP
基于OpenCV的PHP图像人脸识别技术
Oct 11 #PHP
PHP 身份验证方面的函数
Oct 11 #PHP
使用zend studio for eclipse不能激活代码提示功能的解决办法
Oct 11 #PHP
关于页面优化和伪静态
Oct 11 #PHP
PHP iconv 函数转gb2312的bug解决方法
Oct 11 #PHP
Ha0k 0.3 PHP 网页木马修改版
Oct 11 #PHP
PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
Oct 11 #PHP
You might like
PHP中执行MYSQL事务解决数据写入不完整等情况
2014/01/07 PHP
从PHP的源码中深入了解stdClass类
2014/04/18 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
js wmp操作代码小结(音乐连播功能)
2008/11/08 Javascript
Mootools 1.2教程 滚动条(Slider)
2009/09/15 Javascript
JQuery动态创建DOM、表单元素的实现代码
2011/08/09 Javascript
原生js实现查找/添加/删除/指定元素的class
2013/04/12 Javascript
JavaScript语言核心数据类型和变量使用介绍
2013/08/23 Javascript
用unescape反编码得出汉字示例
2014/04/24 Javascript
JavaScript汉诺塔问题解决方法
2015/04/21 Javascript
jQuery基于函数重载实现自定义Alert函数样式的方法
2016/07/27 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(一)之数据支持json字符串、list集合
2016/08/11 Javascript
JS+CSS3制作炫酷的弹窗效果
2016/11/08 Javascript
js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解
2019/01/19 Javascript
解决vue中的无限循环问题
2020/07/27 Javascript
[07:57]2018DOTA2国际邀请赛寻真——PSG.LGD凤凰浴火
2018/08/12 DOTA
[01:00:10]完美世界DOTA2联赛PWL S2 FTD vs Inki 第二场 11.21
2020/11/24 DOTA
python写的ARP攻击代码实例
2014/06/04 Python
Python实现TCP协议下的端口映射功能的脚本程序示例
2016/06/14 Python
Python实现自动登录百度空间的方法
2017/06/10 Python
Python实现excel转sqlite的方法
2017/07/17 Python
python实现人脸识别代码
2017/11/08 Python
python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解
2017/11/24 Python
Python实现对字典分别按键(key)和值(value)进行排序的方法分析
2018/12/19 Python
Python生成MD5值的两种方法实例分析
2019/04/26 Python
python3.8.1+selenium实现登录滑块验证功能
2020/05/22 Python
教你如何用python操作摄像头以及对视频流的处理
2020/10/12 Python
python实现录音功能(可随时停止录音)
2020/10/26 Python
python制作抽奖程序代码详解
2021/01/15 Python
Html5 实现微信分享及自定义内容的流程
2019/08/20 HTML / CSS
HTML5不支持frameset的两种解决方法
2016/11/14 HTML / CSS
德国帽子专家:Hutshopping
2019/11/03 全球购物
爱心捐款倡议书范文
2014/05/12 职场文书
python爬虫请求库httpx和parsel解析库的使用测评
2021/05/10 Python
Redis字典实现、Hash键冲突及渐进式rehash详解
2021/09/04 Redis
豆瓣2021评分最高动画剧集-豆瓣评分最高的动画剧集2021
2022/03/18 日漫