func keyOfObject(obj Object) string {
	objv := reflect.ValueOf(obj).Elem()
	return fmt.Sprintf("%s:%s:%v", obj.GetStoreType(), obj.GetClassName(),
		objv.FieldByName(obj.GetPrimaryKey()))
}
! util functions
package test
import (
	"encoding/json"
	"errors"
	"fmt"
	"github.com/ezbuy/ezorm/db"
	redis "gopkg.in/redis.v5"
	"reflect"
	"strings"
)
var (
	_redis_store *db.RedisStore
)
const (
	JSON = "json"
	HASH = "hash"
	SET  = "set"
	ZSET = "zset"
	GEO  = "geo"
	LIST = "list"
)
type Object interface {
	GetClassName() string
	GetStoreType() string
	GetPrimaryKey() string
	GetIndexes() []string
}
type RedisConfig struct {
	Host     string
	Port     int
	Password string
	DB       int
}
func RedisSetUp(cf *RedisConfig) {
	store, err := db.NewRedisStore(cf.Host, cf.Port, cf.Password, cf.DB)
	if err != nil {
		panic(err)
	}
	_redis_store = store
}