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

jedis线程池的代码【转】

阅读更多

备忘:(本机i5的测试数据:redis线程执行时间是:21187 ms)

01 public class Demo2 {
02       
03      private static JedisPool pool;
04       
05      static {
06          JedisPoolConfig config = new JedisPoolConfig();
07          config.setMaxActive( 100 );
08          config.setMaxIdle( 20 );
09          config.setMaxWait( 1000 );
10          config.setTestOnBorrow( true );
11           
12          pool = new JedisPool(config, "localhost" );
13      }
14  
15      public static void main(String[] args) {
16          Demo2 demo = new Demo2();
17          demo.test();
18      }
19  
20      public void test() {
21          initInsert();
22          testThread();
23      }
24       
25      private void initInsert() {
26          Jedis jedis = pool.getResource();
27          for ( int i= 0 ; i< 20000 ; i++)
28              jedis.set(String.valueOf(i), String.valueOf(i));
29          pool.returnResource(jedis);
30      }
31       
32      private void testThread() {
33          long begin = System.currentTimeMillis();
34           
35          Thread thread[] = new Thread[ 60 ];
36          for ( int i= 0 ; i<thread.length; i++) {
37              thread[i] = new MyThread();
38              thread[i].start();
39          }
40           
41          for ( int i= 0 ; i<thread.length; i++) {
42              try {
43                  thread[i].join();
44              } catch (InterruptedException e) {
45                  e.printStackTrace();
46              }
47          }
48           
49          long end = System.currentTimeMillis();
50          System.out.println( "线程执行时间是:" + (end - begin) + " ms" );
51      }
52       
53      class MyThread extends Thread {
54          @Override
55          public void run() {
56              Jedis jedis = Demo2.pool.getResource();
57              for ( int i= 0 ; i< 20000 ; i++)
58                  jedis.get(String.valueOf(i));
59              Demo2.pool.returnResource(jedis);
60          }
61      }
62 }
分享到:
评论
2 楼 zhaohaolin 2011-09-19  
反正是开源,何不自定制呢
1 楼 huhang1986 2011-09-14  
returnBrokenResource捕获异常后,用这个方法回收。

jedis的线程池真是做的不美,要自己包装不少东西。
更可恶的是Jedis,ShardedJedis,BinaryJedis,BinaryShardedJedis。
2套继承体系,想做Sharded又得改不少代码。

