Home >Database >Mysql Tutorial >用mysql触发器自动更新memcache

用mysql触发器自动更新memcache

WBOY
WBOYOriginal
2016-06-07 15:03:071029browse

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

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

安装步骤

  • 安装memcached,这个步骤很简单,随处可见
  • 安装mysql server 5.1RC,安装办法也很大众,不废话了
  • 编译libmemcached,解压后安装即可
    <code><span>./</span><span>configure</span><span>;</span><span> make</span><span>;</span><span> make install</span></code>
  • 编译Memcached Functions for MySQL,在http://download.tangent.org/找一个最新的版本下载就是,
    <code><span>.</span><span>/configure --with-mysql=/</span><span>usr</span><span>/</span><span>local</span><span>/</span><span>mysql</span><span>/</span><span>bin</span><span>/</span><span>mysql_config </span><span>--</span><span>libdir</span><span>=</span><span>/usr/</span><span>local</span><span>/</span><span>mysql</span><span>/</span><span>lib</span><span>/</span><span>mysql</span><span>/</span><span>
    make
    make install</span></code>
  • 接下来有两个办法让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的源码目录,有兴趣可以试试

<code><span>drop table </span><span>if</span><span> exists urls</span><span>;</span><span>
create table urls </span><span>(</span><span>
  id </span><span>int</span><span>(</span><span>3</span><span>)</span><span>not</span><span>null</span><span>,</span><span>
  url varchar</span><span>(</span><span>64</span><span>)</span><span>not</span><span>null</span><span>default</span><span>''</span><span>,</span><span>
  primary key </span><span>(</span><span>id</span><span>)</span><span>);</span><span>select</span><span> memc_servers_set</span><span>(</span><span>'localhost:11211'</span><span>);</span><span>select</span><span> memc_set</span><span>(</span><span>'urls:sequence'</span><span>,</span><span>0</span><span>);</span><span>

DELIMITER </span><span>|</span><span>

DROP TRIGGER IF EXISTS url_mem_insert</span><span>;</span><span>
CREATE TRIGGER url_mem_insert
BEFORE INSERT ON urls
FOR EACH ROW </span><span>BEGIN</span><span>
    SET NEW</span><span>.</span><span>id</span><span>=</span><span> memc_increment</span><span>(</span><span>'urls:sequence'</span><span>);</span><span>
    SET </span><span>@mm</span><span>=</span><span> memc_set</span><span>(</span><span>concat</span><span>(</span><span>'urls:'</span><span>,</span><span>NEW</span><span>.</span><span>id</span><span>),</span><span> NEW</span><span>.</span><span>url</span><span>);</span><span>END</span><span>|</span><span>

DELIMITER </span><span>;</span><span>

insert </span><span>into</span><span> urls </span><span>(</span><span>url</span><span>)</span><span> values </span><span>(</span><span>'http://google.com'</span><span>);</span><span>
insert </span><span>into</span><span> urls </span><span>(</span><span>url</span><span>)</span><span> values </span><span>(</span><span>'http://www.ooso.net/index.php'</span><span>);</span><span>
insert </span><span>into</span><span> urls </span><span>(</span><span>url</span><span>)</span><span> values </span><span>(</span><span>'http://www.ooso.net/'</span><span>);</span><span>
insert </span><span>into</span><span> urls </span><span>(</span><span>url</span><span>)</span><span> values </span><span>(</span><span>'http://slashdot.org'</span><span>);</span><span>
insert </span><span>into</span><span> urls </span><span>(</span><span>url</span><span>)</span><span> values </span><span>(</span><span>'http://mysql.com'</span><span>);</span><span>select</span><span>*</span><span>from</span><span> urls</span><span>;</span><span>select</span><span> memc_get</span><span>(</span><span>'urls:1'</span><span>);</span><span>select</span><span> memc_get</span><span>(</span><span>'urls:2'</span><span>);</span><span>select</span><span> memc_get</span><span>(</span><span>'urls:3'</span><span>);</span><span>select</span><span> memc_get</span><span>(</span><span>'urls:4'</span><span>);</span><span>select</span><span> memc_get</span><span>(</span><span>'urls:5'</span><span>);</span></code>

作者: Volcano 发表于July 9, 2008 at 2:41 pm

版权信息: 和作者信息及此声明

永久链接 - http://www.ooso.net/archives/436


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn