Rumah pembangunan bahagian belakang Golang Bagaimana dengan cekap menyimpan dan membaca susunan struktur pergi ke Redis menggunakan Go-Redis/Redis V8?

Bagaimana dengan cekap menyimpan dan membaca susunan struktur pergi ke Redis menggunakan Go-Redis/Redis V8?

Apr 02, 2025 pm 04:51 PM
redis git Penyelesaian pasangan nilai kunci red

Bagaimana dengan cekap menyimpan dan membaca susunan struktur pergi ke Redis menggunakan Go-Redis/Redis V8?

Artikel ini membincangkan cara menyimpan dan membaca susunan struktur GO ke Redis menggunakan go-redis/redis v8 Menyimpan Arus Struktur Go terus ke Redis akan menyebabkan kesilapan, kerana arahan SET go-redis/redis v8 hanya menyokong jenis rentetan pasangan kunci kunci.

Coretan kod berikut menunjukkan cuba menyimpan pelbagai jenis []model.sysrolemenu terus ke redis dan menerangkan punca kesilapan. Kod ini direka untuk mendapatkan struktur pokok menu dan menyimpannya di Redis untuk akses cepat. Selepas mendapat data pokok getmenutree , saya cuba menggunakan global.gva_redis.set untuk terus menyimpan array menus , tetapi kerana kaedah SET memerlukan nilai untuk menjadi jenis rentetan, ia gagal.

Penyelesaiannya adalah untuk menukar array []model.sysrolemenu kepada rentetan JSON yang disokong oleh Redis. Selepas bersiri ke dalam rentetan JSON, ia boleh berjaya disimpan di Redis; Apabila membacanya, ia akan menjadi deserialized kembali ke pelbagai struktur GO.

Fungsi getmenutree yang diubahsuai adalah seperti berikut, menukar susunan menus ke JSON Strings sebelum menyimpan ke Redis:

 import (
    "Konteks"
    "Pengekodan/JSON"

    "github.com/go-redis/redis/v8"
    "Go.uber.org/zap"
)

// ... import dan kod lain ...

Func GetMenutree (rentetan roleId) (ralat err, menu [] model.sysrolemenu) {
    Err, Menutree: = getMenutreemap (RoleId)
    Menus = Menutree ["0"]
    // ... kod lain ...

    jsondata, err: = json.marshal (menu)
    jika err! = nil {
        Zap.l (). Ralat ("Kesalahan Marshal Json", Zap.error (err))
        kembali err, nih
    }

    err = global.gvaredis.set (context.background (), "Menutree:" RoleId, String (Jsondata), 0) .err ()
    jika err! = nil {
        zap.l (). Ralat ("ralat set redis", zap.error (err))
        kembali err, nih
    }
    Kembali nil, menu
}

// Sampel untuk membaca data Funce ReadMenUtree (String RoleId) (ralat err, menu [] model.sysrolemenu) {
    val, err: = global.gvaredis.get (context.background (), "menutree:" roleId) .result ()
    jika err! = nil {
        jika err == redis.nil {
            kembali nil, nil // kekunci tidak wujud}
        kembali err, nih
    }

    err = json.unmarshal ([] byte (val), & menu)
    jika err! = nil {
        Zap.l (). Ralat ("Kesalahan Json Unmarshal", Zap.error (err))
        kembali err, nih
    }
    Kembali nil, menu
}
Salin selepas log masuk

Kod array menus ke dalam rentetan JSON melalui fungsi json.Marshal dan simpannya di Redis. Apabila membaca data, gunakan json.Unmarshal untuk deserialization. Ini menyelesaikan masalah yang go-redis/redis v8 tidak menyokong penyimpanan langsung struktur array.

Atas ialah kandungan terperinci Bagaimana dengan cekap menyimpan dan membaca susunan struktur pergi ke Redis menggunakan Go-Redis/Redis V8?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana menggunakan penyelesaian cache Redis untuk merealisasikan keperluan senarai kedudukan produk dengan cekap? Bagaimana menggunakan penyelesaian cache Redis untuk merealisasikan keperluan senarai kedudukan produk dengan cekap? Apr 19, 2025 pm 11:36 PM

