最初使用的是danga的memcachedClient,处理单一语言对memcache的数据存储没有遇到问题,后来由于业务需要,要由C++存储数据,JAVA负责取数据。Memcache有二进制和文本两种存储方式,我们统一使用二进制,C++侧存入序列化之后的序列,我们JAVA侧取到数据后进行反序列化,这时danga的bug就暴露出来了,无法取到memcache服务器中由C++侧放入的数据。于是我们放弃danga,改用性能更高更强大的xmemcache。
Xmemcache无需设置使用二进制还是文本方式,它会自动判断并成功存取。由于数据中存在汉字,我们统一使用GBK编码存取数据,给XMemcachedClient设置Transcoder属性即可,即
memclient.setTranscoder(new StringTranscoder("gbk"));
这样对于memcache中的二进制序列,就可以作为字符串的格式获取到,之后再进行反序列化即可。
事情并没有就此结束,我们不仅仅需要读取C++侧存入的序列,更有原本就需要自行存取的JAVA对象。使用StringTranscoder仅仅用于字符串的存取,若想要存入JAVA对象它是办不到的,会提示你要存入的这个对象无法强转为String类型。我们发现,StringTranscoder是Transcoder的一个子类,Transcoder下面还有好多其他子类。那其中应该总有一个是允许我们存取JAVA对象的吧。没错,就是它,SerializingTranscoder。不论存取的是JAVA对象还是序列化后的字节,它都能坦然应对。不过它的构造方法里不含参数,需要通过设置其charset属性来设置编码,即
SerializingTranscoder transcoder = new SerializingTranscoder();
transcoder.setCharset("GBK");
memclient.setTranscoder(transcoder);
至此,大功告成。
分享到:
相关推荐
java-memcached-2.6.6.jar
Java Memcached是一个流行的Java客户端库,用于与Memcached缓存系统进行交互。Memcached是一种分布式内存对象缓存系统,常用于减轻数据库负载,提高Web应用的性能。在本例中,我们关注的是`java_memcached-release_...
`java_memcached-release_1.6.zip` 文件则是Java语言的Memcached客户端库,允许Java开发者方便地与Memcached服务器进行交互。这个客户端库通常称为spymemcached,它提供了丰富的API,使开发者可以轻松地存储和检索...
java_memcached-release_2.6.2.jar java缓存工具 memcached
Java与Memcached结合使用可以构建高性能的分布式缓存系统,以提高Web应用程序的响应速度和数据处理能力。这里提供的文件包含在Windows环境下运行Memcached以及Java应用中集成Memcached所需的必要组件。 首先,我们...
接下来,我们可以编写一个简单的Java类来演示如何与Memcached交互: ```java import net.spy.memcached.AddrUtil; import net.spy.memcached.MemcachedClient; public class MemcachedExample { private static ...
在这个示例中,`MemcachedAction`继承了`BaseAction`类,并实现了与Memcached交互的方法。`test()`方法演示了如何将数据存入缓存以及从缓存中读取数据的过程。 ### 四、总结 本文详细介绍了如何在Java项目中使用...
Java Memcached是一个基于Java的客户端库,用于与Memcached服务器进行通信。Memcached是一种高性能、分布式内存对象缓存系统,广泛应用于减轻数据库负载,提高Web应用的响应速度。在Java应用中,Java Memcached...
Java Memcached 客户端是Java开发者用于与Memcached分布式内存缓存系统交互的一个库。在版本2.6.3中,它提供了高效且可靠的连接管理,以及对Memcached服务器的全面支持。这个压缩包“java_memcached-release_2.6.3....
java_memcached-release_2.0.1.jar。jdk5版本适用。使用log4j。
这个“java_memcached-release_2.6.6.rar”压缩包文件包含了用于与Memcached服务器通信的Java库,使得Java开发者能够便捷地集成Memcached到他们的应用中。 Memcached是一个分布式内存对象缓存系统,最初由Danga ...
Java Memcached是一个基于Java的Memcached客户端库,用于在Java应用程序中与Memcached缓存系统进行交互。在标题和描述中提到的`java_memcached-release_2.6.6.jar`是这个库的特定版本,它包含了实现Memcached协议并...
Java连接Memcached服务器是开发过程中常见的一环,尤其是在构建分布式系统时,利用Memcached作为缓存服务可以显著提升数据访问速度。Memcached是一款高性能、分布式内存对象缓存系统,能够临时存储键值对数据,减轻...
Java Memcached客户端是Java开发者用来与Memcached分布式内存缓存系统进行交互的工具。这个`java_memcached-release_2.6.3.rar`压缩包包含了用于Java客户端开发所需的全部依赖库,使得开发者能够轻松地在Java应用中...
首先,我们需要引入一个Java库来与Memcached通信,例如spymemcached或xmemcached。这两个库提供了Java客户端,方便我们进行API调用。这里以spymemcached为例,你可以通过Maven或Gradle将依赖添加到项目中: ```xml ...
1. **Java与Memcached的连接**:Java Memcached客户端库提供了一组API,使得开发者可以通过TCP或UDP协议连接到Memcached服务器。连接过程包括配置服务器地址、端口号,以及建立Socket通信。 2. **缓存操作**:主要...
Memcached Cache现在已经被大家广泛使用,但是千万不要认为对Cache的操作是低损耗的,要知道这类集中式Cache对Socket连接数(会牵涉到linux操作系统文件句柄可用数),带宽,网络IO都是有要求的,有要求就意味着会有...
3. **Java Memcached客户端**:`java_memcached-release_2.6.6`是Java的Memcached客户端库,包含了与Memcached服务器交互所需的方法。开发人员会使用这个库编写Java代码,实现设置和获取缓存值的接口。 4. **设置和...
Java与Memcached的结合使用是分布式缓存领域中常见的技术实践。Memcached是一款高性能、分布式内存对象缓存系统,它可以将数据存储在内存中,从而加快读取速度,减轻数据库的负担。Java作为广泛使用的编程语言,有...