记录一下,都配置好了之后,用java客户端设置key-value,在服务器get没有问题,然后再服务器端设置一个key-value,java客户端获取出错
转载一下网上同样问题的描述,以及解决方案
严重: ++++ exception thrown while trying to get object from cache for key: test12013-6-26 23:18:37 com.schooner.MemCached.AscIIClient get严重: invalid stream header: 6675636Bjava.io.StreamCorruptedException: invalid stream header: 6675636Bat java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:783)at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280)at com.schooner.MemCached.ObjectTransCoder.decode(Unknown Source)at com.schooner.MemCached.AscIIClient.get(Unknown Source)at com.schooner.MemCached.AscIIClient.get(Unknown Source)at com.schooner.MemCached.AscIIClient.get(Unknown Source)at com.danga.MemCached.MemCachedClient.get(Unknown Source)at com.libo.memcache.MemcachedCli.get(MemcachedCli.java:39)at com.libo.memcache.MCTest.main(MCTest.java:17)
在网上查原因发现 在memcached中,不同的客户端在set或者add值时,对命令的第二个参数的使用是不一致的<command name> <key> <flags> <exptime> <bytes>< data block>JAVA客户端flags字段填写的都是32,不是32的是无法通过java客户端get出来的所以在通过memcached admin进行数据set时,需要显示指定flags值为32set testkey 32 0 512345如此放入缓存后,通过java客户端是可以取出来的。