Skip to content

Instantly share code, notes, and snippets.

@pioz
Created March 5, 2021 14:04
Show Gist options
  • Select an option

  • Save pioz/ca5b7a11200f54afbd76dee7acbcc067 to your computer and use it in GitHub Desktop.

Select an option

Save pioz/ca5b7a11200f54afbd76dee7acbcc067 to your computer and use it in GitHub Desktop.
Restore array of structs from memcache in GO
package main
import (
"bytes"
"encoding/gob"
"fmt"
"github.com/bradfitz/gomemcache/memcache"
)
type User struct {
Email string
Username string
}
func main() {
users := []User{
User{Email: "henry@sample.com", Username: "pioz"},
User{Email: "giuse@sample.com", Username: "giuse"},
}
var buffer bytes.Buffer
enc := gob.NewEncoder(&buffer)
err := enc.Encode(users)
if err != nil {
panic(err)
}
mc := memcache.New("localhost:11211")
mc.Set(&memcache.Item{Key: "users", Value: buffer.Bytes()})
hit, err := mc.Get("users")
if err != nil {
panic(err)
}
var cachedUsers []User
reader := bytes.NewReader(hit.Value)
dec := gob.NewDecoder(reader)
err = dec.Decode(&cachedUsers)
if err != nil {
panic(err)
}
fmt.Println(cachedUsers)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment