mysql触发器(trigger)操作memcache
来源:互联网 发布:eyeone软件 编辑:程序博客网 时间:2024/05/17 22:51
安装遇到的问题: 对memcache的操作一般都是放程序里面去操作的,新增,更新,删除什么的。如果能利用mysql来对memcache进行操作,那就更好,代码端就会简单一点。但是利用mysql来操作memcache,比较适合实现简单的方式。下面说一下安装的过程和遇到的问题,在看安装过程的之前,我觉得应当先看一下,我安装时候所遇到的问题,这样你可以避免掉,少走一点弯路。 一,安装所要的软件 mysql5.1以上版本:http://downloads.mysql.com/archives/ libevent下载:wget http://www.monkey.org/~provos/libevent-1.2.tar.gz libmemcached下载:http://download.tangent.org/ memcached下载:http://www.danga.com/memcached/ memcached_functions_mysql下载:http://download.tangent.org/ 二,mysql的安装 mysql的安装方式有很多,你可以用系统的软件管理包来安装,不同的linux版本,软件管理工具是不一样的。 redhat,centos 有yum,ubuntu 有apt-get ,arch有pacman等。用系统自带的管理工具安装比较简单。如果是自己下载怎么安装的呢,mysql的官方网站提供了三种mysql的安装源码,一种是.rpm的,一种是二进制的,一种是要自己编译的。 1,用rpm来按装 2,二进制包进行安装 二进制包安装有一个缺点,就是要安装到什么地方,都是死的。安装过程中有问题的,查看一下是不是装了glibc,以及版本是不是太低了。 3,源码自己编译 安装遇难问题:安装mysql至少要5.1版本以上的,服务器端,还是客户端都要,装完memcached_functions_mysql后,调用libmemcached模块时会报错的。 [root@BlackGhost sql]# /usr/local/mysql/bin/mysql <install_functions.sql 上面是用mysqld_safe来启动mysql的,也可以用mysql.server来启动,它在/usr/local/mysql/share/mysql下面,你也可以把mysql.server考到开机启动的目录下面,并且重命名为mysqld [root@BlackGhost mysql]# ./mysql.server stop 二,关于libevent和memcached的安装 1.deb Debian 系直接 $ sudo apt-get install memcached 都搞定,不然还需要分别安装libevent与memcached 2.源码安装 wget http://www.monkey.org/~provos/libevent-1.2.tar.gz #下载libevent 1.查看是否已经安装了libevent,一般情况下,装系统的时候libevent就会装进去的。 [root@BlackGhost etc]# ls -al /usr/lib | grep libevent 2.先安装libevent: 第一种方法 第二种方法 用系统自命的软件管理工具,archlinux用pacman,centos用yum ,大便用apt-get等 [root@BlackGhost etc]# pacman -Ss libevent 安装完后在进行第一步,进行测试 3.安装memcached服务器端: 4.启动memcached服务 /usr/local/bin/memcached -d -m 20 -u zhangy -p 11211 -P ./memcached.pid -d #作为守护进程运行 -m#分配20M的内存 -u #用户是zhangy -p #监听端口是12000 -P#进程PID存放的位置 [zhangy@BlackGhost ~]$ ps -e|grep memcache 到此memcached的服务器端已经安装。 三,libmemcached的安装
ERROR 1126 (HY000) at line 1: Can't open shared library 'libmemcached_functions_mysql.so' (errno: 22 /usr/local/mysql/lib/mysql/plugin/libmemcached_functions_mysql.so: undefined symbol: memcached_string_append)
Shutting down MySQL.. SUCCESS!
[root@BlackGhost mysql]# ./mysql.server start
Starting MySQL. SUCCESS!
ls -al /usr/lib | grep libevent
lrwxrwxrwx 1 mysql mysql 21 Mar 25 2009 libevent-1.2.so.1 -> libevent-1.2.so.1.0.3
-rwxr-xr-x 1 mysql mysql 208300 Mar 25 2009 libevent-1.2.so.1.0.3
-rw-r--r-- 1 mysql mysql 268992 Mar 25 2009 libevent.a
-rwxr-xr-x 1 mysql mysql 820 Mar 25 2009 libevent.la
lrwxrwxrwx 1 mysql mysql 21 Mar 25 2009 libevent.so -> libevent-1.2.so.1.0.3
如果显示上面内容说明你已安装了,就可以跳过第二步。
tar zxvf libevent-1.2.tar.gz
cd libevent-1.2
./configure --prefix=/usr
make
make install
core/libevent 1.4.11-1
An event notification library
tar zxvf memcached-1.2.0.tar.gz
cd memcached-1.2.0
./configure --with-libevent=/usr --prefix=/usr/local/memcahced
make
make install
如果有错,请确认一下,local下面有memcahced这个文件夹,以及libevent的安装路径是否正确
17904 ? 00:00:00 memcached
$ ./configure --prefix=/usr/local/libmemcached34 --with-memcached=/usr/bin/memcached
$ sudo make
注意路径不要错了。install_functions.sql定义了一些memcache的操作函数:如下到这儿安装基本上结束,下面我们来测试一下 1.当时我下载的是libmemcached-0.42.tar.gz,安装memcached_functions_mysql过程中遇到这样一个问题 servers.c:263:28: error: 'memcached_st' has no member named 'hosts' 后来我在网上查一下,libmemcached-0.34没有这个问题 2.libmemcached-0.37会遇到 ERROR 1126 (HY000) at line 38: Can't open shared library 'libmemcached_functions_mysql.so' (errno: 0 /usr/local/mysql/lib/plugin/libmemcached_functions_mysql.so: undefined symbol: memcached_string_append) 所以推荐安装ibmemcached-0.34。 3.在安装libmemcached的时候,如果不是默认安装,需要指定memcached安装路径。 四,安装memcached_functions_mysql 别忘了加上--with-libmemcached=/usr/local/libmemcached34不然会报以下错误 checking for mysql_config... /usr/bin/mysql_config 如果是mysql 5.5 mysql插件的目录是/usr/local/mysql/lib/plugin 创建mysql的memcache操作函数 $ mysql < sql/install_functions.sql mysql如果不是默认安装,需要指定路径。 也可以在mysql管理里面运行install_functions.sql的sql脚本。 mysql> source sql/install_functions.sql 五,测试 例子1: 我以前写过一篇:关于memcache的key的管理,徘徊中(http://blog.51yip.com/php/729.html)里面提到对单表进行缓存,可以完全配合这篇文章所说的东西。如果有多表联合查询的话,在用触器就比较麻烦了,还不如放到程序里去执行 引用原文地址: 1.http://blog.51yip.com/cache/76.html 2.http://archive.cnblogs.com/a/2022594/
servers.c:264:28: error: 'memcached_st' has no member named 'hosts'
checking for libmemcached >= 0.17... configure: error: libmemcached not found
+------------------------------+-----+---------------------------------+----------+
| name | ret | dl | type |
+------------------------------+-----+---------------------------------+----------+
| memc_add | 2 | libmemcached_functions_mysql.so | function |
| memc_add_by_key | 2 | libmemcached_functions_mysql.so | function |
| memc_servers_set | 2 | libmemcached_functions_mysql.so | function |
32 rows in set (0.00 sec)
添加trigger,就是向memcache内insert,update,deletel等,参照:
1)memcached_functions_mysql-0.9/sql 目录下的trigger_fun.sql
2)或者文档:http://dev.mysql.com/doc/refman/5.1/en/ha-memcached-interfaces-mysqludf.html
+--------------------------------------------------------------+
| memc_servers_behavior_set('MEMCACHED_BEHAVIOR_NO_BLOCK','1') |
+--------------------------------------------------------------+
| 0 |
+--------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select memc_servers_behavior_set('MEMCACHED_BEHAVIOR_TCP_NODELAY','1');
+-----------------------------------------------------------------+
| memc_servers_behavior_set('MEMCACHED_BEHAVIOR_TCP_NODELAY','1') |
+-----------------------------------------------------------------+
| 0 |
+-----------------------------------------------------------------+
1 row in set (0.00 sec)
数据继续插入到mysql中,报错提示,如果不设置此值,如果memcached失败,mysql需要等到timeout
才可以插入到表中。
+----------------------------+
| memc_get('2') |
+----------------------------+
| xxd79 |
+----------------------------+
1 row in set (0.00 sec)
+----------------------------+
| memc_get('1') |
+----------------------------+
| xxd_new |
1 row in set (0.00 sec)
+----------------------------+
| memc_get('1') |
+----------------------------+
| NULL |
+----------------------------+
1 row in set (0.00 sec)
- mysql触发器(trigger)操作memcache
- Memcache mysql触发器操作memcache
- mysql 触发器 trigger 中断操作 抛出异常
- 【转】mysql-trigger-触发器
- TRIGGER:Mysql触发器
- mysql之触发器trigger
- MYSQL触发器(Trigger)
- mysql 之触发器 trigger
- mysql之触发器trigger
- MySQL触发器 trigger学习
- mysql之触发器trigger
- MySQL触发器trigger
- mysql之触发器trigger
- MySQL数据库触发器(trigger)
- mysql 触发器 trigger
- mysql之触发器trigger
- mysql 触发器trigger
- mysql之触发器trigger
- 在 UIWebView中搜索并高亮度显示文本
- tomcat #{..} is not allowed in template text
- C# join DataTable (support Left/Right/Full join)转贴
- window7安装Oracle10g全过程
- How Relative File Numbers Are Generated. [ID 262384.1]
- mysql触发器(trigger)操作memcache
- 第一个java网络程序,有客户端和服务器端,用socket实现
- 在使用CompareValidator对于日期进行验证的时候,最好多一个对于日期格式的验证
- 第 1 部分: Ajax 入门简介
- 自定义控件CS类中注册JS脚本并调用JS事件
- Paul Graham:未来的互联网创业(上)
- Hibernate学习笔记(3):session的get、load、delete方法和Query的简单使用
- C++ 虚函数表解析
- Paul Graham:未来的互联网创业(下)