Chạy giao dịch trên từ điển tiến trình (proc_dict_run)
Khai báo
ret, err = proc_dict_run(tx_code)
Tham số
- tx_code
String. Mã Lua để thực thi như một giao dịch.
Giá trị trả về
- ret
String | nil. Trên thành công, trả về giá trị trả về bởi mã; trên thất bại, trả về nil. - err
String | nil. Trên thành công, trả về nil; khi mã lỗi, trả về thông báo lỗi.
Mô tả
- Có sẵn từ phiên bản sau 20250427.
- Tất cả hàng đợi tiến trình có tên bắt đầu bằng "xxtouch." hoặc "1ferver." đều được lưu trữ.
- Thực thi mã giao dịch từ điển tiến trình; trong quá trình thực thi, các luồng khác bị chặn không được gọi các hàm proc_.
- Tối đa 1,000,000 dòng mỗi lần chạy.
- Nếu thành công, mã có thể trả về giá trị chuỗi, sẽ được trả về cho người gọi. Nếu mã trả về nil, chuỗi trống sẽ được trả về cho người gọi.
- Trên thất bại, trả về nil và thông báo lỗi.
Các module và hàm được phép trong mã Lua giao dịch
base (không bao gồm 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)
Ví dụ
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