Redis Java API

package cn.ac.iscas.pebble.dc.redispool;

import java.io.File;
import java.io.FileOutputStream;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Set;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.Pipeline;
import redis.clients.jedis.Response;
import cn.ac.iscas.pebble.dc.hdfs.AppendToFile;
import cn.ac.iscas.pebble.dc.test.P;

public class RedisPoolProxy {

</span><span style="color: rgba(0, 0, 255, 1)">private</span> HashMap&lt;String,JedisPool&gt; poolList = <span style="color: rgba(0, 0, 255, 1)">new</span> HashMap&lt;String,JedisPool&gt;<span style="color: rgba(0, 0, 0, 1)">();

</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">static</span> Date yes = <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;

</span><span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">static</span> RedisPoolProxy _proxy = <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;


</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">static</span><span style="color: rgba(0, 0, 0, 1)"> RedisPoolProxy getInstance(){
    </span><span style="color: rgba(0, 0, 255, 1)">if</span>(<span style="color: rgba(0, 0, 255, 1)">null</span> ==<span style="color: rgba(0, 0, 0, 1)"> _proxy){
        _proxy </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> RedisPoolProxy();
    }
    </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> _proxy;
}
</span><span style="color: rgba(0, 0, 255, 1)">public</span> JedisPool getPool(String ip,<span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> port){
    JedisPool pool </span>= poolList.get(ip + ":" +<span style="color: rgba(0, 0, 0, 1)"> port);
    </span><span style="color: rgba(0, 0, 255, 1)">if</span>(<span style="color: rgba(0, 0, 255, 1)">null</span> ==<span style="color: rgba(0, 0, 0, 1)"> pool){
        JedisPoolConfig config </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> JedisPoolConfig();
        config.setMaxTotal(P.maxTotal);</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">最大连接数</span>
        config.setMaxIdle(P.maxIdle);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">最大空闲连接数</span>
config.setMaxWaitMillis(P.maxWaitMillis);//获取连接时的最大等待毫秒数 config.setTestOnBorrow(true);//在获取连接的时候检查有效性, 默认 false pool = new JedisPool(config, ip, port,60*1000); poolList.put(ip + ":" + port, pool);} return pool; }
</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">static</span> Integer getDataFromRedis(String ip, <span style="color: rgba(0, 0, 255, 1)">int</span> port, <span style="color: rgba(0, 0, 255, 1)">int</span> db, String localfilepath,<span style="color: rgba(0, 0, 255, 1)">boolean</span><span style="color: rgba(0, 0, 0, 1)"> delete){
    JedisPool pool </span>=<span style="color: rgba(0, 0, 0, 1)"> RedisPoolProxy.getInstance().getPool(ip,port);

    </span><span style="color: rgba(0, 0, 255, 1)">int</span> count = 0<span style="color: rgba(0, 0, 0, 1)">;
    </span><span style="color: rgba(0, 0, 255, 1)">boolean</span> flag = <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">;
    </span><span style="color: rgba(0, 0, 255, 1)">if</span>(<span style="color: rgba(0, 0, 255, 1)">null</span> !=<span style="color: rgba(0, 0, 0, 1)"> pool){
        Jedis redis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
        </span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
            redis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
            Pipeline pipeline </span>=<span style="color: rgba(0, 0, 0, 1)"> redis.pipelined();
            pipeline.select(db);
                
            Response</span>&lt;Set&lt;String&gt;&gt; response = pipeline.keys("*"<span style="color: rgba(0, 0, 0, 1)">);
            pipeline.sync();
            Set</span>&lt;String&gt; keys =<span style="color: rgba(0, 0, 0, 1)"> response.get();
            </span><span style="color: rgba(0, 0, 255, 1)">if</span>(<span style="color: rgba(0, 0, 255, 1)">null</span> !=<span style="color: rgba(0, 0, 0, 1)"> keys){
                pipeline.get(key);
                pipeline.del(key);
            }
            List</span>&lt;Object&gt; result =<span style="color: rgba(0, 0, 0, 1)"> pipeline.syncAndReturnAll();
            </span><span style="color: rgba(0, 0, 255, 1)">for</span><span style="color: rgba(0, 0, 0, 1)">(Object value:result){
                </span><span style="color: rgba(0, 0, 255, 1)">if</span>(value <span style="color: rgba(0, 0, 255, 1)">instanceof</span><span style="color: rgba(0, 0, 0, 1)"> String){
                    System.out.println((String)value</span>+"\n"<span style="color: rgba(0, 0, 0, 1)">);
                    count</span>++<span style="color: rgba(0, 0, 0, 1)">;
                }
            }
        }</span><span style="color: rgba(0, 0, 255, 1)">catch</span><span style="color: rgba(0, 0, 0, 1)"> (Exception e) {
            pool.returnBrokenResource(redis);
            e.printStackTrace();
            flag</span>=<span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">;
        } </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
            </span><span style="color: rgba(0, 0, 255, 1)">if</span> (<span style="color: rgba(0, 0, 255, 1)">null</span> != redis  &amp;&amp; <span style="color: rgba(0, 0, 255, 1)">null</span> !=<span style="color: rgba(0, 0, 0, 1)"> pool ) {
                pool.returnResource(redis);
            }
        }
    }
    </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> count;
}

}