Bagaimanakah penyelesaian caching Redis menyedari keperluan senarai kedudukan produk? Semasa proses pembangunan, kita sering perlu menangani keperluan kedudukan, seperti memaparkan ...

Peranan Redis: Meneroka Keupayaan Penyimpanan Data dan Pengurusan Peranan Redis: Meneroka Keupayaan Penyimpanan Data dan Pengurusan Apr 22, 2025 am 12:10 AM

Redis memainkan peranan penting dalam penyimpanan dan pengurusan data, dan telah menjadi teras aplikasi moden melalui pelbagai struktur data dan mekanisme kegigihannya. 1) REDIS menyokong struktur data seperti rentetan, senarai, koleksi, koleksi yang diperintahkan dan jadual hash, dan sesuai untuk logik perniagaan cache dan kompleks. 2) Melalui dua kaedah ketekunan, RDB dan AOF, Redis memastikan penyimpanan yang boleh dipercayai dan pemulihan data yang cepat.

Bagaimana cara menetapkan senarai konfigurasi lalai projek springboot dalam idea untuk ahli pasukan untuk berkongsi? Bagaimana cara menetapkan senarai konfigurasi lalai projek springboot dalam idea untuk ahli pasukan untuk berkongsi? Apr 19, 2025 pm 11:24 PM

Cara Menetapkan Senarai Konfigurasi Run SpringBoot Projek Dalam Idea Menggunakan Intellij ...

Sepuluh cadangan platform percuma untuk data masa nyata mengenai pasaran bulatan mata wang dikeluarkan Sepuluh cadangan platform percuma untuk data masa nyata mengenai pasaran bulatan mata wang dikeluarkan Apr 22, 2025 am 08:12 AM

Platform data cryptocurrency yang sesuai untuk pemula termasuk coinmarketcap dan sangkakala bukan kecil. 1. CoinMarketCap menyediakan harga masa nyata global, nilai pasaran, dan kedudukan volum perdagangan untuk keperluan analisis pemula dan asas. 2. Petikan bukan kecil menyediakan antara muka yang mesra Cina, sesuai untuk pengguna Cina untuk cepat menyaring projek berpotensi berisiko rendah.

Apakah carta analisis struktur produk bitcoin? Bagaimana melukis? Apakah carta analisis struktur produk bitcoin? Bagaimana melukis? Apr 21, 2025 pm 07:42 PM

Langkah -langkah untuk menarik carta analisis struktur bitcoin termasuk: 1. Tentukan tujuan dan penonton lukisan, 2 Pilih alat yang betul, 3. Reka bentuk rangka kerja dan isikan komponen teras, 4. Langkah -langkah lengkap memastikan bahawa carta adalah tepat dan mudah difahami.

Kenapa nilai pulangan kosong apabila menggunakan redistemplate untuk pertanyaan batch? Kenapa nilai pulangan kosong apabila menggunakan redistemplate untuk pertanyaan batch? Apr 19, 2025 pm 10:15 PM

Kenapa nilai pulangan kosong apabila menggunakan redistemplate untuk pertanyaan batch? Apabila menggunakan Redistemplate untuk operasi pertanyaan batch, anda mungkin menghadapi hasil yang dikembalikan ...

Dalam persekitaran multi-nod, bagaimana untuk memastikan bahawa tugas masa @scheduled Spring Boot hanya dilaksanakan pada satu nod? Dalam persekitaran multi-nod, bagaimana untuk memastikan bahawa tugas masa @scheduled Spring Boot hanya dilaksanakan pada satu nod? Apr 19, 2025 pm 10:57 PM

Penyelesaian pengoptimuman untuk tugas masa springboot dalam persekitaran pelbagai nod sedang membangunkan musim bunga ...

10 platform perdagangan teratas dalam bulatan mata wang, 10 platform dagangan teratas untuk cryptocurrency (edisi 2025) 10 platform perdagangan teratas dalam bulatan mata wang, 10 platform dagangan teratas untuk cryptocurrency (edisi 2025) Apr 21, 2025 pm 10:30 PM

Ramalan untuk 10 platform perdagangan cryptocurrency formal teratas di platform perdagangan cryptocurrency 2025 adalah: 1. Coinbase, 2. Kraken, 3 Gemini, 4. dll.

See all articles