php – 使用MYsql 5.6 Memcache
我想我必须遗漏一些非常明显的东西,但我想要做的是使用
MySQL 5.6并通过memcache返回值
所以我设置了MYSQL来使用memcache插件,在innodb_memcache.containers表中设置细节 我现在在该表中有两个项目,MySQL输入的默认项目和我自己的设置,它们都有表名. 要通过php获取数据,我使用: $memcache->get($key); 其中$key是db列中的数据 然而,这没有任何回报,我怀疑原因是,根据MySQL Docs,如果没有指定表名,它选择列表中的第一个,这不是我想要的那个,我不明白的是我怎么样在密钥中指定正确的表名,因此它知道要在哪个表中查找密钥. 附加信息: table design: table: codes id INT PK code VARCHAR UNIQUE codeval VARCHAR innodb_memcache.containers : name: mycode db_schema: databaseName db_table: codes key_columns: code value_columns: codeval flags: id cas_column: null expire_time_column: null unique_idx_name_on_key: code 码: $table = "mycode"; $key = "123456"; $memcache = new Memcache; $memcache->connect($this->CONNECTURL,$this->CONNECTPORT) or die ("Could not connect"); $version = $memcache->getVersion(); echo "Server's version: ".$version."<br/>n"; $key = "@@" . $table . "." . $key . "." . $table; $get_result = $memcache->get($key); print_r($get_result); 上面的代码返回服务器版本没有问题,因此连接正常. 它确实发出通知:试图获得非对象的属性 所以,如果有人能让我知道我如何用$key指定我用来通过memcache查询哪个表,我将不胜感激! 解决方法
表名(@@ table_id中的table_id)必须是映射中的值(innodb_memcache.containers),而不是实际的表名(如果有变化).
如果你在映射中的表名是mycode,那么通过memcache生成的查询应如下所示: $table = 'mycode'; $key = '123456'; $memcache->get( '@@' . $table . '.' . $key ); 没有额外的’.’ . $table结尾. 有些详细信息可从InnoDB memcached Plugin文档页面获得. 举几个重要的地方: >使用select * from innodb_memcache.containers;获得定义的映射;
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |