【问题标题】:Confusion with new innodb memcached plugin for MYSQL?对 MYSQL 的新 innodb memcached 插件感到困惑?
【发布时间】:2013-06-13 11:17:11
【问题描述】:

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

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

但是我对安装感到困惑:

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

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

提前致谢

【问题讨论】:

    标签: mysql memcached innodb


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 顺便说一句,您还可以同时运行两个 memcached 解决方案。只需让其中一个守护进程监听不同的 UDP/TCP 端口号。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多