redis学習ログ【二、redis+jedis】
現在redisはjava言語ベースのクライアント開発パッケージがほぼ3種類あります. Jredis Jedis Redis4J
Jedisは公式に唯一提供されているjava言語クライアント開発パッケージであり、最も広く応用されているはずです.
それでは実戦を始めましょう.
私が使っているのはjedis-2.8.0です.jarパッケージダウンロードアドレス:ここをクリック
1.Hello wordはわずかなコードしか必要ありません.
jedisの操作は非常に軽便であることがわかる.コンソールでredisを操作する方法にも近似したい.
2.プール化jedisの使用:commons-poolを使用してプール化の実現を完了する.まずredisを作成します.propertiesプロファイル
プロファイルが1回のみ読み込まれることを、単一のモデルで確認します.
静的ブロックでの初期化の完了
上のコードを変更
3.クラスタredisはMaster-Slaveに基づいているので、redisをクラスタ化するにはMaster-Slaveを複数セット作成し、クライアントツールを介してコンシステンシハッシュを完了することにほかならない
redisでpropertiesに新しいipを追加
前のstaticブロックで2つのJedisShardInfoをリストにインスタンス化
JedisPoolの代わりにShardedJeddisPoolを初期化:
ShardedJeddisに変更し、Jeddisオブジェクトを取得します.
以上の実践により,基本的なjedis操作は既に使用可能である.次に、フレームワークの統合について説明します.
Jedisは公式に唯一提供されているjava言語クライアント開発パッケージであり、最も広く応用されているはずです.
それでは実戦を始めましょう.
一、かばんの準備。
私が使っているのはjedis-2.8.0です.jarパッケージダウンロードアドレス:ここをクリック
二、実戦
1.Hello wordはわずかなコードしか必要ありません.
public static void main(String[] args) {
// redis IP, 6379
Jedis jedis=new Jedis("127.0.0.1");
String key="name";
//
jedis.del(key);
//
jedis.set(key,"wln");
//
String value=jedis.get(key);
System.out.println(value);
}
jedisの操作は非常に軽便であることがわかる.コンソールでredisを操作する方法にも近似したい.
2.プール化jedisの使用:commons-poolを使用してプール化の実現を完了する.まずredisを作成します.propertiesプロファイル
#
redis.pool.maxActive=1024
# idel
redis.pool.maxIdle=200
#
redis.pool.maxWait=1000
# borrow Object
redis.pool.testOnBorrow=true
# return Object
redis.pool.testOnReturn=true
#IP
redis.ip=127.0.0.1
#port
redis.port=6379
プロファイルが1回のみ読み込まれることを、単一のモデルで確認します.
public class MyProperties extends Properties{
private static MyProperties mp;
private MyProperties(){
try {
this.load(MyProperties.class.getClassLoader().getResourceAsStream("redis.properties"));
} catch (IOException e) {
e.printStackTrace();
}
}
public static MyProperties getInstance() {
if(mp==null){
mp=new MyProperties();
}
return mp;
}
}
静的ブロックでの初期化の完了
private static JedisPool pool;
static {
JedisPoolConfig config = new JedisPoolConfig();
//
config.setMaxTotal(Integer.valueOf(MyProperties.getInstance()
.getProperty("redis.pool.maxActive")));
// idel
config.setMaxIdle(Integer.valueOf(MyProperties.getInstance()
.getProperty("redis.pool.maxIdle")));
//
config.setMaxWaitMillis(Long.valueOf(MyProperties.getInstance()
.getProperty("redis.pool.maxWait")));
// borrow Object
config.setTestOnBorrow(Boolean.valueOf(MyProperties.getInstance()
.getProperty("redis.pool.testOnBorrow")));
// return Object
config.setTestOnReturn(Boolean.valueOf(MyProperties.getInstance()
.getProperty("redis.pool.testOnReturn")));
pool = new JedisPool(config, MyProperties.getInstance().getProperty("redis.ip"),Integer.valueOf(MyProperties.getInstance().getProperty("redis.port")));
}
上のコードを変更
public static void main(String[] args) {
//
Jedis jedis=pool.getResource();
String key="name";
//
jedis.del(key);
//
jedis.set(key,"wrm");
//
String value=jedis.get(key);
System.out.println(value);
//
pool.returnResource(jedis);
}
3.クラスタredisはMaster-Slaveに基づいているので、redisをクラスタ化するにはMaster-Slaveを複数セット作成し、クライアントツールを介してコンシステンシハッシュを完了することにほかならない
redisでpropertiesに新しいipを追加
redis.ip1=192.168.15.212
前のstaticブロックで2つのJedisShardInfoをリストにインスタンス化
edisShardInfo jedis1 = new JedisShardInfo( MyProperties.getInstance().getProperty("redis.ip"),
Integer.valueOf(MyProperties.getInstance().getProperty("redis.port")));
JedisShardInfo jedis2 = new JedisShardInfo(MyProperties.getInstance().getProperty("redis.ip"),
Integer.valueOf(MyProperties.getInstance().getProperty("redis.port")));
List<JedisShardInfo> list = new LinkedList<JedisShardInfo>();
list.add(jedis1);
list.add(jedis2);
JedisPoolの代わりにShardedJeddisPoolを初期化:
ShardedJedisPool pool = new ShardedJedisPool(config, list);
ShardedJeddisに変更し、Jeddisオブジェクトを取得します.
ShardedJedis jedis=pool.getResource();
以上の実践により,基本的なjedis操作は既に使用可能である.次に、フレームワークの統合について説明します.