`
hankesi2000
  • 浏览: 97308 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Redis的java客户端JRedis1.0RC退出时的bug

阅读更多
刚刚又回答了一次javaeye的发帖规则提问,不知道现在发的这个帖子有没有人发布过,呵呵。。。

Redis的java版客户端有两个:JDBC-Redis 和 JRedis,听了好多评论说JDBC-Redis的性能并不怎么样,so直接使用JRedis。

在测试并发的时候,为了模拟项目实际的场景,所以每次的增读都调用一次JRedisClient的ping即建立连接操作(当然可以将客户端维护起来而不更多的建立连接,问题可能就不出现了,这里只讨论问题),如此运行几次之后,客户端抛出异常
Exception in thread "Thread-1270" java.lang.OutOfMemoryError: Java heap space


经过查看线程数,确认是客户端中存在了很多的线程没有被关闭掉所致。

使用JRedis1.0RC版中给定的测试类HelloAgain进行DEBUG看了一下这些启动的线程,发现后台启动了一个守护线程跟Redis服务端作heartbeart,但是在执行jredis.quit()后却并没有退出,图示如下:


run的代码为:
private void run(String password) {
		try {
			JRedis jredis = new JRedisClient("10.10.13.31", 6379, "jredis", 0);
			jredis.ping();

			if (!jredis.exists(key)) {
				jredis.set(key, "Hello Again!");
				System.out.format("Hello!  You should run me again!\n");
			} else {
				String msg = toStr(jredis.get(key));
				System.out.format("%s\n", msg);
			}
			jredis.quit(); //注意这行,方法注释为:Disconnects the client
		} catch (RedisException e) {
                  //省略
		}
	}


我想这应该是bug吧,呵呵。等会再去Jredis网站上看一眼,是否对它进行了修复。。。
  • 大小: 12.1 KB
分享到:
评论
3 楼 icanfly 2010-10-11  
比较受Redis诱惑,所说性能非常高,但是现在感觉它的Java客户端不是特别稳定,比如做Redis的分布这些
2 楼 rustlingwind 2010-08-24  
应该是个bug吧,我的服务器程序里竟然发现好几千个heartbeat线程。我看来一下源代码,稍加改动可以解决这个问题,但不知道是否能从根本上解决。

修改 ConnectionBase 的 onDisconnected 方法(好像是这个名字,可能记错),里面调用一下 heartbeat的exit(记不清了,好象是,可以自己查看一下源代码)方法。
1 楼 hankesi2000 2010-05-19  
问题已经查出了,确实是个问题,他们早已考虑在下个版本里更新了。。。

相关推荐

    Redis 客户端 JRedis.zip

    Redis 客户端 JRedis 是一个专为 Java 开发者设计的高效能客户端库,用于与 Redis 分布式键值存储系统进行交互。这个库旨在提供简单、快速且可靠的连接方式,让 Java 应用程序能够充分利用 Redis 的功能。JRedis ...

    Redis Java 客户端.zip

    Jedis 是Redis的 Java 客户端,专为性能和易用性而设计。您是否在寻找一个高级库来处理对象映射?请参阅redis-om-spring!如何使用 Redis?在 Redis 大学免费学习试用 Redis Cloud深入了解开发者教程加入 Redis 社区...

    Redis的Java客户端Jedis

    **Redis的Java客户端Jedis详解** Redis是一款高性能的键值对数据存储系统,常用于缓存、消息中间件等场景。而Jedis是Redis官方推荐的Java语言客户端,提供了丰富的API来与Redis服务器进行交互。在2018年6月10日,...

    redis客户端jredis技术实现

    jedis实现对redis的string、hash、link、set、sort set等redis支持的数据类型的操作方法,通过配置属性实现单机redis和集群redis的快速实现,集群redis采用哨兵sentinel模式。

    redis集群客户端管理工具

    redis集群客户端管理工具

    flink-connector-redis_2.11-1.0.jar

    flink连接redis自定义连接器 eg: "CREATE TABLE redis_dim (\n" + "key String,\n" + "res String\n" + ") WITH (\n" + " 'connector.type' = 'redis', \n" + " 'redis.ip' = '10.100.1.15', \n" + " '...

    redis-java-client-profile:分布式和线性可伸缩性Redis Java客户端的对比分析

    在选择Redis Java客户端时,开发者需要考虑以下几个因素: 1. **性能**:对比客户端在高并发情况下的响应速度和资源利用率。 2. **伸缩性**:评估客户端在分布式环境中的扩展能力,如连接池管理、集群支持等。 3. **...

    redis mac 客户端

    在Mac操作系统上,为了方便地管理和操作Redis数据库,我们通常会使用特定的客户端工具。"Redis Desktop Manager for Mac 0.9.3.39"就是这样一个专为Mac用户设计的图形化界面工具,它提供了直观、高效的方式来浏览、...

    redis java客户端 jedis

    一个简单java客户端Jedis,大家可以到https://github.com/xetorthio/jedis这网址下载相关源码 这里对其进行一个简单封转 包括key valye set list hashset的封装

    redis java 客户端

    在Java环境中与Redis进行交互,我们通常会使用客户端库,其中Jedis是最常用的一个。本篇将深入探讨`redis java 客户端`,特别是Jedis的使用以及与其相关的`commons-pool-1.5.6.jar`。 **Jedis** Jedis是Java语言...

    ServiceStack .Redis3.9.60 Redis.NET客户端无限制版

    Redis推荐的最好的.Net客户端。 ServiceStack.Redis 4.0 已经收费 并且有每小时6000次插入的限制。这个是ServiceStack.Redis 3系版本的最终最新版本3.9.60,无使用限制, Redis.NET客户端无限制版

    redis windows客户端

    redis windows 客户端 redis windows 客户端 redis windows 客户端 redis windows 客户端 redis windows 客户端 redis windows 客户端 redis windows 客户端 redis windows 客户端 redis windows 客户端 redis ...

    redis客户端

    RedisClient是Redis客户端的GUI工具,使用Java swt和jedis编写,可以方便开发者浏览Redis数据库。该软件支持简体中文,非常适合国内用户使用,不需要汉化就可以直接使用。RedisClient将redis数据以资源管理器的界面...

    redis远程客户端管理工具

    Redis远程客户端管理工具是用于连接并管理远程Redis服务器的软件,它们通常提供图形用户界面(GUI),使得数据库的操作和监控更加直观和方便。这些工具可以帮助开发者执行命令、查看数据、进行备份和恢复,以及进行...

    redis桌面客户端管理工具(免费).zip

    在进行Redis的开发和运维时,一个强大的桌面客户端管理工具能够极大地提升效率。 本资源提供的是一个免费的Redis桌面客户端管理工具,这对于开发者和DBA来说是一大福音,因为市面上很多此类工具都是收费的。这个...

    jedisRedis的Java客户端

    Jedis是Redis的Java客户端,它提供了一个丰富的API来操作Redis数据存储系统。Redis是一个高性能的键值数据库,常用于缓存、消息中间件以及数据结构服务器等场景。Jedis作为Java开发者与Redis交互的主要工具,使得在...

    Redisson Easy Redis Java客户端和实时数据平台SyncAsyncRxJavaReactive A.zip

    Redisson是一款功能强大的Java客户端,它为Redis提供了全面的支持,包括数据结构操作、分布式服务、锁、队列等。这款客户端旨在简化与Redis服务器的交互,同时提供了多种编程模型,如同步、异步、反应式(RxJava)和...

    tomcat-redis-session-1.0-SNAPSHOT.jar

    使用redis解决nginx+tomcat负载集群的session共享问题(适用于jdk1.7 tomcat7)

Global site tag (gtag.js) - Google Analytics