记录一下,都配置好了之后,用java客户端设置key-value,在服务器get没有问题,然后再服务器端设置一个key-value,java客户端获取出错
转载一下网上同样问题的描述,以及解决方案
严重: ++++ exception thrown while trying to get object from cache for key: test1
2013-6-26 23:18:37 com.schooner.MemCached.AscIIClient get
严重: invalid stream header: 6675636B
java.io.StreamCorruptedException: invalid stream header: 6675636B
at 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值为32
set testkey 32 0 5
12345
如此放入缓存后,通过java客户端是可以取出来的。