4

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

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

但是我对安装感到困惑:

  • 既然我已经安装了 memcached,我应该卸载它然后安装 innodb 插件版本吗?(在我的情况下,这是通过 yum 安装的)
  • 如果是这样,我的应用程序是否可以正常运行并且仍然以通常的方式缓存查询?还是这一切都会失效?
  • 我应该将它与标准版本一起安装并在单独的端口上运行吗?如果是这样,我将如何处理?

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

提前致谢

4

2 回答 2

2

一如既往,答案是“视情况而定”。

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

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

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

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

于 2013-08-21T21:27:50.667 回答
0

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

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

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

于 2014-01-24T17:22:46.220 回答