Tanggapan terhadap redis.call
kembali sebagai tabel yang terlihat seperti ini:{"ok": "string"}
(jika tipenya adalah string tentunya)
Jadi untuk memeriksa dengan benar, Anda harus mengubah kode Anda menjadi:
local keyType = redis.call("TYPE", KEYS[1]).ok
dan kode lainnya akan berfungsi dengan baik.
Masalahnya adalah ini:perintah TYPE adalah salah satu dari sedikit perintah yang mengembalikan balasan redis "string sederhana" atau "status" (lihat spesifikasi protokol redis untuk jenis respons). Dalam dokumentasi redis lua disebutkan bahwa:
Balasan status redis -> Tabel Lua dengan satu bidang ok yang berisi status
Itulah yang terjadi di sini.