MySQL 5.6 開始支援 InnoDB memcached
安裝 MySQL,從官網下載的
MySQL-server-5.6.25-1.el6.x86_64.rpm MySQL-client-5.6.25-1.el6.x86_64.rpm MySQL-devel-5.6.25-1.el6.x86_64.rpm MySQL-shared-5.6.25-1.el6.x86_64.rpm MySQL-shared-compat-5.6.25-1.el6.x86_64.rpm MySQL-test-5.6.25-1.el6.x86_64.rpm
啟動 MySQL
mysql_install_db --user=mysql service mysql start
匯入 innodb memcached 設定
mysql < /usr/share/mysql/innodb_memcached_config.sql
這個動作會建立 innodb_memcache 資料庫,及 test 資料庫的 TABLE demo_test
innodb_memcache 裡有個 TABLE containers,是結合 資料庫 與 memcache 的設定
意思就是我們建立的資料庫 test,裡面的TABLE demo_test,要在 memcached 裡使用就要設定關連在 innodb_memcache 的 containers 裡
比如說建立一個資料庫
mysql> CREATE TABLE `test`.`users` ( `user_id` varchar(32) NOT NULL DEFAULT '', `first` varchar(100) DEFAULT NULL, `last` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB;
就要另外 INSERT 資料進 innobd_memcahce 的 containers 裡面
INSERT INTO `containers` (`name`, `db_schema`, `db_table`, `key_columns`, `value_columns`, `unique_idx_name_on_key`) VALUES ('default', 'test', 'users', 'user_id', 'first|last', 'PRIMARY');
再來啟動 memcached,這邊不用 service memcached start,因為 install plugin 時就會 listen memcahced 11211 了
mysql> INSTALL PLUGIN daemon_memcached SONAME 'libmemcached.so';
訊息
mysql> SHOW PLUGINS;
| daemon_memcached | ACTIVE | DAEMON | libmemcached.so | GPL |
反安裝
mysql> UNINSTALL PLUGIN daemon_memcached;
測試
telnet localhost 11211 set foo 0 0 14 # set 告訴 memcached 我們要存值,foo 是 key,第一個 0 是flags,第二個0是 expiration TTL,14是字串長度 Jarvis|Badgley # 這個是 value # 就會 STORED
再來取值
telnet localhost 11211 get foo
就會得到
VALUE foo 0 14 Jarvis|Badgley END
我們來透過 memcached 取現在資料庫 test.demo_test 裡面的值
telnet localhost 11211 get @@aaa.AA
上面的 aaa 是 innodb_memcache 的 containers.name 裡的值,AA 是 test 的 demo_test.c1 裡的值,因為在 containers 裡有對應是誰,所以 @@aaa.AA 就可以取到我們要的結果了
得到
VALUE @@aaa.AA 8 12 HELLO, HELLO END
另一個取法
telnet localhost 11211 get @aaa get AA
使用 php,我重新編譯 5.6 版本,再加上 memcached
<?php $mem = new Memcached(); $mem->addServer("127.0.0.1", 11211); $result = $mem->get("foo"); echo $result;
參考
- http://chipersoft.com/p/MySQL-via-Memcache/
- http://imysql.com/2013/08/15/innodb-memcached-vs-native-memcached-benchmark.shtml
- http://huoding.com/2013/08/20/279
- http://imysql.com/2013/08/15/innodb-memcached-vs-native-memcached-benchmark.shtml
- http://www.oschina.net/translate/mysql-5-7-innodb-memcached-plugins
- http://www.farmer.idv.tw/?viewDoc=591
留言