MemcachedClient的set方法其实是异步的。 并不是当set执行完时, 数据就已经存在server上了。所以set的返回值是Future<Boolean>, 你可以通过这个值来判定是否已经保存到server上了。可以通过以下的代码来确认值已经保存到server了。
Future<boolean> b = client.set("testkey",3600,"value");
boolean done = false;
do{
Thread.sleep(200);
done = b.get().booleanValue();
}while(!done);
System.out.println("value has been saved.");
MemcachedClient在本地存在一个队列,这个队列存放着需要set的任务。如果你需要一次调用非常多次的set方法的话, 这时候就会发生out of memory的error。解决办法就是调用waitForQueues方法。 如下:
public void testPutBatchContent(){
long start = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
client.set("testkey" + i, 0, content);
if (i % 10000 == 0) {
System.out.println("finished. " + i);
boolean b = client.waitForQueues(300, TimeUnit.SECONDS);
System.out.println("finished. " + b);
}
}
boolean b = client.waitForQueues(300, TimeUnit.SECONDS);
System.out.println("Costs " + (System.currentTimeMillis() - start) + " ms.");
}
waitForQueues方法会等待队列完全被消费掉。 有个参数可以设置timeout时间。 我这里是300秒。总共要set10万次, 每10000次就让队列消费掉。这样就不会发生out of memory的问题了。
分享到:
相关推荐
1. **并发和一致性**:由于 Memcached 是无状态的,因此在多线程环境中,需确保正确地处理并发访问,避免数据冲突。 2. **数据持久化**:Memcached 不提供内置的持久化机制,若需要持久化数据,需要在应用层面实现。...
为了设置session共享,你需要在Tomcat的配置文件(如`context.xml`或`server.xml`)中配置Memcached Session Manager,并指定Spy Memcached为客户端,同时在Nginx配置中启用session sticky或负载均衡策略。...
本篇文章将围绕"Java Memcache使用例子"这一主题,详细介绍如何在Java中使用Memcached。 首先,确保您已经在本地正确安装了Memcached。通常,Memcached可以在Linux、macOS和Windows等操作系统上运行。你可以通过...
- 合理设置过期时间,避免大量数据同时过期导致性能下降。 - 使用分布式锁处理并发更新问题。 9. **监控和扩展** 可以使用第三方工具(如`mcstat`)监控Memcached的性能,确保其正常运行。随着数据量的增加,...
同时,对于实时监控产生的大量数据,缓冲区管理机制确保了数据的高效存储与读取,避免了因数据溢出而导致的信息丢失。 ##### 4. 数据发送与工程文件加载 除了数据接收,spy3还支持数据发送功能,允许用户向网络...
在实现Session Cache Server时,我们将Memcached作为存储Session的地方,当Tomcat服务器处理用户请求时,会将Session数据发送到Memcached,其他服务器在处理相同用户的请求时,可以直接从Memcached获取Session数据,...
memcache spy client,
描述中的"memcached实现session共享,基于tomcat8.0,采用kryo序列化",意味着开发者计划使用Kryo库进行对象序列化,以便将session数据存储到Memcached中。Kryo是一个快速、高效的序列化库,适合Java和Scala。相比...
原配置中使用的驱动应更改为P6Spy提供的驱动,即com.p6spy.engine.spy.P6SpyDriver。这样,所有的数据库连接都会通过P6Spy的代理驱动,从而使P6Spy能够拦截和记录所有数据库操作。这一更改通常在应用程序的数据库...
Memcached通过TCP协议进行通信,服务器端接收客户端的请求,将数据存储到内存中,并为每个数据项设置一个过期时间。当客户端需要数据时,会首先查询Memcached,如果缓存中有数据,就直接返回,称为缓存命中;如果...
Java应用可以通过使用特定的Memcached客户端库(如spymemcached或Xmemcached)将用户的会话数据存储到Memcached服务器集群中。这些jar包可能包含了这些客户端库的实现,使得开发者可以轻松集成到自己的项目中。 ...
Memcache java jar 包 java_memcached-release_2.5.1.jar import com.danga.MemCached.MemCachedClient; import net.spy.memcached.MemcachedClient;
**Memcached连接Demo详解** Memcached是一款高性能、分布式内存对象缓存系统,广泛应用于Web应用中,用于减轻数据库的负载,...通过学习这些示例,你将能够自如地在自己的项目中使用Memcached,实现高效的数据缓存。
为了在Java项目中使用Memcached,我们需要引入一个客户端库。在这里,我们选择使用SpyMemcached作为客户端。首先,在Maven项目的`pom.xml`文件中添加以下依赖: ```xml <groupId>net.spy</groupId> <artifactId>...
接下来,让我们看看如何在Java代码中使用Memcached。首先,我们需要创建一个`MemcachedClient`实例,连接到运行的Memcached服务器: ```java import net.spy.memcached.AddrUtil; import ...
System.out.println("Connection to server sucessful."); // 添加数据 Future fo = mcc.set("runoob", 900, "Free Education"); // 打印状态 System.out.println("set status:" + fo.get()); // 输出 ...
Java连接Memcached服务器是开发过程中常见的一环,尤其是在构建分布式系统时,利用Memcached作为缓存服务可以显著提升数据访问速度。Memcached是一款高性能、分布式内存对象缓存系统,能够临时存储键值对数据,减轻...
**Memcached 安装与使用详解** Memcached 是一款高性能的分布式内存缓存系统,用于在Web应用中减轻数据库负载。它将数据存储在内存中,以键值对的形式提供快速访问,尤其适用于高并发场景。Memcached 使用简单,可...
下面我们将详细探讨如何在Java中使用Memcached以及相关知识点。 首先,我们需要引入一个Java库来与Memcached通信,例如spymemcached或xmemcached。这两个库提供了Java客户端,方便我们进行API调用。这里以...
在IT行业中,Spring框架是Java应用开发中的一个关键组件,它提供了一整套服务和工具,使得开发者可以更高效地构建可维护、可扩展的应用。而Memcached则是一种高性能、分布式内存对象缓存系统,常用于缓解数据库负载...