Kategorien
Entwicklung GO Lang Programmierung redis Schnittstellen

redisJSON in GO

Sie wollen sich redisJSON und GO Lang mal etwas genauer ansehen? Dann sind Sie hier genau richtig.

Wir nutzen redis sehr gerne für einige unserer Projekte. Da der NO SQL Datenbanktyp sehr flexible ist und eine sehr hohe Performance bietet. Nachdem wir einige Schnittstellen mit redis gebaut haben kamen wir bei Recherchen zu unserem redis Online Kurs, auf redisJSON. Welches als Modul auf der redis Seite präsentiert wird.

Da wir aktuell an einer neuen Marktplatz Schnittstelle & einer Schnittstelle zwischen Warenwirtschaft und Shop System arbeiten haben wir uns weiter in das Thema redisJSON eingearbeitet, da wir dieses Modul gerne nutzen wollten. Unsere Schnittstellen werden ebenfalls aus Performance gründen in GO Lang geschrieben.

Welche Library?

Natürlich stellt sich bei einem neuen Thema immer die Frage: Welche Library nutzen Sie für Ihr Projekt oder schreiben Sie selbst eine? Im ersten Schritt haben wir uns einige Libraries für GO Lang angesehen und getestet und sind zu dem Entschluss gekommen, dass die rejonson Library von KromDaniel gerne nutzen wollen. Zusätzlich muss auch die go-redis Library genutzt werden, da rejonson auf dieser aufbaut.

Verbindung zu redisJSON aufbauen.

Also fingen wir an mit einem Test. Als erstes muss natürlich ein redisJSON Installation laufen. Dies haben wir mit diesem Docker Container gemacht. Und fangen dann an die Verbindung zur Datenbank aufzubauen.

// Connect to redis Datebase
rdb := redis.NewClient(&redis.Options{
    Addr: "localhost:6380",
    DB: 0,
    Password: "",
})

// Set extend client
client := rejonson.ExtendClient(rdb)
	
// Close connection after function ends
defer client.Close()

Einen JSON Eintrag setzen.

Nun möchten Sie sicher einen ersten Eintrag setzen? Wenn Sie sich mit den Commands schon vertraut gemacht haben, dann sollte dies kein Problem sein. Nun setzen wir ein Beispiel in einem Interface und Konvertieren diese Daten. Wenn Sie dies getan haben, dann können die Daten mit der Funktion „JsonSet“ gesetzt werden. Sehen Sie selbst.

// Set data
arr := []interface{}{"hello", "world", 1, map[string]interface{}{"key": 12}}
	
// Convert date
js, err := json.Marshal(arr)
if err != nil {
    fmt.Println(err)
}
	
// Save json data
err = client.JsonSet("rejson-cmd", ".", string(js)).Err()
if err != nil {
    fmt.Println(err)
}

JSON Daten auslesen

Die gesetzten Daten können natürlich wieder ausgelesen werden. Dies machen Sie mit der „JsonGet“ Funktion. Ich würde Ihnen empfehlen, falls Sie es noch nicht getan haben, dass Sie einmal durch die Commands arbeiten. Nun sehen wir uns einmal an wie man den Eintrag wieder auslesen kann.

// Get json data
data, err := client.JsonGet("product:237128372", ".variants").Result()
if err != nil {
    fmt.Println(err)
}
	
// Print data 
fmt.Println(data)

Falls Sie noch weitere Fragen oder Anmerkungen haben, dann schreiben Sie diese gerne in die Kommentare.

Von Jonas Kwiedor

Full- Stack Developer aus Hamburg. Liebt es sich mit Schnittstellen & Automationen auseinander zu setzen und sich mit der Programmiersprache GO Lang zu beschäftigen.