0

Java XmemcachedSpymemcached客户端无法通过C# Enyim客户端设置的键从 memcached 中获取正确的值。

我们已经尝试将 C# MemcachedProtocol.Binary 设置为 Text 来存储基本的 String 格式数据,但是 Java Xmemcached 客户端和 Spymemcached 客户端都无法获取数据。错误如下:

2018-01-11 11:08:06.655 [ERROR] [main] BaseSerializingTranscoder: Failed to decompress data
java.util.zip.ZipException: Not in GZIP format
at java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:165) ~[?:1.8.0_144]
at java.util.zip.GZIPInputStream.(GZIPInputStream.java:79) ~[?:1.8.0_144]
at java.util.zip.GZIPInputStream.(GZIPInputStream.java:91) ~[?:1.8.0_144]
at net.rubyeye.xmemcached.transcoders.BaseSerializingTranscoder.gzipDecompress(BaseSerializingTranscoder.java:274) [xmemcached-2.4.0.jar:?]
at net.rubyeye.xmemcached.transcoders.BaseSerializingTranscoder.decompress(BaseSerializingTranscoder.java:219) [xmemcached-2.4.0.jar:?]
at net.rubyeye.xmemcached.transcoders.SerializingTranscoder.decode(SerializingTranscoder.java:87) [xmemcached-2.4.0.jar:?]
at net.rubyeye.xmemcached.XMemcachedClient.fetch0(XMemcachedClient.java:657) [xmemcached-2.4.0.jar:?]
at net.rubyeye.xmemcached.XMemcachedClient.get0(XMemcachedClient.java:1085) [xmemcached-2.4.0.jar:?]
at net.rubyeye.xmemcached.XMemcachedClient.get(XMemcachedClient.java:1043) [xmemcached-2.4.0.jar:?]
at net.rubyeye.xmemcached.XMemcachedClient.get(XMemcachedClient.java:1065) [xmemcached-2.4.0.jar:?]

如果我们使用 StringTranscoder(),错误将是解码字符串错误:

Exception in thread "main" java.lang.RuntimeException: Decode String error
at net.rubyeye.xmemcached.transcoders.StringTranscoder.decode(StringTranscoder.java:35)
at net.rubyeye.xmemcached.transcoders.StringTranscoder.decode(StringTranscoder.java:11)
at net.rubyeye.xmemcached.XMemcachedClient.fetch0(XMemcachedClient.java:657)
at net.rubyeye.xmemcached.XMemcachedClient.get0(XMemcachedClient.java:1085)
at net.rubyeye.xmemcached.XMemcachedClient.get(XMemcachedClient.java:1043)
at net.rubyeye.xmemcached.XMemcachedClient.get(XMemcachedClient.java:1065)
4

1 回答 1

0

该问题已通过编写自定义转码器并忽略 GZIP/ZIP 标志部分得到解决。

于 2018-01-16T17:44:12.077 回答