このページは機械翻訳したものです。
daemon_memcached
プラグインは、複数の get 操作 (単一の memcached クエリーで複数のキーと値のペアをフェッチ) および範囲クエリーをサポートしています。
複数の get 操作
単一の memcached クエリーで複数のキーと値のペアをフェッチする機能により、クライアントとサーバー間の通信トラフィックが削減され、読取りパフォーマンスが向上します。 InnoDB
の場合、トランザクションおよびオープンテーブル操作が少なくなります。
次の例は、複数データセットのサポートを示しています。 この例では、新しいテーブルとカラムのマッピングの作成 で説明されている test.city
テーブルを使用します。
Press CTRL+C to copymysql> USE test; mysql> SELECT * FROM test.city; +---------+-----------+-------------+---------+-------+------+--------+ | city_id | name | state | country | flags | cas | expiry | +---------+-----------+-------------+---------+-------+------+--------+ | B | BANGALORE | BANGALORE | IN | 0 | 1 | 0 | | C | CHENNAI | TAMIL NADU | IN | 0 | 0 | 0 | | D | DELHI | DELHI | IN | 0 | 0 | 0 | | H | HYDERABAD | TELANGANA | IN | 0 | 0 | 0 | | M | MUMBAI | MAHARASHTRA | IN | 0 | 0 | 0 | +---------+-----------+-------------+---------+-------+------+--------+
get
コマンドを実行して、city
テーブルからすべての値を取得します。 結果はキーと値のペアの順序で返されます。
Press CTRL+C to copytelnet 127.0.0.1 11211 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. get B C D H M VALUE B 0 22 BANGALORE|BANGALORE|IN VALUE C 0 21 CHENNAI|TAMIL NADU|IN VALUE D 0 14 DELHI|DELHI|IN VALUE H 0 22 HYDERABAD|TELANGANA|IN VALUE M 0 21 MUMBAI|MAHARASHTRA|IN END
単一の get
コマンドで複数の値を取得する場合、(@@
テーブル記法を使用して) テーブルを切り替えて最初のキーの値を取得できますが、後続のキーのテーブルを切り替えることはできません。 たとえば、この例のテーブルスイッチは有効です:
containers.name
Press CTRL+C to copyget @@aaa.AA BB VALUE @@aaa.AA 8 12 HELLO, HELLO VALUE BB 10 16 GOODBYE, GOODBYE END
同じ get
コマンドでテーブルの切替えを再試行して別のテーブルからキー値を取得することはサポートされていません。
複数の get 操作で取得できるキーの数に制限はありませんが、結果を格納するための 128MB のメモリー制限があります。
範囲クエリー
範囲クエリーの場合、daemon_memcached
プラグインでは次の比較演算子がサポートされます: <
, >
, <=
, >=
。 演算子の前に@
記号を付ける必要があります。 範囲クエリーで複数の一致するキーと値のペアが見つかった場合、結果はキーと値のペアの順序で返されます。
次の例は、範囲クエリーのサポートを示しています。 この例では、新しいテーブルとカラムのマッピングの作成 で説明されている test.city
テーブルを使用します。
Press CTRL+C to copymysql> SELECT * FROM test.city; +---------+-----------+-------------+---------+-------+------+--------+ | city_id | name | state | country | flags | cas | expiry | +---------+-----------+-------------+---------+-------+------+--------+ | B | BANGALORE | BANGALORE | IN | 0 | 1 | 0 | | C | CHENNAI | TAMIL NADU | IN | 0 | 0 | 0 | | D | DELHI | DELHI | IN | 0 | 0 | 0 | | H | HYDERABAD | TELANGANA | IN | 0 | 0 | 0 | | M | MUMBAI | MAHARASHTRA | IN | 0 | 0 | 0 | +---------+-----------+-------------+---------+-------+------+--------+
telnet セッションを開きます:
Press CTRL+C to copytelnet 127.0.0.1 11211 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'.
B
より大きいすべての値を取得するには、get @>B
を入力します:
Press CTRL+C to copyget @>B VALUE C 0 21 CHENNAI|TAMIL NADU|IN VALUE D 0 14 DELHI|DELHI|IN VALUE H 0 22 HYDERABAD|TELANGANA|IN VALUE M 0 21 MUMBAI|MAHARASHTRA|IN END
M
より小さいすべての値を取得するには、get @<M
を入力します:
Press CTRL+C to copyget @<M VALUE B 0 22 BANGALORE|BANGALORE|IN VALUE C 0 21 CHENNAI|TAMIL NADU|IN VALUE D 0 14 DELHI|DELHI|IN VALUE H 0 22 HYDERABAD|TELANGANA|IN END
M
以下のすべての値を取得するには、get @<=M
を入力します:
Press CTRL+C to copyget @<=M VALUE B 0 22 BANGALORE|BANGALORE|IN VALUE C 0 21 CHENNAI|TAMIL NADU|IN VALUE D 0 14 DELHI|DELHI|IN VALUE H 0 22 HYDERABAD|TELANGANA|IN VALUE M 0 21 MUMBAI|MAHARASHTRA|IN
B
より大きく、M
より小さい値を取得するには、get @>B@<M
を入力します:
Press CTRL+C to copyget @>B@<M VALUE C 0 21 CHENNAI|TAMIL NADU|IN VALUE D 0 14 DELHI|DELHI|IN VALUE H 0 22 HYDERABAD|TELANGANA|IN END
最大 2 つの比較演算子を解析できます。1 つは次より小さい (@<
) 演算子または次以下 (@<=
) 演算子で、もう 1 つは次より大きい (@>
) 演算子または次以上 (@>=
) 演算子です。 追加の演算子はキーの一部とみなされます。 たとえば、3 つの演算子を使用して get
コマンドを発行すると、3 つ目の演算子 (@>C
) はキーの一部として扱われ、get
コマンドは M
より小さく B@>C
より大きい値を検索します。
Press CTRL+C to copyget @<M@>B@>C VALUE C 0 21 CHENNAI|TAMIL NADU|IN VALUE D 0 14 DELHI|DELHI|IN VALUE H 0 22 HYDERABAD|TELANGANA|IN