移动端网站如何优化,电子商务网站定制,wordpress多域名更改,权威的南通网站建设这2天#xff0c;才发现之前我们的某个开发人员使用java_memcached-release_2.0.1.jar是有问题的在我们的某个模块里#xff0c;需要2个memcached#xff0c;分别提供不同的服务于是#xff0c;开发的人员就从网上粘贴来如下的码#xff0c;分别生成2个MemcacheUtil类stat…这2天才发现之前我们的某个开发人员使用java_memcached-release_2.0.1.jar是有问题的在我们的某个模块里需要2个memcached分别提供不同的服务于是开发的人员就从网上粘贴来如下的码分别生成2个MemcacheUtil类static {mccnewMemCachedClient();SockIOPoolpoolSockIOPool.getInstance();String[]servers { 192.168.1.1:11122 };pool.setServers(servers);pool.setInitConn(5);pool.setMinConn(5);pool.setMaxConn(20);pool.setMaxIdle(1000 * 60 * 60 * 6);pool.setMaintSleep(30);pool.setNagle(false);pool.setSocketTO(3000);pool.setSocketConnectTO(0);pool.initialize();mcc.setCompressEnable(true);mcc.setCompressThreshold(64 * 1024);}在2个类里分别初始化2个不同的mcc这样做其实是有很大问题的因为在初始化MemCachedClient和SockIOPool时均没有指定对应的name这样memcached client会默认生成一个name为default的pool也就是说即使你初始化了2个不同server对应的mcc但实际上只有一个default的pool这个pool里对应的memcache server完全取决于这2个类的初始化顺序最后初始化的class会覆盖掉第一次所用的server因此用这样的方式实际上最后使用的还是其中的某一个memcache server造成memcache中的数据全部乱掉正确的方法应该是SockIOPool pool SockIOPool.getInstance(poolName);….MemCachedClientmccnewMemCachedClient(poolName);初始化时需要指定唯一的一个poolname这样就能避免刚才的问题了另外一个问题就是用python或其它方式写入memcache中的数据使用java client无法获取到再查看了memcache client的源码后发现了以下2点1. 它会默认对要存储的key进行URLEncoder的编码如会把给编码成%402. 在get调用时如果没有传递参数asString则它默认会对取到的value进行它自己的decode所以如果要想client能正确的取到没有编码过的数据则需要//设置不对key做编码mcc.setSanitizeKeys(false);//最后一个参数true表明get时直接返回String而不进行解码mcc.get(aaaaaaasohu.com,null,true);