Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Redis - Bảng Lua làm giá trị trả về - tại sao điều này không hoạt động

Nếu bạn tham khảo Redis EVAL tài liệu hướng dẫn bạn có thể xem các quy tắc mà Redis sử dụng để chuyển đổi bảng Lua thành câu trả lời của Redis:

  1. Bảng Lua (mảng) -> Làm lại nhiều câu trả lời hàng loạt ( được cắt bớt thành đầu tiên bên trong mảng Lua nếu có )
  2. Bảng Lua với một trường ok duy nhất -> Trạng thái trả lời lại
  3. Bảng Lua với một trường lỗi duy nhất -> Lỗi trả lời lại

Vì vậy, ngoại trừ các trường hợp đặc biệt 2 và 3, Redis giả sử bảng của bạn là một chuỗi (tức là danh sách) có nghĩa là nó đọc retv[1], retv[2], ... cho đến khi nó gặp nil phần tử (đây là phần mã nguồn tương ứng).

Điều này giải thích tại sao retv["test"] được bỏ qua trong trường hợp của bạn.

Nếu bạn thay đổi mã của mình bằng:

local retv = {"This", "is", "a", "bug" }
retv[5] = 1000
return retv

Sau đó, phần tử bổ sung này được trả về:

1) "This"
2) "is"
3) "a"
4) "bug"
5) (integer) 1000


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Memcached có phải là một con khủng long so với Redis?

  2. Không thể kết nối với Redis tại 10.XX.XX.28:6379:Lỗi không xác định - khi truy cập từ Spring Batch hoặc máy windows

  3. Sự khác biệt giữa lưu trữ Số nguyên và Chuỗi trong Redis

  4. Kết nối trực tiếp với Redis bằng javascript (phía máy khách)?

  5. Redis CLI không hiển thị khóa được lưu trữ gần đây qua Laravel