redis學習 -- JedisPool&JedisSentinelsPool


  jedis連接池的使用:

  所需jar包:jedis使用了apache commons-pool2庫,導入jedis時會自動導入common-pool2jar包

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.7.2</version>
</dependency>

  定義一個JedisAPI類,主要實現過程:

  >定義一個JedisAPI類的實例instance,目的是在程序運行時獲取唯一實例,實現單例,以節省內存空間。

   private static final JedisAPI instance = new JedisAPI();
    //獲取實例,用於實現單例模式
    public JedisAPI getInstance(){
        return instance;
    }

  >可能需要配置的一些屬性:

private String host; private int port; private int DBNumber = 0;//獲取host和port
    public JedisAPI setHostAndPort(String host, int port){ this.host = host; this.port = port; return this; } //設置db
    public JedisAPI setDBnumber(int DBNumber){ this.DBNumber = DBNumber; return this; }

  >定義連接池,定義一個init()方法,對instance進行初始化,初始化主要包括config的配置和連接池的創建:

   private static JedisPool pool = null;
public JedisAPI init(){ if(pool == null){ JedisPoolConfig config = new JedisPoolConfig(); config.setMaxTotal(8);//設置最大連接數,默認為8 config.setMaxIdle(8); //設置最大空閑連接數,默認為8 config.setMinIdle(0);//設置最小空閑連接數,默認為0 config.setMaxWaitMillis(1000);//設置連接時的最長等待時間,單位為毫秒,默認為-1,表示永不超時。 pool = new JedisPool(config, "127.0.0.1", 6379, 60000); } return this; }

  >接下來就可以用這個連接池操作redis數據庫了:

    @SuppressWarnings("deprecation")
    public void setKey(){
        Jedis jedis = null; //定義一個jedis連接
        try {
            jedis = pool.getResource(); //從連接池獲取資源,初始化jedis連接
            jedis.select(DBNumber);//選擇db
       jedis.set("123", "1234"); //jedis對數據庫的操作 } catch (Exception e) { pool.returnBrokenResource(jedis); //發生異常,將資源返還給連接池 e.getStackTrace(); }finally { pool.returnResource(jedis); //程序結束,將資源返還給連接池 } } @SuppressWarnings("deprecation") public String getKey(){ Jedis jedis = null; try { jedis = pool.getResource();
       jedis.select(DBNumber);//選擇db
return jedis.get("123"); } catch (Exception e) { pool.returnBrokenResource(jedis); e.getStackTrace(); return null; }finally { pool.returnResource(jedis); } }

  調用JedisAPI:

    private static JedisAPI jedisAPI;

    jedisAPI = new JedisAPI().getInstance().setHostAndPort("127.0.0.1", 6381).setDBnumber(1).init();

    jedisAPI.setKey();

    jedisAPI.getKey();    

 

  JedisSentinelsPool的使用和JedisPool基本一致,需要配置一下sentinels集群地址即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM