20.1.9 ead_put_all()(keyとvalueの一括格納)
(1) 機能
複数のkeyとvalueをキャッシュに一括格納します。
引数にはead_key_value_pair構造体の配列を指定し,それぞれのkeyとvalueを関連づけてキャッシュに格納します。
同じkeyを複数指定した場合は,指定した順にそれぞれ実行されます。
データ自動削除機能を使用している場合,key数がしきい値の上限に達しているときは,データの削除ポリシーに従ってしきい値を超える件数分のデータを削除してから,複数のkeyとvalueを一括格納します。既存のデータを更新する場合もデータは削除されます。
データ自動削除機能でデータの削除に失敗した場合,失敗した件数分はvalueの格納を実行しません。
(2) 形式
#include <eads.h> ead_put_all_results ead_put_all ( const EAD_CACHE *cp, /* In */ size_t array_length, /* In */ const ead_key_value_pair *key_value_array, /* In */ int *error_code /* Out */ );
(3) 引数
- cp
-
keyとvalueを格納するキャッシュのハンドル(ポインタ)を指定します。
ead_start_cache()で取得したハンドルを指定してください。
- array_length
-
格納するead_key_value_pair構造体の配列の要素数を指定します。
ead_key_value_pair構造体の形式と説明については,「20.1.44 ead_key_value_pair構造体(keyとvalueの組み合わせ)」を参照してください。
- key_value_array
-
格納するead_key_value_pair構造体の配列の先頭を指すポインタを指定します。
ead_key_value_pair構造体の形式と説明については,「20.1.44 ead_key_value_pair構造体(keyとvalueの組み合わせ)」を参照してください。
- error_code
-
エラーコード取得先のポインタを指定します。
エラーコードについては,「20.2 クライアントライブラリのエラーコード(C言語)」を参照してください。
(4) 戻り値
keyとvalueの一括格納の結果(ead_put_all_results構造体)が返却されます。
-
一括格納に成功している場合
success_operation_numberメンバが,引数に指定したkeyの一覧中のkeyの数と同じ値になり,failure_infoメンバがNULLになります。
-
一括格納に一部またはすべて失敗した場合
failure_infoメンバに,failure_operation_numberメンバが示す個数分,失敗した操作の情報が返却されます。データ自動削除機能でデータの削除に失敗した場合,valueの格納を実行しなかったkeyは,データの削除に失敗したときの情報が返却されます。
-
keyごとの処理以外でエラーが発生した場合(引数の不正やメモリ領域の不足などが発生した場合)
ead_put_all_results構造体の数値型のメンバは0,ポインタ型のメンバはNULLになります。
ead_put_all_results構造体の形式と説明については,「20.1.47 ead_put_all_results構造体(ead_put_all()の実行結果)」を参照してください。
(5) 注意事項
-
valueの一括格納に失敗した場合,次のエラーコードが返却されます。
-
一括格納にすべて失敗したとき
EAD_ERROR_BATCH_FAILED_ALL
-
一括格納に一部失敗したとき
EAD_ERROR_BATCH_FAILED_PART
-
-
戻り値として返却された,keyとvalueの一括格納の結果を格納するメモリ領域は,自動的に解放されないため,APで解放してください。詳細については,「19.1.1(10) 戻り値として返却されたメモリ領域を解放する」を参照してください。
-
array_lengthには,0は指定できません。また,不正な値を指定した場合,動作は保証されません。
-
ead_key_value_pair構造体の配列は,必ず要素数分の連続したメモリ領域を確保してください。
-
キャッシュの操作が部分的に失敗した場合,戻り値からどの操作が失敗したか判別して,必要に応じてこの関数を再度実行してください。
-
キャッシュの操作中に排他処理はされません。そのため,一括操作中に,ほかのキャッシュ操作によって操作対象のvalueが変更されることがあります。
-
大量のデータを一括操作する場合,EADSクライアントおよびEADSサーバでメモリが大量に消費されることがあります。
-
大量のデータを一括操作する場合,操作の完了までに時間が掛かることがあります。そのため,タイムアウト時間を適切に設計してください。