与MYSQL的新innodb memcached插件混淆?

时间:2013-06-13 11:17:11

标签: mysql memcached innodb

我已经将memcached以传统方式与memcache php扩展一起运行,我的应用程序设置为在预期时缓存查询。

我现在正在运行MySQL 5.6,并希望测试新的innodb_memcached插件,以便对我数据库中的某些表进行快速NoSQL样式键值访问。

但是我对安装感到困惑:

  • 由于我已经安装了memcached,我应该卸载它然后安装innodb插件版本吗? (这是我通过yum安装的)
  • 如果是这样,我的应用程序是否会正常运行并仍以常规方式缓存查询?或者所有这些都会失效吗?
  • 我应该将它与标准版本一起安装并在单独的端口上运行吗?如果是这样,我该怎么做?

基本上我只想提一些关于此安装的建议。我希望它是一个简单的卸载和替换,其他一切都像以前一样运行。

提前致谢

2 个答案:

答案 0 :(得分:2)

一如既往,答案是“它取决于”。

您可以使用memcached插件作为现有标准memcached服务器的完全替代品。您只需要通过在innodb_memcache.containers表中插入一行来告诉插件您要使用哪个表来存储缓存数据。在这种情况下,您可能会为缓存创建一个全新的表。在这种情况下,您的应用程序和现有数据库保持不变。好处是你现在拥有一个持久的memcached,其空间与你的数据库一样多(而不是受memcached服务器上RAM的限制)

但是,您还可以采用另一种方法,在该方法中,您只能通过Memcached协议访问实际的MySQL数据。在此方案中,您将从应用程序中完全删除SQL交互,并仅使用memcached客户端添加/删除/更新数据。显然,这可能适用于您的特定用例,也可能不适用,但如果您可以将其删除,那么它可以通过一次性缓存和永久存储简化您的应用程序。

要使用第二种方法,您需要再次配置innodb_memcache.containers表以正确映射到目标表。您甚至可以通过相同的memcached接口公开多个表,只需在此表中添加更多行,并在键前添加@@identifier.

例如:@@users.1234将使用users容器(映射到表XYZ)并使用1234作为缓存密钥)

答案 1 :(得分:0)

作为上一个答案的补充,请查看标准文档以了解逐步配置: http://dev.mysql.com/doc/refman/5.6/en/innodb-memcached-setup.html

基本上你可以选择配置它的端口(innodb memcached插件) 它作为MySQL服务器的一部分运行(但memcached端口与标准MySQL端口不同)。

是的,可以选择作为标准memcached的替换,或者作为memcached本身的持久层(在这种情况下,需要进行额外的编程以保持主memcached)。