使用MySQL UDF更新memcache缓存

MySql UDF介绍

UDF是User Defined Function的缩写,指 Mysql 的用户定义函数,应用可以通过使用这些函数从 Mysql5.0 以上版本的数据库中访问 Memcached 服务以写入或者获得数据。此外,从 Mysql5.1 开始支持触发器,这样就可以在触发器中使用 UDF 直接更新 Memcached 的内容,减轻了应用程序设计和编写的复杂性。下面我们简要介绍 UDF 的安装和使用。

UDF安装

UDF 的安装,需要在数据库服务器上安装两个包,分别是 libmemcached 和 memcached_functions_mysql ,都可以从  [url]http://download.tangent.org/[/url] 下载。
Libmemcached 包的安装比较简单,只要从网上下载最新的包解压后安装即可:
cd libmemcached
./configure
make
make install
memcached_functions_mysql 安装的时候需要指定 Mysql 服务的路径,其他并没有什么特别的地方:
cd memcached_functions_mysql
./configure --with-mysql=/usr/local/mysql/bin/mysql_config
make
make install
安装过程中根据安装版本和一些依赖库版本的不同会报一些错误,上网查查很容易解决。
安装完成之后,需要将 libmemcached_functions_mysql 的库文件拷贝到 mysql/lib 目录下的 plugin 目录中。
cp /usr/local/lib/libmemcached_functions_mysql* /usr/local/mysql/lib/plugin/.
首次使用的时候,需要使用 CREATE FUNCTION 来初始化用户定义函数。有两种方法可以初始化所有提供的用户定义函数,一个是执行 memcached_functions_mysql/sql 目录下的 install_functions.sql ;另一个是执行 memcached_functions_mysql/utils/install.pl 。

测试

查看所有memcached_functions_mysql的方法:

select * from mysql.func;
创建好函数之后,就可以使用这些函数进行 Memcached 的操作,首先需要在mysql中定义 Memcached 服务器:
SELECT memc_servers_set('192.168.0.1:11211');
下面通过创建了一个表来介绍通过触发器更新 Memcached 的简要步骤:
创建测试表:
create table test(
id int(3) not null,
name varchar(64) not null default '',
primary key (id)
);

给自增变量赋初值:

select memc_set('id:sequence', 0);
在测试表上创建 insert 触发器:

CREATE TRIGGER test_insert
BEFORE INSERT ON test
FOR EACH ROW BEGIN
SET NEW.id= memc_increment('id:sequence');
SET @mm= memc_set(concat('id:',NEW.id), NEW.name);
END;

插入记录:

insert into test (name) values ('memcached');
insert into test (name) values ('test');
insert into test (name) values ('mysql');
访问 Memcached 可以得到已经通过触发器写入缓存的记录:

select memc_get('id:1');
select memc_get('id:2');
select memc_get('id:3');
通过测试结果发现memcache中的数据自动更新了,这样便可以通过UDF和触发器当数据库更新时自动去更新memcache中相应的数据,降低应用程序的复杂性。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值