MySQL - InnoDB memcached Plugin

由于memcached守护程序与MySQL服务器紧密集成以避免网络流量并最大程度地减少延迟,因此您可以在使用此功能的每个MySQL实例上执行此过程。

  1. 准备
    1.1 只支持Linux, Solaris, OS X,其他平台不支持
    1.2 如果使用源码编译 MySQL,需要编译时加参数-DWITH_INNODB_MEMCACHED=ON.
    1.3 必须安装 libevent.

  2. 安装 + 配置
    2.1
    执行脚本

mysql> source MYSQL_HOME/share/innodb_memcached_config.sql

查看

mysql> USE innodb_memcache;
mysql> SHOW TABLES;
+---------------------------+
| Tables_in_innodb_memcache |
+---------------------------+
| cache_policies            |
| config_options            |
| containers                |
+---------------------------+

mysql> USE test;
mysql> SHOW TABLES;
+----------------+
| Tables_in_test |
+----------------+
| demo_test      |
+----------------+

2.2 install plugin

mysql> INSTALL PLUGIN daemon_memcached soname "libmemcached.so";

2.3 确认是否成功setup

telnet localhost 11211
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
get AA
VALUE AA 8 12
HELLO, HELLO
END
set BB 10 0 16
GOODBYE, GOODBYE
STORED

2.4 表中查看

mysql> SELECT * FROM test.demo_test;
  1. 创建新的表,并使用memcache plugin
    3.1 创建新表
mysql> USE test;
mysql> CREATE TABLE city (
       city_id VARCHAR(32),
       name VARCHAR(1024),
       state VARCHAR(1024),
       country VARCHAR(1024),
       flags INT,
       cas BIGINT UNSIGNED, 
       expiry INT,
       primary key(city_id)
       ) ENGINE=InnoDB;

3.2 插入信息到containers

mysql> DESCRIBE innodb_memcache.containers;
+------------------------+--------------+------+-----+---------+-------+
| Field                  | Type         | Null | Key | Default | Extra |
+------------------------+--------------+------+-----+---------+-------+
| name                   | varchar(50)  | NO   | PRI | NULL    |       |
| db_schema              | varchar(250) | NO   |     | NULL    |       |
| db_table               | varchar(250) | NO   |     | NULL    |       |
| key_columns            | varchar(250) | NO   |     | NULL    |       |
| value_columns          | varchar(250) | YES  |     | NULL    |       |
| flags                  | varchar(250) | NO   |     | 0       |       |
| cas_column             | varchar(250) | YES  |     | NULL    |       |
| expire_time_column     | varchar(250) | YES  |     | NULL    |       |
| unique_idx_name_on_key | varchar(250) | NO   |     | NULL    |       |
+------------------------+--------------+------+-----+---------+-------+

mysql> INSERT INTO `innodb_memcache`.`containers` (
       `name`, `db_schema`, `db_table`, `key_columns`, `value_columns`,
       `flags`, `cas_column`, `expire_time_column`, `unique_idx_name_on_key`)
       VALUES ('default', 'test', 'city', 'city_id', 'name|state|country', 
       'flags','cas','expiry','PRIMARY');

3.3 重新启动daemon_memcache

mysql> UNINSTALL PLUGIN daemon_memcached;
mysql> INSTALL PLUGIN daemon_memcached soname "libmemcached.so";

3.4 通过memcache测试

telnet localhost 11211
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
set B 0 0 22
BANGALORE|BANGALORE|IN
STORED

3.5 通过mysql查看表内容

mysql> SELECT * FROM test.city;
+---------+-----------+-----------+---------+-------+------+--------+
| city_id | name      | state     | country | flags | cas  | expiry |
+---------+-----------+-----------+---------+-------+------+--------+
| B       | BANGALORE | BANGALORE | IN      |     0 |    3 |      0 |
+---------+-----------+-----------+---------+-------+------+--------+

3.6 通过SQL向表中插入新的数据

mysql> INSERT INTO city VALUES ('C','CHENNAI','TAMIL NADU','IN', 0, 0 ,0);
mysql> INSERT INTO city VALUES ('D','DELHI','DELHI','IN', 0, 0, 0);
mysql> INSERT INTO city VALUES ('H','HYDERABAD','TELANGANA','IN', 0, 0, 0);
mysql> INSERT INTO city VALUES ('M','MUMBAI','MAHARASHTRA','IN', 0, 0, 0);

3.7 通过memcache查看插入的新数据

get H
VALUE H 0 22
HYDERABAD|TELANGANA|IN
END

发布了213 篇原创文章 · 获赞 7 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/chuckchen1222/article/details/100994280