こちらの 最近のブログ記事では、Redisの6つのデータ型について学びました。Redisのリストには、追加されたのと同じ順序で並べ替えられた文字列のコレクションが含まれます。この記事では、リストデータ型について詳しく説明し、それらを管理するための主なコマンドのいくつかに焦点を当てます。
リストのパフォーマンス
Redisでは、リストはリンクされたリストとして実装されることに注意することが重要です。リンクされたリストは、そのノードにデータフィールドと、リスト内の次のノードへの"next"参照(リンク)が含まれるリストです:
これはパフォーマンスに関していくつかの重要な影響を及ぼします。リストの先頭と末尾に要素を追加するのは高速ですが、(配列の場合のように)要素へのインデックス付きアクセスがないため、リスト内の要素の検索は遅くなります。
リストの作成
リストは、データの後にキー名をプッシュするRedisコマンドを使用して作成されます。使用できるコマンドは、RPUSHとLPUSHの2つです。キーが存在しない場合、これらのコマンドは、渡された引数を要素として含む新しいリストを返します。キーがすでに存在する場合、または、キーがリストでない場合は、エラーが返されます。
RPUSH
RPUSHは、リストの最後(末尾)に新しい要素を挿入します:
RPUSH key value [value ...]
ギターブランドのリストを表す"guitars"キーを作成しましょう:
RPUSH guitars "Jackson" // 1 RPUSH guitars "Fender" // 2 RPUSH guitars "Gibson" // 3
要素を挿入する度に、Redisは挿入後のリストの長さを返します。上記の3つのステートメントの後、guitarsには次の3つの要素が含まれているはずです:
Jackson Fender Gibson
LPUSH
LPUSHは、リストの先頭(ヘッダー)に要素を挿入することを除いて、RPUSHと同じように動作します:
LPUSH key value [value ...]
次のように、LPUSHを使用してguitarsリストの先頭に新しい値を挿入できます:
LPUSH guitars "Ibanez" //4
現在、"Ibanez"をはじめとして4つのギターがあります:
Ibanez Jackson Fender Gibson
Navicatでのリストの作成
Navicat for Redis のエディタでは、リスト値は要素として表されます。要素の右側にある省略記号[...]ボタンをクリックすると、特別なエディタが開き、個々のリスト要素を入力できます:
適用ボタンをクリックすると、新しいリストまたは要素が追加されます。
追加したら、上向きと下向きの矢印ボタンを使用してリスト内の要素の位置を変更できます。
LRANGEを使用したリスト項目の取得
LRANGEは、指定された開始インデックスと終了インデックスに基づいてリストのサブセットを返します:
LRANGE key start stop
開始インデックスと終了インデックスに0と-1を指定すると、完全なリストを表示できます:
LRANGE guitars 0 -1 //returns Ibanez Jackson Fender Gibson
一方、次のコマンドは最初の2つのギターを取得します:
LRANGE guitars 0 1 //returns Ibanez Jackson
リストからの要素の削除
LPOPは、リストの最初の要素を削除して返します。一方、RPOPは、リストの最後の要素を削除して返します。ここではいくつかの例を示します:
LPOP guitars //returns Ibanez RPOP guitars //returns Gibson
Navicatのエディタでは、リスト要素を選択し、要素値の下にある削除[-]ボタンをクリックすることで、リスト要素を削除できます:
結論
このブログ記事では、redis-cliを介する場合と Navicat for Redis を使用する場合について、Redisでリストを管理するための主なコマンドのいくつかを取り上げました。
Navicat for Redisを試してみたい場合は、こちら からダウンロードしてください。トライアル版では14日間全ての機能を使用できます。