【Jedis入門】JavaでRedisのリスト値を操作するCRUD実装ガイド
このチュートリアルでは、Jedisライブラリを使ってRedisのリスト値に対してCRUD(作成・読み取り・更新・削除)操作を行う方法を解説します。
Jedisライブラリとは
Jedisは、Redisデータストア向けのJavaクライアントライブラリです。軽量で非常に使いやすく、Redis 2.8.x、3.x.x以降のバージョンと完全な互換性があります。詳細については、Jedisの公式ドキュメントをご参照ください。
リスト値とは
リストは、挿入順に並べられた文字列のシーケンスです。Redisではリストを値として保存でき、さまざまなRedisコマンドを使って、データベース内のリスト値の保存・管理・取得が可能です。リスト関連コマンドの詳細は、Redis公式ドキュメントをご覧ください。
プロジェクトのセットアップ
お好みのIDEでシンプルなMavenプロジェクトを作成し、pom.xmlファイルに以下の依存関係を追加します。
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.0.1</version> </dependency>
Jedisライブラリの最新バージョンについては、Mavenセントラルリポジトリのページで確認してください。
Redisのインストール
最新版のRedisをインストールしておく必要があります。インストール手順の詳細は、Redis公式サイトのダウンロードページをご確認ください。
Jedis接続
Jedisクラス(redis.clients.jedis.Jedis)のオブジェクトを作成することで、JavaコードとRedisを接続できます。
Jedis jedis = new Jedis();
ローカルマシン上でデフォルトポート(6379)のRedisサービスを起動している場合は、デフォルトコンストラクタでそのまま動作します。それ以外の場合は、正しいホストURLとポート番号を引数としてコンストラクタに渡してください。
作成と追加(Create & Add)
Jedisライブラリには、リスト値を作成して要素を挿入するためのメソッドが複数用意されています。主なメソッドは以下の通りです。
- lpush:リスト値の先頭に1つ以上の要素を挿入します。リスト値が存在しない場合は、挿入操作の前に空のリスト値を持つキーを新規作成します。
/* 新しいリストを作成し、文字列a、b、cを先頭に挿入 */ jedis.lpush("list-1", "a", "b", "c"); /* 新しいリストを作成し、文字列1、2のバイト配列を先頭に挿入 */ jedis.lpush("list-2".getBytes(), new BigInteger("1").toByteArray(), new BigInteger("2").toByteArray()); - rpush:リスト値の末尾に1つ以上の要素を挿入します。リスト値が存在しない場合は、挿入操作の前に空のリスト値を持つキーを新規作成します。
/* 新しいリストを作成し、文字列a、b、cを末尾に挿入 */ jedis.rpush("list-3", "a", "b", "c"); /* 新しいリストを作成し、文字列1、2のバイト配列を末尾に挿入 */ jedis.rpush("list-4".getBytes(), new BigInteger("1").toByteArray(), new BigInteger("2").toByteArray()); - lpushx:リスト値が既に存在する場合のみ、リスト値の先頭に1つ以上の要素を挿入します。
/* リスト「list-1」の先頭に文字列d、eを挿入 */ jedis.lpushx("list-1", "d", "e"); /* リスト「list-2」の先頭に文字列3、4を挿入 */ jedis.lpushx("list-2".getBytes(), new BigInteger("3").toByteArray(), new BigInteger("4").toByteArray()); - rpushx:リスト値が既に存在する場合のみ、リスト値の末尾に1つ以上の要素を挿入します。
/* リスト「list-3」の末尾に文字列d、eを挿入 */ jedis.rpushx("list-3", "d", "e"); /* リスト「list-4」の末尾に文字列3、4を挿入 */ jedis.rpushx("list-4".getBytes(), new BigInteger("3").toByteArray(), new BigInteger("4").toByteArray());
削除と取得(Remove & Return)
リスト値に対してスタックのようなポップ操作を行うためのメソッドが2つあります。
- lpop:リスト値の先頭要素を削除して返します。
/* 「list-1」の先頭から1つの要素を削除して返す */ jedis.lpop("list-1"); /* 「list-2」の先頭から1つの要素を削除して返す */ jedis.lpop("list-2".getBytes()); - rpop:リスト値の末尾要素を削除して返します。
/* 「list-3」の末尾から1つの要素を削除して返す */ jedis.rpop("list-3"); /* 「list-4」の末尾から1つの要素を削除して返す */ jedis.rpop("list-4".getBytes());
長さの取得
llenメソッドは、キーに保存されているリスト値の長さを取得するために使用します。コード例:
/* 「list-1」のサイズを返す */
jedis.llen("list-1");
/* 「list-2」のサイズを返す */
jedis.llen("list-2".getBytes());
要素の削除
lremメソッドは、リスト値から指定した要素の出現箇所を削除するために使用します。
/* 「list-1」から要素aを1つ削除 */
jedis.lrem("list-1", 1, "a");
/* 「list-2」から要素1を2つ削除 */
jedis.lrem("list-2".getBytes(), 2, "1".getBytes());
インデックスによる取得
lindexメソッドは、インデックスを指定して要素を取得するために使用します。
/* 「list-1」からインデックス3の要素を取得 */
jedis.lindex("list-1", 3);
/* 「list-2」からインデックス2の要素を取得 */
jedis.lindex("list-2".getBytes(), 2);
インデックスによる更新
lsetメソッドは、インデックスを指定して要素を更新するために使用します。
/* 「list-1」のインデックス3に要素gを設定 */
jedis.lset("list-1", 3, "g");
/* 「list-2」のインデックス2に要素6を設定 */
jedis.lset("list-2".getBytes(), 2, "6".getBytes());
複数要素の取得
lrangeメソッドは、オフセット引数で指定した範囲の1つ以上の要素をリスト値から取得するために使用します。
/* 「list-1」からインデックス1〜5の要素を返す */
jedis.lrange("list-1", 1, 5);
/* 「list-2」のすべての要素を返す */
jedis.lrange("list-2".getBytes(), 0, -1);
参考資料
- Redis公式ドキュメント:Listコマンド
以上が、Jedisライブラリを使ってリスト値に対してCRUD操作を行う方法の解説でした。この記事が役に立ったら、コメント欄でご意見をお聞かせいただき、他の方にもぜひシェアしてください。
-
Redis LRANGEコマンドの使い方 – リスト値の全要素を取得する方法を解説
このチュートリアルでは、Redisデータストアに保存されたキーのリスト値から、すべての要素を取得する方法を解説します。そのために使用するのが、RedisのLRANGEコマンドです。 LRANGEコマンドとは LRANGEコマンドは、指定したキーに保存されているリスト値から、指定されたオフセット(範囲)に基づいて1つ以上の要素を返すコマンドです。開始位置(start)と終了位置(end)の2つの引数を受け取り、どちらも範囲に含まれます。 これらのオフセットは0始まりのインデックスで指定します。つまり、「0」が最初の要素、「1」が2番目の要素を意味します。また、負の数を使うことでリストの末尾からの
-
JedisライブラリでRedisのPub/Subシステムを実装する方法【Javaサンプルコード付き】
このチュートリアルでは、Java向けクライアントライブラリ「Jedis」を使用して、RedisのPub/Sub(パブリッシュ/サブスクライブ)システムを実装する方法を解説します。 Jedisライブラリとは Jedisは、Redisデータストア用のJavaクライアントライブラリです。軽量で非常に扱いやすく、Redis 2.8.x、3.x.x以降のバージョンと完全な互換性があります。シンプルなAPI设计で、Redisの各種コマンドを直感的に操作できるのが特徴です。 RedisのPub/Subシステムとは Redisは、Publish/Subscribe(パブリッシュ/サブスクライブ)型のメッセージ