redis
Jedisを使ってJavaでRedisに接続する方法
サーチ…
前書き
RedisにはJavaで10種類以上のクライアントライブラリが用意されています。最も人気のあるクライアントの1つはJedisです。
備考
Jedisの入手
Jedisライブラリは、通常、プロジェクトのビルド環境に組み込まれた依存関係管理システムを使用して、Javaプロジェクトに追加されます。 2つの一般的なJavaビルドシステムは、MavenとGradleです。
Gradleを使用する
JedisライブラリをGradleプロジェクトに追加するには、リポジトリを設定して依存関係を追加する必要があります。次のスニペットは、Jedisライブラリのバージョン2.9.0をGradleプロジェクトに追加する方法を示しています。
repositories {
mavenCentral()
}
dependencies {
compile 'redis.clients:jedis:2.9.0'
}
Mavenの使用
JedisをMavenプロジェクトに追加するには、依存関係リストに依存関係を追加し、ライブラリの座標を指定する必要があります。次のスニペットがpom.xmlファイルに追加されます。
<dependencies>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
</dependencies>
レディスへの接続
プールの使用
ほとんどのコードは、共有接続オブジェクトのプールを使用してRedisに接続することを望みます。プールを使用してRedisに接続するには、2つの異なるコードブロックが必要です。初期化時に、アプリケーションで接続プールを作成する必要があります。
JedisPoolConfig poolCfg = new JedisPoolConfig();
poolCfg.setMaxTotal(3);
pool = new JedisPool(poolCfg, hostname, port, 500, password, false);
JedisPoolConfig
は、プールの調整オプションがあります。
アプリケーションがワークロードを処理する際には、次のコードを使用して共有プールから接続を取得する必要があります。
try (Jedis jedis = pool.getResource()) {
...
}
ベストプラクティスは、try-with-resourcesブロック内のプールからJedis
接続オブジェクトを取得することです。
プールなし
単純なアプリケーションや統合テストのような場合には、共有プールを処理せずにJedis
接続オブジェクトを直接作成することもJedis
ます。これは次のコードで実現できます:
try (Jedis jedis = new Jedis(hostname, port)) {
jedis.connect();
jedis.auth(password);
jedis.select(db);
. . .
}
繰り返しますが、try-with-resourcesブロック内にJedisクライアントオブジェクトを作成することをお勧めします。
基本的なGet / Setコマンドの実行
Redisへの接続を確立すると、 Jedis
接続オブジェクトを使用して値を取得および設定できます。
取得する
String value = jedis.get(myKey);
セット
jedis.put(myKey, "some value");
コマンドの実行
Jedisを使用してRedisコマンドを実行するには、プールから作成したJedis
オブジェクトに対してメソッド呼び出しを行います。 JedisはRedisコマンドをメソッド呼び出しとして公開しています。
- String get(String key)
- Long geoadd(String key, double longitude, double latitude, String member)
- List<String> hmget(String key, String... fields)
- Long hsetnx(String key, String field, String value)
RedisでStringキーの値を設定する場合は、次のようなコードブロックを使用します。
try (Jedis jedis = pool.getResource()) {
String myKey = "users:20";
String myValue = "active";
jedis.set(myKey, myValue);
}