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 {
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)">private</span> HashMap<String,JedisPool> poolList = <span style="color: rgba(0, 0, 255, 1)">new</span> HashMap<String,JedisPool><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>
</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><Set<String>> response = pipeline.keys("*"<span style="color: rgba(0, 0, 0, 1)">); pipeline.sync(); Set</span><String> 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><Object> 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 && <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; }
}