相关推荐

    jedis-jedis-2.10.0-m1.tar.gz

    7. **异步操作**:虽然Jedis主要是同步操作的客户端,但可以通过配合线程池或者Java 8的CompletableFuture实现异步操作,提升并发能力。 8. **配置优化**:Jedis提供了丰富的配置选项,包括超时时间、重试策略、...

    最全redis线程池实现,Spring支持,redis Cluster线程池,主从Redis读写分离,sentenl读写分离等

    在Jedis中,我们可以通过`poolConfig`设置线程池的最大连接数、最大空闲连接、超时时间等参数。而在Lettuce中,我们可以使用`PoolingClientConfiguration`来配置线程池。 2. **Redis Cluster线程池**: 当我们需要...

    redis 性能测试

    5. **Jedis的并发策略**:在测试读性能时,通常会创建多个线程或使用线程池并发地执行get命令。Jedis提供了连接池管理,可以有效地复用连接,减少创建和销毁连接的开销,提升整体性能。 6. **测试指标分析**:测试...

    Java利用Redis实现消息队列的示例代码

    Java利用Redis实现消息队列的示例代码 以下是Java利用Redis实现消息队列的示例代码的知识点总结: 一、序列化 * 序列化是将对象转换为byte数组的过程,Java中可以使用ByteArrayOutputStream和...

    玩转SpringBoot2.x之缓存对象

    为了方便操作,我们可以封装一个`JedisCacheServiceSupport`抽象类,处理过期时间和Jedis的线程池操作。例如: ```java public abstract class JedisCacheServiceSupport { public static final long EXPIRE_...

    Spring 3.1.0 官网API

    此外,`ThreadPoolTaskScheduler`和`ThreadPoolTaskExecutor`提供了灵活的线程池配置,用于定时任务和后台任务的调度。 8. **消息支持**: Spring 3.1.0加强了对消息传递系统的支持,包括JMS、AMQP等,提供了`...

    javaAPI下载

    Date和Calendar类则可以帮助我们处理日期和时间,而Generics(泛型)则增强了代码的类型安全性和重用性。 对于网络编程,`java.net`包提供了Socket和ServerSocket类,它们是进行TCP/IP通信的基础。通过创建Socket...

    redis-sync.zip

    这可能涉及到锁机制、线程池管理等技术。 6. **错误处理与重试机制**: 在网络不稳定或Redis服务故障时,同步过程可能会失败。因此,合理的错误处理策略和重试机制是必要的,以保证数据的最终一致性。 7. **性能...

    Cat 客户端埋点插件用户手册1

    Cat可以监控线程的创建、销毁和执行情况,帮助分析线程池的使用状况和潜在的线程安全问题。 3.11 URL Cat能够跟踪URL的访问情况,包括访问频率、响应时间等,有助于优化网站的访问体验。 总结,Cat客户端埋点插件...

    Eclipse开发分布式商城系统+完整视频代码及文档

    │ 淘淘商城源代码.zip │ ├─01.第一天 │ 01.课程计划.avi │ 02.淘淘商城介绍.avi │ 03.创建后台工程-taotao-parent.avi │ 04.创建taotao-manager.avi │ 05.svn的使用.avi │ 06.ssm框架整合思路.avi │ 07....

    百度java开发面试题总结18-20年

    线程池(ThreadPoolExecutor)管理线程,包括核心线程数、最大线程数等,以高效利用系统资源。 【设计模式】 面试常考的设计模式包括单例模式、工厂模式、装饰器模式、代理模式等,它们是解决常见问题的标准化解决...

    javamq源码-tanyunshou:java高并发自主学习代码,从基本多线程,回调出发,再到后续的多数据源、mq、redis以及最终的分布

    Java的NIO(非阻塞I/O)和AIO(异步I/O)可以帮助处理大量并发连接,而线程池则能有效管理线程资源,避免过多线程导致的系统资源浪费。 【负载均衡】负载均衡是将工作负载分散到多个计算资源,以优化资源使用、最大...

    狂神说全部笔记内容.rar

    这部分内容将涵盖线程的创建、同步、线程池和死锁问题的解决。 4. **GUI(图形用户界面)**: Java提供了丰富的库来创建桌面应用的用户界面,如Swing和JavaFX。学习这部分可以了解如何设计和实现交互式应用程序。 5...

    中级程序员必备面试题.txt

    对于Java对象的存储,Redis可以通过`Jedis`客户端库的序列化机制实现。 #### 如何写SQL以有效利用复合索引 复合索引是指在一个索引中包含多个字段的索引。为了高效利用复合索引,应遵循以下原则: - 在WHERE子句中...

    redis-connector:一个简易的Redis客户端, 为了学习Redis通信协议

    与Jedis这个官方推荐的Java客户端相比,"redis-connector"可能更为精简,更适合学习和研究Redis协议的底层工作原理。 在Redis通信协议中,主要涉及到以下关键概念: 1. **RESP(REdis Serialization Protocol)**...

    javaInPractice:Java实践

    Java提供了丰富的并发工具类和API,如`java.util.concurrent`包下的线程池、并发容器(如ConcurrentHashMap)以及同步机制(如synchronized关键字和Lock接口)。理解并发编程的基本原理,熟练掌握线程安全的数据结构...

    java高级工程师面试总结

    - 使用客户端分片,如Jedis Cluster。 - 服务器端实现,如使用Hash slots进行数据分片。 - **MongoDB的特点**: - 面向文档的数据模型。 - 支持灵活的模式。 - 内置的复制和分片功能。 #### 分布式 - **...

    miaosha

    Java中的`Concurrent`包提供了一系列并发控制工具,如`Semaphore`用于限制并发线程数量,`CountDownLatch`用于同步多个线程,以及`ExecutorService`来管理线程池。 2. **分布式系统**:大型秒杀系统往往采用分布式...

Global site tag (gtag.js) - Google Analytics