das Ergebnis HGETALL zu scannen, verwenden Sie die folgende Art
type Attrs struct {
Secret string `redis:"secret"`
RequireSecret bool `redis:"requireSecret"`
UserID string `redis:"userId"`
}
mit dem folgenden Befehl:
values, err := redis.Values(c.Do("HGETALL", key))
if err != nil {
// handle error
}
var attrs Attrs
err = redis.ScanStruct(values, &attrs)
if err != nil {
// handle error
}
Da Redigo strconv.ParseBool verwendet Redis Ergebniswerte zu bool
, die Sie nicht konvertieren müssen die Scannerschnittstelle implementieren, um "true"
und "false"
zu true
und false
zu konvertieren.
Sie können die Scannerschnittstelle für eine Teilmenge der Felder einer Struktur implementieren. Redigo verwendet das Standardparsing für Felder, die die Schnittstelle nicht implementieren, und den benutzerdefinierten Parser der Anwendung für die Felder, die die Schnittstelle implementieren.
Sofern Sie nicht über die Redis-API auf einzelne Hash-Elemente zugreifen müssen, ist es normalerweise besser, sructs als Redis-Zeichenfolge zu speichern, indem Sie die Struktur mit JSON, Gob oder einem anderen Encoder serialisieren.
Zeigen Sie die zu scannenden Dateitypen und den Redis-Befehl an, der das Ergebnis erzeugt, das Sie gerade scannen. Die Implementierung der Scannerschnittstelle ist möglicherweise nicht die beste Lösung für das Problem, das Sie zu lösen versuchen. –
@ CeriseLimón Ich ergänze meine Frage mit zusätzlichen Informationen –
Was ist der Redis-Befehl, der das Ergebnis erzeugt, das Sie scannen? –