自分で書いたjedis操作テンプレートクラス
4519 ワード
Jedisはjavaのredisクライアントプログラムで、springの下に専門のjarパッケージがあり、既存のテンプレートクラスを提供しています.ただし、自分で練習するためには、redis操作を超簡単に行うツールクラスが必要です.そこで、適当に一つ書きました.
機能は簡単で、redisに対していくつかの通常の操作を行うことができて、いくつかのテストデータなどを追加するために使用して、javaのテンプレートの設計モードを熟知することができます.
コードは何かのフレームワークに取って代わるのではなく、繰り返し車輪を作るのではなく、練習であり、達人は直接迂回することができ、初心者は以下のことを学ぶことができます.
1.propertiesファイルの読み込み
2.内部クラス方式で作成された単一のクラスで、生まれながらにしてマルチスレッドをサポートする
3.jedisの基本的な使い方
4.テンプレートモードの使用
最終的な使用例:
コアのjedis操作はクラスをカプセル化し、jedispoolオブジェクトを作成することを含む:
コードの詳細は添付ファイルを参照してください.
機能は簡単で、redisに対していくつかの通常の操作を行うことができて、いくつかのテストデータなどを追加するために使用して、javaのテンプレートの設計モードを熟知することができます.
コードは何かのフレームワークに取って代わるのではなく、繰り返し車輪を作るのではなく、練習であり、達人は直接迂回することができ、初心者は以下のことを学ぶことができます.
1.propertiesファイルの読み込み
2.内部クラス方式で作成された単一のクラスで、生まれながらにしてマルチスレッドをサポートする
3.jedisの基本的な使い方
4.テンプレートモードの使用
最終的な使用例:
RedisTemplate util = new RedisTemplate();
/**
* redis
*/
util.consoleWithTrancation(new RedisTransactionCallback() {
@Override
public void execute(Transaction t) {
t.set("nname", "1111");
t.set("nname1", "222");
t.set("nname2", "333");
}
});
/**
* redis .
*/
util.consoleWithPipe(new RedisPipelineCallback() {
@Override
public void execute(Pipeline p) {
p.set("nn2ame", "1111");
p.set("nn2ame1", "222");
p.set("nn2ame2", "333");
}
});
/**
* redis .
*/
util.console(new RedisCallback() {
@Override
public void execute(Jedis j) {
j.set("haha", " ");
}
});
コアのjedis操作はクラスをカプセル化し、jedispoolオブジェクトを作成することを含む:
package brightmoon.redis;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import brightmoon.util.Util;
/**
* redis . , jedispool, .
*
* @author lsq
*
*/
public class RedisUtil {
protected Log log = LogFactory.getLog(this.getClass().getName());
private Properties pros;
private RedisUtil() {
init();
initialPool();
}
private static class SingletonHolder {
private static RedisUtil instance = new RedisUtil();
}
public static RedisUtil getInstance() {
return SingletonHolder.instance;
}
private String host;
private String port;
private String maxActive;
private String maxIdle;
private String testOnBorrow;
private String maxWait;
private JedisPool jedisPool;
private void init() {
InputStream in = null;
try {
pros = new Properties();
in = this.getClass().getResourceAsStream("/redis.properties");
pros.load(in);
host = pros.getProperty("host");
port = pros.getProperty("port");
maxActive = Util.notBlank(pros.getProperty("maxActive"), "20");
maxWait = Util.notBlank(pros.getProperty("maxWait"), "5");
maxIdle = Util.notBlank(pros.getProperty("maxIdle"), "1000");
testOnBorrow = Util.notBlank(pros.getProperty("testOnBorrow"),
"false");
} catch (Exception ex) {
log.error(" redis ", ex);
} finally {
if (in != null)
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private void initialPool() {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxActive(Integer.parseInt(maxActive));
config.setMaxIdle(Integer.parseInt(maxIdle));
config.setMaxWait(Integer.parseInt(maxWait));
config.setTestOnBorrow("true".equals(testOnBorrow));
jedisPool = new JedisPool(config, host, Integer.parseInt(port));
}
public Jedis getJedis() {
return jedisPool.getResource();
}
/**
* jedis.
*
* @param jd
*/
public void releaseBrokenJedis(Jedis jd) {
jedisPool.returnBrokenResource(jd);
jd = null;
}
/**
* jedis
*
* @param jd
*/
public void releaseJedis(Jedis jd) {
jedisPool.returnResource(jd);
jd = null;
}
}
コードの詳細は添付ファイルを参照してください.