func NewMemcacherStoreWithValueStorer(client Memcacher, valueStorer ValueStorer, keyPrefix string, keyPairs ...[]byte) *MemcacheStore {
	if client == nil {
		panic("Cannot have nil memcache client")
	}
	if valueStorer == nil {
		panic("Cannot have nil ValueStorer")
	}
	return &MemcacheStore{
		Codecs: securecookie.CodecsFromPairs(keyPairs...),
		Options: &sessions.Options{
			Path:   "/",
			MaxAge: 86400 * 30,
		},
		KeyPrefix:   keyPrefix,
		Client:      client,
		StoreMethod: StoreMethodSecureCookie,
		ValueStorer: valueStorer,
	}
}
NewMemcacheStoreWithValueStorer returns a new MemcacheStore backed by a ValueStorer.
You need to provide the memcache client that
implements the Memcacher interface and
an optional prefix for the keys we store.
A ValueStorer is used to store an encrypted sessionID. The encrypted sessionID is used to access
memcache and get the session values.
package gsm
import (
	"bytes"
	"encoding/base32"
	"encoding/gob"
	"encoding/json"
	"fmt"
	"github.com/bradfitz/gomemcache/memcache"
	"github.com/gorilla/securecookie"
	"github.com/gorilla/sessions"
	"log"
	"net/http"
	"strings"
)