メインコンテンツまでスキップ

プロセス辞書のトランザクションコードを実行する (proc_dict_run)

宣言

返却内容, エラー情報 = proc_dict_run(トランザクションコード)

引数

  • トランザクションコード
    文字列型。実行するトランザクションの Lua コード

戻り値

  • 返却内容
    文字列型 | nil。実行に成功するとコードが返した値を返し、失敗すると nil を返します
  • エラー情報
    テキスト型 | nil。実行に成功すると nil を返し、コードの実行中にエラーが発生するとエラー情報を返します

説明

この関数は 20250427 以降のバージョンで使用できます
"xxtouch." または "1ferver." で始まるすべてのプロセスキュー辞書は予約されています
プロセス辞書のトランザクションコードを実行します。トランザクションコードの実行中は、ほかのスレッドによる proc_ 関数の実行がブロックされます
実行ごとに最大 1000000 行までです
実行に成功すると、この Lua コードは文字列値を返すことができます
その文字列値は戻り値として呼び出し元に返されます
コードが nil を返した場合は、空文字列が呼び出し元に返されます
実行に失敗した場合は、nil とエラー情報を返します

トランザクション Lua コードで使用できるモジュールと関数

base モジュール(require を除く)
table モジュール
string モジュール
math モジュール
utf8 モジュール
bit32 モジュール
json モジュール
os.time()
os.clock()
sys.mtime()
utils.gen_uuid()
proc_put(key, value)
proc_get(key)
proc_queue_push_back(key, value)
proc_queue_push_front(key, value)
proc_queue_pop_front(key)
proc_queue_pop_back(key)
proc_queue_pop_value(key, value)
proc_queue_count_value(key, value)
proc_queue_clear(key)
proc_queue_read(key)
proc_queue_size(key)

function proc_inc(key, int_value)
return proc_dict_run(string.format([[
local key = %q
local value = %d
local ov = proc_get(key)
if ov == '' then
ov = 0
else
ov = tonumber(ov)
end
if not ov then
error('not a number')
end
proc_put(key, tostring(ov + value))
return ov
]], key, int_value))
end

for i = 1, 20 do
nLog(proc_inc('haha', 10))
end