Phản hồi cho redis.call
trả về dưới dạng một bảng giống như sau:{"ok": "string"}
(tất nhiên nếu kiểu là một chuỗi)
Vì vậy, để kiểm tra chính xác, bạn nên thay đổi mã của mình thành:
local keyType = redis.call("TYPE", KEYS[1]).ok
và phần còn lại của mã sẽ hoạt động tốt.
Vấn đề là ở đây:lệnh TYPE là một trong số ít lệnh trả về phản hồi "chuỗi đơn giản" hoặc "trạng thái" (xem thông số kỹ thuật giao thức redis cho các loại phản hồi). Trong tài liệu redis lua có ghi rằng:
Redis trả lời trạng thái -> Bảng Lua với một trường ok duy nhất chứa trạng thái
Đó là những gì đã xảy ra ở đây.