我正在尝试在启用memcached插件的情况下设置MySQL 5.6。我按照mysql website上的程序和我在网上找到的其他几个教程2,3进行了操作。具体来说,根据2,设置和测试应该非常简单。
我正在尝试使用telnet验证设置是否按预期工作。当我从telnet设置密钥的值时,我得到STORED的返回状态。我甚至可以从memcache中立即获取值。但是,当我登录数据库时,我没有看到新行。我也没有在日志中看到任何错误。 “show plugins”显示已启用daemon_memcached插件。
[被修改]
实际上,事情甚至没有其他方式。我在demo_test表中添加了一个新行,并尝试通过memcache接口获取它。这也不起作用。
有关如何识别错误的任何指示?
答案 0 :(得分:0)
MySQL中的memcache集成直接与InnoDB存储引擎通信,而不是更高级的MySQL“服务器层”。因此,通过此接口对表数据的更改不会使针对已存储在查询缓存中的表的查询无效。这与通过SQL接口的正常操作形成对比,对于表的数据的任何更改将立即驱逐查询缓存中针对该表的查询保留的任何和所有结果,而不考虑是否实际更改表数据使受影响的每个特定查询无效。
重复您的查询,但使用SELECT
而不是SELECT SQL_NO_CACHE
。如果你得到了你期望的结果,这就是解释。
一旦确定这是原因,您会发现对表执行插入,删除或更新的任何SQL查询也会使memcache更改的数据对SELECT
可见查询,无需添加SQL_NO_CACHE
指令,即使插入,删除或更新不直接影响有问题的行,这也将成立,只要它修改即可有问题的表中的内容。
答案 1 :(得分:0)
咄!!在端口11211上已经有一个memcached实例运行。不幸的是,mysql在这种情况下不会出错。当我使用telnet连接到端口11211时,我到达了现有的memcached实例。它存储/检索它已经看到但未与MySQL通信的值。
我停止了现有的memcached实例并重新启动了mysql。我现在能够连接到端口11211.使用telnet,当我执行“get”时,我从db获取值。此外,当我从telnet设置新值时,它们会反映在数据库中(并且可以使用SQL检索)。