UDF是User Defined Function的缩写,指 Mysql 的用户定义函数,应用可以通过使用这些函数从 Mysql5.0 以上版本的数据库中访问 Memcached 服务以写入或者获得数据。此外,从 Mysql5.1 开始支持触发器,这样就可以在触发器中使用 UDF 直接更新 Memcached 的内容,减轻了应用程序设计和编写的复杂性。下面我们简要介绍 UDF 的安装和使用。
cd libmemcached ./configure make make installmemcached_functions_mysql 安装的时候需要指定 Mysql 服务的路径,其他并没有什么特别的地方:
cd memcached_functions_mysql ./configure --with-mysql=/usr/local/mysql/bin/mysql_config make make install安装过程中根据安装版本和一些依赖库版本的不同会报一些错误,上网查查很容易解决。
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中相应的数据,降低应用程序的复杂性。