


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 }
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

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

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

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

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.

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

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.

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? Apabila menggunakan Redistemplate untuk operasi pertanyaan batch, anda mungkin menghadapi hasil yang dikembalikan ...

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

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