注意,mysql一旦宕机,那么mysql重启后,
记住要连接到memcache, mysql> select memc_servers_set('127.0.0.1:12000');
1、先要配置好memcache
见文章http://test115.blog.163.com/blog/static/2330850420132111232622/
2、接着要配置libmemcached
2199 cd libmemcached
2201 sudo ./configure --with-memcached=/usr/local/bin/memcached --prefix=/usr/local/libmemcached
2204 sudo make
2205 sudo make install
如果报错,apt-get install g++
3、再接着配置memcache function mysql
root@test2007:/home/phpjx/# pwd
/home/phpjx
root@test2007:/home/phpjx# cd memcached_functions_mysql-0.9
root@test2007:/home/phpjx/# pwd
/home/phpjx/memcached_functions_mysql-0.9
sudo ./configure --with-mysql=/usr/local/mysql/bin/mysql_config --with-libmemcached=/usr/local/libmemcached/ --prefix=/usr/local/memcache_mysql
sudo make
sudo make install
sudo cp /usr/local/memcache_mysql/lib/libmemcached_functions* /usr/local/mysql/lib/plugin/
接下来有两个办法让Memcached Functions for MySQL在mysql中生效
在mysql的shell中执行memcached_functions_mysql源码目录下的sql/install_functions.sql,这会把memcache function作为UDF加入mysql
root@test2007:/home/phpjx/# cd memcached_functions_mysql-0.9
root@test2007:/home/phpjx/memcached_functions_mysql-0.9/#cd sql
root@test2007:/home/phpjx/memcached_functions_mysql-0.9/sql/#mysql -uroot -p123456
mysql>source install_functions.sql
ok
运行memcached_functions_mysql源码目录下的utils/install.pl,这是一个perl脚本,作用同上一条
测试memcache function
51 1、连接mysql,使用数据库 mysql -uroot -p后 use databasename
检查安装是否成功
mysql> select name,dl from mysql.func;
+------------------------------+---------------------------------+
| name
| dl |
+------------------------------+---------------------------------+
| memc_add | libmemcached_functions_mysql.so |
| memc_add_by_key | libmemcached_functions_mysql.so |
| memc_servers_set | libmemcached_functions_mysql.so |
| memc_server_count | libmemcached_functions_mysql.so |
| memc_set | libmemcached_functions_mysql.so |
| memc_set_by_key | libmemcached_functions_mysql.so |
| memc_cas | libmemcached_functions_mysql.so |
| memc_cas_by_key | libmemcached_functions_mysql.so |
| memc_get | libmemcached_functions_mysql.so |
| memc_get_by_key | libmemcached_functions_mysql.so |
| memc_delete | libmemcached_functions_mysql.so |
| memc_delete_by_key | libmemcached_functions_mysql.so |
| memc_append | libmemcached_functions_mysql.so |
| memc_append_by_key | libmemcached_functions_mysql.so |
| memc_prepend | libmemcached_functions_mysql.so |
| memc_prepend_by_key | libmemcached_functions_mysql.so |
| memc_increment | libmemcached_functions_mysql.so |
| memc_decrement | libmemcached_functions_mysql.so |
| memc_replace | libmemcached_functions_mysql.so |
| memc_replace_by_key | libmemcached_functions_mysql.so |
| memc_servers_behavior_set | libmemcached_functions_mysql.so |
| memc_servers_behavior_get | libmemcached_functions_mysql.so |
| memc_behavior_set | libmemcached_functions_mysql.so |
| memc_behavior_get | libmemcached_functions_mysql.so |
| memc_list_behaviors | libmemcached_functions_mysql.so |
| memc_list_hash_types | libmemcached_functions_mysql.so |
| memc_list_distribution_types | libmemcached_functions_mysql.so |
| memc_udf_version | libmemcached_functions_mysql.so |
| memc_libmemcached_version | libmemcached_functions_mysql.so |
| memc_stats | libmemcached_functions_mysql.so |
| memc_stat_get_keys | libmemcached_functions_mysql.so |
| memc_stat_get_value | libmemcached_functions_mysql.so |
+------------------------------+---------------------------------+
32 rows in set (0.00 sec)
52 2、建立表 create table userinfo(id int primary key auto_increment,title varchar(50),content text);
53 3、建立触发器
54 create trigger sphinxtrigger before insert on userinfo for each row set @tmp =memc_set(NEW.id, NEW.content,60);
55 4、连接memcache服务器 select memc_servers_set('127.0.0.1:12000');
56 5、添加数据insert into userinfo(id,content) values(9,'nine');
57 6、取值select memc_get(9)为nine
58 7、一分钟后select memc_get(9)为null
59 8、在更新sql的时候也更新memcache
60 create trigger sphinxtriggerupdate before update on userinfo for each row set @tmp = memc_set(NEW.id, NEW.content,60);
61 9、update userinfo set content='nine 9' where id=9;
62 10、执行SQL后再输入select memc_get(9),则输出nine 9
63 11、删除记录时更新memcache
64 create trigger sphinxtriggerremove after delete on userinfo for each row set @tmp = memc_set(OLD.id, 'record has been removed.') ;
65 12、执行SQL,DELETE FROM userinfo WHERE id=9;
66 13、再执行select memc_get(9),会发现输出record has been removed.
67 14、THE END.