Tăng/giảm giá trị nguyên tử (LCC.kvdb.dict.incr)
Khai báo
value, meta_or_err = LCC.kvdb.dict.incr(name, key, by?, init?, min?, max?, coerce?, timeout?)
Tham số
- name
Kiểu chuỗi, tên từ điển (không được rỗng, tối đa256byte) - key
Kiểu chuỗi, tên khóa (phải là UTF-8 hợp lệ và không được rỗng) - by
Kiểu số nguyên, tùy chọn; bước tăng hoặc giảm, mặc định là1, có thể là số âm - init
Kiểu số nguyên, tùy chọn; giá trị ban đầu khi khóa không tồn tại, mặc định là0 - min
Kiểu số nguyên, tùy chọn; giới hạn dưới của kết quả, giá trị vượt giới hạn sẽ bị kẹp lại - max
Kiểu số nguyên, tùy chọn; giới hạn trên của kết quả, giá trị vượt giới hạn sẽ bị kẹp lại - coerce
Kiểu boolean, tùy chọn; khi làtrue, giá trị cũ không phải số nguyên sẽ bị buộc đặt lại thànhinit, mặc định làfalse - timeout
Kiểu số, tùy chọn; thời gian chờ yêu cầu (giây), mặc định là60
Giá trị trả về
- value
Kiểu số, kết quả sau khi tăng hoặc giảm; khi thất bại lànil - meta_or_err
Kiểu bảng hoặc chuỗi. Khi thành công, trả về bảng siêu dữ liệu:created: kiểu boolean, cho biết khóa có được tạo mới trong lần này hay khôngcoerced: kiểu boolean, cho biết có kích hoạt ép kiểu hay khôngclamped: kiểu boolean, cho biết kết quả có bị kẹp hay khôngclamp_reason: chuỗi, lý do kẹp (min/max)original_value: kiểu số, giá trị cũ (nếu tồn tại)computed_value: kiểu số, giá trị được tính theo bước tăng hoặc giảmresult_value: kiểu số, giá trị cuối cùng được ghi Khi thất bại, trả về chuỗi mô tả lỗi
Mô tả
Thao tác bộ đếm nguyên tử an toàn luồng.
Có thể dùngmin/maxđể giới hạn khoảng kết quả;coercedùng để đặt lại giá trị cũ không hợp lệ thànhinit.
Khi gọi thất bại, trả vềnil, thông tin lỗi.
Ví dụ
local value, meta = LCC.kvdb.dict.incr("Bộ đếm", "Số lần thử lại", 1, 0, 0, 5, true)
if value then
LCC.log(1, "Số lần thử lại hiện tại", value, meta.clamped and "Đã đạt giới hạn trên" or "")
end