redis newbie - cara membuat hash di dalam hash?

12

Saya ingin membuat jenis struktur ini di redis: (pada dasarnya data json)

{
    "id": "0001",
    "name":"widget ABC",
    "model": "model123",
    "service":"standard",
    "admin_password": 82616416,
    "r1":
        {
            "extid":"50000",
            "password":"test123",
        },
    "r2":
        {
            "ext":"30000",
            "password":"test123",
        },
}

Apa yang saya coba sejauh ini:

Saya telah mencoba untuk membuat hash tanpa hash "sub", hanya untuk memastikan saya memiliki dasar-dasar tepuk bawah. Jadi, inilah yang saya mulai dengan dari redis-cli:

HMSET widget:1 id 0001 name 'widget ABC' model 'model123' service standard admin_password 82616416
HMSET widget:2 id 0002 name 'widget ABC' model 'model123' service standard admin_password 12341234

Itu sepertinya berhasil. Saya dapat melihat bahwa saya memiliki 2 "catatan" data widget dalam koleksi widget.

Tetapi upaya saya untuk membuat catatan dengan data r1 gagal.

Inilah yang saya coba:

HMSET widget:3 id 0002 name 'widget ABC' model 'model123' service standard admin_password 12341234 r1{extid 50000} 

Ini menciptakan kunci hash "r1 {extid" dengan nilai hash "50000}"

Setiap saran akan dihargai. Saya pikir masalah saya adalah istilah saya. Saya hanya tidak cukup tahu tentang sintaks redis untuk mengetahui kata-kata apa yang harus digunakan dalam pencarian google saya.

Mungkin saya hanya perlu "meratakan" data seperti ini:

HMSET widget:3 id 0002 name 'widget ABC' model 'model123' service standard admin_password 12341234 r1_extid 50000 r1_password test123 r2_extid 30000 r2_password test123

Terima kasih.

Happydevdays
sumber

Jawaban:

14

Redis tidak mendukung struktur data bersarang, dan secara khusus itu tidak mendukung Hash di dalam Hash :) Anda pada dasarnya memiliki pilihan antara dua opsi: baik membuat serial Hash internal dan menyimpannya di bidang Hash atau menggunakan kunci Hash lain dan simpan saja referensi di bidang Hash luar.

Itamar Haber
sumber
1

Saya sarankan ReJSON . Itu dibangun untuk menangani masalah ini dengan tepat.

Anda dapat menggunakan notasi jalur untuk mengakses elemen bersarang.

Cihan B.
sumber