19.2.3 データ操作に関する留意事項
- 〈この項の構成〉
(1) データ操作に関する留意事項
データ操作に関する留意事項を次に示します。
-
指定したkeyがすでにキャッシュに格納されている場合,ead_put()は無条件にvalueを更新します。無条件にvalueを更新したくない場合は,次の関数を使用してください。
-
ead_create()
新規にkeyを格納する場合だけ,valueをkeyに関連づけて格納します。
-
ead_update()
指定したkeyがすでに格納されている場合だけ,valueをkeyに関連づけて格納します。
-
ead_replace()
指定したkeyに関連づけられているvalueを,条件として指定したvalue情報と比較します。valueが一致している場合だけ,valueをkeyに関連づけて格納します。
-
-
ead_get()の実行時,次の場合にはead_value_element構造体のvalueメンバにNULLが返却されます。
-
keyがキャッシュに存在しない場合
-
value情報の取得に失敗した場合
-
valueのデータサイズが0バイトの場合(Java言語のAPIで格納された,長さ0のバイト配列を取得した場合)
-
-
ead_get()などの実行時に,戻り値として返却されたvalueのメモリ領域は自動的には解放されません。APで解放してください。詳細については,「19.1.1(10) 戻り値として返却されたメモリ領域を解放する」を参照してください。
-
ead_replace()の実行時に,指定したkeyが存在しない場合は,EAD_ERROR_SERVER_REPLACE_METHOD_KEY_NOT_EXISTが返却されます。
-
ead_replace()の実行時に,指定したkeyに関連づけられたvalueが,比較条件に指定したvalueと一致しなかった場合,EAD_ERROR_SERVER_REPLACE_METHOD_NOT_MATCHEDが返却されます。
-
ead_create()の実行時に,指定したkeyがすでに存在する場合,EAD_ERROR_SERVER_CREATE_METHOD_KEY_EXISTが返却されます。
-
ead_update()の実行時に,指定したkeyが存在しない場合,EAD_ERROR_SERVER_UPDATE_METHOD_KEY_NOT_EXISTが返却されます。
(2) データの一括操作に関する留意事項
データの一括操作に関する留意事項を次に示します。
-
指定したkeyがすでにキャッシュに格納されている場合,ead_put_all()は無条件にvalueを更新します。
-
キャッシュの操作中に排他処理はされません。そのため,一括操作中に,ほかのキャッシュ操作によって操作対象のvalueが変更されることがあります。
-
大量のデータを一括操作する場合,EADSクライアントおよびEADSサーバでメモリが大量に消費されることがあります。
-
大量のデータを一括操作する場合,操作の完了までに時間が掛かることがあります。そのため,タイムアウト時間を適切に設計してください。
-
ead_put_all()などの実行時に,戻り値として返却されたメモリ領域は自動的には解放されません。APで解放してください。詳細については,「19.1.1(10) 戻り値として返却されたメモリ領域を解放する」を参照してください。
-
複数のkeyを指定する一括操作の実行時に,あるkeyに対する操作に失敗した場合やクラスタ構成が変更された場合は,一括操作の処理が終了し,その時点で未実行の操作がキャンセルされます。一括操作中に,ユーザの操作(例:スケールアウト処理,リバランス処理,または復旧処理)によってクラスタ構成が変更された場合も,未実行の操作がキャンセルされます。
操作に失敗したkeyおよび失敗した要因については,各関数の戻り値から判断してください。また,操作がキャンセルされたkeyについては,EAD_ERROR_CLIENT_BATCH_CANCELのエラーコードで確認できます。
-
複数のkeyを指定する一括操作の実行時に,keyに対する操作がすべて失敗した場合は,EAD_ERROR_BATCH_FAILED_ALLが返却されます。
-
複数のkeyを指定する一括操作の実行時に,keyに対する操作が部分的に失敗した場合は,EAD_ERROR_BATCH_FAILED_PARTが返却されます。