-
windows下java连接memcached出现NullPointerException15
windows:XP
memcached版本:memcached-1.2.1-win32
java client版本:java_memcached-release_1.6public class testMemCached { // 创建全局的唯一实例 protected static MemCachedClient mcc = new MemCachedClient(); protected static testMemCached memCached = new testMemCached(); // 设置与缓存服务器的连接池 static { // 服务器列表和其权重 String[] servers = {"127.0.0.1:11211"}; Integer[] weights = {3}; // 获取socke连接池的实例对象 SockIOPool pool = SockIOPool.getInstance(); // 设置服务器信息 pool.setServers( servers ); pool.setWeights( weights ); // 设置初始连接数、最小和最大连接数以及最大处理时间 pool.setInitConn( 5 ); pool.setMinConn( 5 ); pool.setMaxConn( 250 ); pool.setMaxIdle( 1000 * 60 * 60 * 6 ); // 设置主线程的睡眠时间 pool.setMaintSleep( 30 ); // 设置TCP的参数,连接超时等 pool.setNagle( false ); pool.setSocketTO( 3000 ); pool.setSocketConnectTO( 0 ); // 初始化连接池 pool.initialize(); // 压缩设置,超过指定大小(单位为K)的数据都会被压缩 mcc.setCompressEnable( true ); mcc.setCompressThreshold( 64 * 1024 ); } protected testMemCached() {} public static testMemCached getInstance() { return memCached; } public boolean add(String key, Object value) { return mcc.add(key, value); } public boolean add(String key, Object value, Date expiry) { return mcc.add(key, value, expiry); } public boolean replace(String key, Object value) { return mcc.replace(key, value); } public boolean replace(String key, Object value, Date expiry) { return mcc.replace(key, value, expiry); } public Object get(String key) { return mcc.get(key); } public boolean flushAll() { return mcc.flushAll(); } public static void main(String[] args) { testMemCached cache = testMemCached.getInstance(); cache.flushAll(); for(int i=0; i<50000;i++){ cache.add(i+"", "test"); } String s = cache.get("0").toString(); System.out.println(s); } }
输出:com.danga.MemCached.MemCachedClient Sun Jan 08 14:42:19 CST 2012 - ++++ data successfully stored for key: 49998 com.danga.MemCached.MemCachedClient Sun Jan 08 14:42:19 CST 2012 - Storing with native handler... com.danga.MemCached.MemCachedClient Sun Jan 08 14:42:19 CST 2012 - ++++ memcache cmd (result code): add 49999 0 0 5 (STORED) com.danga.MemCached.MemCachedClient Sun Jan 08 14:42:19 CST 2012 - ++++ data successfully stored for key: 49999 Exception in thread "main" java.lang.NullPointerException at utils.cache.testMemCached.main(testMemCached.java:90)
memcached启动语句:memcached.exe -l 127.0.0.1 -m 128 -d start
如果我只写入500条记录再读,是没有问题的,但是超过5000条记录就会出现空指针异常了。
请问是哪里出问题了?
问题补充:<div class="quote_title">renpeng301 写道</div><div class="quote_div"><pre name="code" class="java">
for(int i=0; i<50001;i++){
cache.add(i+"", "test");
}
看看cache中的数量。。
</pre></div> <br />请问在哪里设置cache的数量?
问题补充:<div class="quote_title">renpeng301 写道</div><div class="quote_div"><pre name="code" class="java">
通过cache使用计数器
使用storeCounter方法初始化一个计数器
使用incr方法对计数器增量操作
使用decr对计数器减量操作
然后你试试 是不是刚好循环到50000时 抛出 NullPointerException
</pre> <br /></div> <br />改了下: <br /> cache.storeCount("count"); <br /> for(int i=0; i<50000;i++){ <br /> cache.add(i+"", "test"); <br /> System.out.println(cache.inrCount("count")); <br /> } <br />count从23106后就是-1了 <br />23106 <br />-1 <br />-1 <br />-1 <br />-1 <br /> <br />但是我把for中的i改成20000也是会出现空指针异常。 <br />应该怎么才可以实现保存50000个记录对的需求呢?
问题补充:<div class="quote_title">renpeng301 写道</div><div class="quote_div"><pre name="code" class="java">
int count=0
for(int i=0; i<50001;i++){
try{
cache.add(i+"", "test");
count++;
}catch(Exp....){
System.out.print("error........");
}
}
</pre></div> <br />这个不会有异常的啊,因为记录已经显示第49999条记录已经写入成功。而且我发现是因为前面的记录被覆盖掉了! <br />所以需要把memcached支持的记录数加大才对吧?2012年1月08日 14:55
4个答案 按时间排序 按投票排序
-
但是我把for中的i改成20000也是会出现空指针异常。 应该怎么才可以实现保存50000个记录对的需求呢? ============================================ 是不是有个地方可以设置缓存数的。。 忘记了。。 [color=red]所以需要把memcached支持的记录数加大才对吧? [/color] 对的
2012年1月08日 16:25
-
int count=0 for(int i=0; i<50001;i++){ try{ cache.add(i+"", "test"); count++; }catch(Exp....){ System.out.print("error........"); } }
2012年1月08日 15:40
-
通过cache使用计数器 使用storeCounter方法初始化一个计数器 使用incr方法对计数器增量操作 使用decr对计数器减量操作 然后你试试 是不是刚好循环到50000时 抛出 NullPointerException
2012年1月08日 15:34
-
for(int i=0; i<50001;i++){ cache.add(i+"", "test"); } 看看cache中的数量。。
2012年1月08日 15:21
相关推荐
Java连接Memcached服务器是开发过程中常见的一环,尤其是在构建分布式系统时,利用Memcached作为缓存服务可以显著提升数据访问速度。Memcached是一款高性能、分布式内存对象缓存系统,能够临时存储键值对数据,减轻...
Java连接Memcached是一种常见的缓存操作,特别是在处理大数据量或者需要快速响应的Web应用程序中。Memcached是一款高性能、分布式内存对象缓存系统,用于减轻数据库负载,提高网站性能。下面我们将详细探讨如何在...
java连接memcached服务的jar
`MemCachedManager.java`这个类可能包含了创建和管理Memcached连接、执行缓存操作等高级功能,简化了开发者的工作。 总的来说,Java Memcached客户端库是一个强大的工具,它让Java开发者能够利用Memcached的强大...
java-memcached-2.6.6.jar
这里提供的文件包含在Windows环境下运行Memcached以及Java应用中集成Memcached所需的必要组件。 首先,我们来看"memcached-win64-1.4.4-14.zip",这是适用于Windows操作系统的Memcached服务器的64位版本。Memcached...
这表明我们正在处理的是与Memcached相关的开发资源,一个是Windows上的Memcached服务器版本1.2.1,另一个是Java客户端库的release 1.6。 描述中提到,这些资源适用于基于Java的Memcached数据缓存的开发。这暗示我们...
Windows下php中Memcache的安装: 1. 下载memcache的windows稳定版,解压放某个盘下面,比如在c:\memcached 2. 在终端(也即cmd命令界面)下输入 ‘c:\memcached\memcached.exe -d install’ 安装 3. 再输入: ‘c...
使用JAVA连接Memcached的DEMO源码(2016)。 自己写的一个连接memcached的小DEMO,适合刚开始学习分布式缓存的同学下载学习。
本文详细介绍了如何在Java项目中使用Memcached进行数据缓存,包括Spring框架下的配置方式以及具体的代码实现。通过理解和掌握这些知识点,开发者可以有效地利用Memcached提升JavaWeb应用的性能和效率。
Java Memcached是一个基于Java的客户端库,用于与Memcached服务器进行通信。Memcached是一种高性能、分布式内存对象缓存系统,广泛应用于减轻数据库负载,提高Web应用的响应速度。在Java应用中,Java Memcached...
java_memcached-release_2.6.2.jar java缓存工具 memcached
### Java使用Memcached简单教程 #### 一、简介 Memcached是一个高性能的分布式内存对象缓存系统,通过减轻数据库负载来加速动态Web应用,提高网站的浏览速度。它通过在内存中缓存数据和对象来减少读取数据库的次数...
【Java环境下Memcached应用详解】 Memcached是一款高性能的分布式内存对象缓存系统,常用于缓解数据库的压力,提高网站性能。在Java环境下,Memcached能够作为集群环境下的缓存解决方案,适用于处理大量数据并需要...
在Java Memcached客户端中,它用于管理连接池,即高效地重复使用已经创建的对象,而不是每次需要时都创建新的对象,这可以显著提高性能并减少系统资源的消耗。 2. **java_memcached-release_2.6.3.jar**:这是Java ...
在Java Memcached客户端中,它被用来有效地管理和复用连接到Memcached服务器的Socket对象,减少创建和销毁对象的开销,从而提高系统性能。 `slf4j-api-1.6.1.jar`和`slf4j-simple-1.6.1.jar`是Simple Logging ...
1. **连接管理**:Java Memcached客户端需要建立到Memcached服务器的连接。这些连接通常可以是持久的,也可以是短暂的,取决于应用的需求。客户端会处理连接的创建、维护和关闭,以确保高效且可靠的通信。 2. **Key...
Java Memcached客户端是Java开发者用来与Memcached分布式内存缓存系统进行交互的工具。这个`java_memcached-release_2.6.3.rar`压缩包包含了用于Java客户端开发所需的全部依赖库,使得开发者能够轻松地在Java应用中...
标题中的“Windows下memcached+memcached.dll 5.3.8”指的是在Windows操作系统上安装和使用Memcached服务的场景,其中`memcached.dll 5.3.8`是Memcached服务器的一个特定版本的动态链接库文件。Memcached是一款高...