프로세스 사전 트랜잭션 코드 실행 (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