全部博文(389)
分类: Mysql/postgreSQL
2014-08-03 22:39:22
mysql和memcached集成
mysql 5.6以后的版本提供了一个memcached的plugin,通过memcached plugin
应用程序可以直接通过memcached协议来对innodb表进行操作,绕开了sql层的处理.
而mysql可以为memcached提供持久化,且mysql复制支持 memcached,结合两种软件的长处,
带好的优点是显而易见的.
首先执行sql,主要创建了containers,cache_policies和config_options三个表
mysql> source /usr/local/mysql/share/innodb_memcached_config.sql;
Query OK, 1 row affected (0.00 sec)
安装plugin
mysql> install plugin daemon_memcached soname "libmemcached.so";
Query OK, 0 rows affected (0.01 sec)
检查plugin是否安装成功,端口是否打开
mysql> show plugins;
................................
| daemon_memcached | ACTIVE | DAEMON | libmemcached.so | GPL |
+-----------------------------+----------+--------------------+-----------------+---------+
47 rows in set (0.01 sec)
[root@cscscslocalhost share]# netstat -nltp | grep mysqld
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 30957/mysqld
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 30957/mysqld --memcached端口.
测试一下,在test的schema创建表test1
mysql> create table test1(
-> a varchar(100) not null,
-> b varchar(100) not null,
-> c varchar(100) not null,
-> flag int,
-> cas_column int,
-> expire_time int,
-> primary key(a));
Query OK, 0 rows affected (0.01 sec)
如果表要支持memcached的读取,需要增加三列,这点很不方便.
mysql> insert into containers values('c','test','test2','a','b|c','flag','cas_column','expire_time','PRIMARY');
Query OK, 1 row affected (0.00 sec)
把能让memcached操作的表配置信息存放到containers表中 。
在test1表中insert 一行数据.
mysql> insert into test.test2 values('b','df','cd',0,0,0);
Query OK, 1 row affected (0.01 sec)
通过memcached来get刚才用sql存入的数据
[root@cscscslocalhost share]# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
get @@c.b
END
get @@c.b
VALUE @@c.b 0 5
df|cd
END