nginxのは(操作方法)辞書項目のAPIを共有しました

すべてのワーカープロセスの共有辞書のエントリが表示されていると呼ばれるnginxの共有メモリは、グローバル変数です。

[]の内容についての発言は発言です。

出典Analysisドキュメントします。https://www.codercto.com/a/9488.html

gitのドキュメントします。https://github.com/openresty/lua-nginx-module#ngxshareddictget

グローバル辞書のエントリを設定し、ブロックは、httpに配置されました:

lua_shared_dict猫[辞書項目名] 12M [メモリサイズ];

 

1、ngx.shared.DICT.get

语法:値、フラグ= ngx.shared.DICT:GET(キー)

共有メモリに対応するキーの値を取得します。キーが存在しない、またはキーの有効期限が切れている、それはnilを返します場合は、エラーが発生した場合、それはゼロとエラーメッセージを返します。

地元の猫=ローカル値をngx.shared.cats、フラグ= cats.get(猫、 "結婚")

等価に

地元の猫=ローカル値、フラグ=猫をngx.shared.cats:GET( "結婚")

返されたリスト内のフラグが、値がngx.shared.DICT.set方式に設定され、デフォルト値はフラグが0に設定されている場合は、ここでのフラグの値が返されることはありません0です。

 

2、ngx.shared.DICT.get_stale

構文:値、フラグ、失効= ngx.shared.DICT:類似get_stale(キー)及び方法を得る、方法はまた、期限切れのキーを返すことを、第3のキーリターンパラメータが返された値が満了したか否かを示す以外は、期限切れに真、偽表現が満了していません。

 

3、ngx.shared.DICT.set

语法:成功、ERR、強制= ngx.shared.DICT:セット(キー、値、EXPTIME?フラグ?)

3つの復帰条件「の値を意味し、「トークは、共有メモリキーと値のペア、に挿入する」無条件に同じキーが既に共有メモリ上に存在するとは無関係に挿入するかどうかを指します。

成功:真挿入成功、失敗はfalseを挿入します

ERR:あなたが失敗した場合の動作エラーメッセージは、それが「メモリーなし」に類似してもよいです

強制:真強制的に共有メモリには、削除辞書のエントリが挿入を達成していないしていることを示すメモリ、偽の上の他の辞書のエントリで共有し、インサート(LRUアルゴリズム)を除去することによって、達成する必要があることを示しています。

3番目のパラメータは秒(s)でそのキーEXPTIME有効期限を示し、デフォルト値が期限切れにならないことを示し、0であり、ユーザフラグ値であるパラメータフラグは、また、getメソッドを呼び出しますゲットするとき。

地元の猫= ngx.shared.cats
地元のsucc、errは、強制= cats.set(猫は、 "それは素敵な猫です!" "結婚")
 
等价于
 
ローカル猫= ngx.shared.cats
地元のsucc、errは、強制=猫:セット(「結婚」、「それはいい猫です!」)

4、ngx.shared.DICT.safe_set

语法:OK、ERR = ngx.shared.DICT:safe_set(キー、値、EXPTIME?フラグ?)

ことを除いて同様の設定方法であって、共有メモリを強制的に挿入(LRUアルゴリズム)に実装される方法を除去することにより、排出されていない場合です。メモリが返される場合は、直接ゼロとERR情報「メモリーなし」

注意:

共通セットとsafe_setはこれです:すでに挿入されるキーは、新しい値の元の値に対応するキーがカバーされます、存在する場合は!

5、ngx.shared.DICT.add

语法:成功、ERR、強制= ngx.shared.DICT:アドオン(キー、値、EXPTIME?フラグ?)

設定方法と同様に、キーが既に挿入する場合の方法は、(単にメソッドを追加サブセット方式の方法であると考えられる)を設定し、重複キーを挿入していないことが存在する以外は、戻りゼロとERR =「存在」

6、ngx.shared.DICT.safe_add

语法:OK、ERR = ngx.shared.DICT:safe_add(キー、値、EXPTIME?フラグ?)

Safe_set同様の方法、存在するキーが既に挿入する場合、重複キーは、(safe_add方法は単にサブメソッドsafe_set法であると考えられる)が挿入されていないことを除いて、戻りゼロとERR =「存在」

7、ngx.shared.DICT.replace

语法:成功、ERR、強制= ngx.shared.DICT:交換する(キー、値、EXPTIME?フラグ?)

唯一の既存のキー操作が(簡単な方法を交換すると考えサブセット方式の方法であることができる)ことを除いて同様の設定方法であって、キーが辞書に存在しない場合に挿入されるように、それがゼロとエラーメッセージ「ではないが返され「見つかりました

8、ngx.shared.DICT.delete

  構文:ngx.shared.DICT:削除(キー)

  削除無条件に相当し、指定したキーと値のペア、

  ngx.shared.DICT:セット(キー、発信者)

 

9、   ngx.shared.DICT.incr

  语法:たnewval、ERR = ngx.shared.DICT:INCR(キー、値)

  キー操作に対応する増分値を、インクリメント値は、値が正の数、0の値であってもよいし、または負の数であってもよい値です。Luaの値は、それ以外の場合はゼロと「しない番号」返され、番号のタイプにタイプでなければならず、キーマストが既に共有メモリキー内に存在し、またはそれがゼロと「見つかりません」が返されます。

 
10、   ngx.shared.DICT.flush_all

  構文:ngx.shared.DICT:flush_all()

  辞書上のすべてのフィールドをクリアし、本当に解放されたメモリは、フィールドによって占められており、各フィールドは唯一の有効期限が切れたとしてマークされるわけではありません。

 

11、ngx.shared.DICT.flush_expired

  语法:フラッシュ= ngx.shared.DICT:flush_expired(MAX_COUNT?)

  クリアMAX_COUNTが期限切れのすべてのフィールドをクリアする必要性を与えられていない場合、戻り値は実際の削除の数が日付フィールドからフラッシュされ、上限を示し、または0、辞書フィールドに有効期限が切れています。

  注意:

  それはメモリによって占有された日付フィールドのうちリリースすることにFlush_all方法が異なります。

12、ngx.shared.DICT.get_keys  

  语法:キー= ngx.shared.DICT:get_keys(MAX_COUNT?)

  それは与えられていない場合は、数は限定されるものではないことを示している辞書、MAX_COUNTの数、または0からフィールドのリストを取得します。デフォルト値は1024です

  注意:

  強くあなたがこのメソッドを呼び出すときに辞書がロックされているになることがありMAX_COUNTの値を指定しない場合は、辞書ワーカープロセスにアクセスしようとする試みを阻止する、なぜなら多数のキーで、MAX_COUNT引数を指定することをお勧めします。

13、ngx.shared.DICT.flush_keys

  構文:ngx.shared.DICT:flush_keys(NUM、時間)

  辞書エントリ番号からキーを取得しNUMで、時間が時間効果的です。メモリを爆発されることはありません指定されたnum個のプロセスデータを確実にするために。

おすすめ

転載: www.cnblogs.com/chenpython123/p/10758442.html