Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

Redis - Tabel Lua sebagai nilai balik - mengapa ini tidak berfungsi?

Jika Anda merujuk ke Redis EVAL dokumentasi Anda dapat melihat aturan apa yang digunakan Redis untuk mengubah tabel Lua menjadi balasan Redis:

  1. Tabel Lua (array) -> Redis balasan multi massal (dipotong ke nol pertama di dalam larik Lua jika ada )
  2. Tabel Lua dengan satu bidang ok -> Balasan status redis
  3. Tabel Lua dengan satu bidang kesalahan -> Redis balasan kesalahan

Jadi kecuali dengan kasus khusus 2 dan 3, Redis menganggap tabel Anda adalah urutan (yaitu daftar) yang berarti membaca retv[1], retv[2], ... sampai menemukan nil elemen (ini adalah bagian kode sumber yang sesuai).

Ini menjelaskan mengapa retv["test"] diabaikan dalam kasus Anda.

Jika Anda mengubah kode dengan:

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

Kemudian elemen tambahan ini dikembalikan:

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. Lembar Cheat Pengoptimalan Memori Redis

  2. Porting dari SQLite ke Redis

  3. Mengapa skrip lua memblokir redis-server?

  4. Cara Memvisualisasikan Penggunaan Resque dengan Node.js, WebSockets, dan Redis

  5. Bagaimana cara membuat tombol namespace pada redis untuk menghindari tabrakan nama?