Redis的Java客户端Jedis池的介绍和使用

时间:2020-12-04 20:36:07

原文地址:http://blog.csdn.net/softwave/article/details/42320149

一、jedis池的介绍

相信大家都用过线程池或者是jdbc的连接池,使用池可以减少系统在使用所需对象时创建对象的开销,从而提高系统性能和效率。jedis池也是如此,那么我们该如何使用jedis池呢?

二、jedis池的使用

1.所需jar包:commons-pool.jar、jedis-2.1.0.jar


2.编写Redis配置文件(redis.properties): 

本例中代码如下:

[plain] view plain copy Redis的Java客户端Jedis池的介绍和使用Redis的Java客户端Jedis池的介绍和使用
  1. #*****************jedis连接参数设置*********************#   
  2. #redis服务器ip #      
  3. redis.ip=192.168.8.167   
  4. #redis服务器端口号#      
  5. redis.port=6379    
  6. #************************jedis池参数设置*******************#     
  7. #jedis的最大分配对象#     
  8. jedis.pool.maxActive=3000    
  9. #jedis最大保存idel状态对象数 #     
  10. jedis.pool.maxIdle=1000   
  11. #jedis池没有对象返回时,最大等待时间 #    
  12. jedis.pool.maxWait=1500  
  13. #jedis调用borrowObject方法时,是否进行有效检查#    
  14. jedis.pool.testOnBorrow=true  
  15. #jedis调用returnObject方法时,是否进行有效检查 #    
  16. jedis.pool.testOnReturn=true  
3.编写Java实现代码: [java] view plain copy Redis的Java客户端Jedis池的介绍和使用Redis的Java客户端Jedis池的介绍和使用
  1. package com.zhongying.customer.utils;    
  2. import java.io.IOException;  
  3. import java.util.Properties;  
  4. import redis.clients.jedis.Jedis;  
  5. import redis.clients.jedis.JedisPool;  
  6. import redis.clients.jedis.JedisPoolConfig;  
  7. public class MyJedisPool {  
  8.     private static JedisPool pool;      
  9.     //静态代码初始化池配置    
  10.     static {        
  11.       try{  
  12.       Properties props = new Properties();  
  13.      props.load(MyJedisPool.class.getClassLoader().getResourceAsStream("redis.properties"));  
  14.   
  15.              //创建jedis池配置实例    
  16.              JedisPoolConfig config = new JedisPoolConfig();     
  17.              //设置池配置项值    
  18.              config.setMaxActive(Integer.valueOf(props.getProperty("jedis.pool.maxActive")));      
  19.              config.setMaxIdle(Integer.valueOf(props.getProperty("jedis.pool.maxIdle")));      
  20.              config.setMaxWait(Long.valueOf(props.getProperty("jedis.pool.maxWait"))) 
  21.              config.setTestOnBorrow(Boolean.valueOf(props.getProperty("jedis.pool.testOnBorrow")));      
  22.              config.setTestOnReturn(Boolean.valueOf(props.getProperty("jedis.pool.testOnReturn")));      
  23.              //根据配置实例化jedis池    
  24.              pool = new JedisPool(config, props.getProperty("redis.ip"), Integer.valueOf(props.getProperty("redis.port")));   
  25.       }catch (IOException e) {  
  26.          e.printStackTrace();  
  27.       }  
  28.     }    
  29.     /**获得jedis对象*/  
  30.     public static Jedis getJedisObject(){  
  31.       return pool.getResource();  
  32.     }  
  33.   
  34.     /**归还jedis对象*/  
  35.     public static void recycleJedisOjbect(Jedis jedis){  
  36.      pool.returnResource(jedis);    
  37.     }  
  38.   
  39.     /**  
  40.      * 测试jedis池方法  
  41.      */    
  42.     public static void main(String[] args) {  
  43.         Jedis jedis = getJedisObject();//获得jedis实例                    
  44.         //获取jedis实例后可以对redis服务进行一系列的操作    
  45.         jedis.set("name""zhuxun");    
  46.         System.out.println(jedis.get("name"));    
  47.         jedis.del("name");    
  48.         System.out.println(jedis.exists("name"));    
  49.         recycleJedisOjbect(jedis); //将获取的jedis实例对象还回池中  
  50.     }    
  51.   
  52. }  
4.测试执行结果如下:

[plain] view plain copy Redis的Java客户端Jedis池的介绍和使用Redis的Java客户端Jedis池的介绍和使用
  1. zhuxun  
  2. false   
Redis的Java客户端Jedis池的介绍和使用