github.com/keysonzzz/kmg@v0.0.0-20151121023212-05317bfd7d39/kmgCache/Kvdb.go (about) 1 package kmgCache 2 3 import ( 4 "encoding/json" 5 "github.com/bronze1man/kmg/kmgConfig" 6 "github.com/bronze1man/kmg/kmgCrypto" 7 "github.com/bronze1man/kmg/kmgFile" 8 "os" 9 ) 10 11 // 如果没有数据会返回nil 12 func MustKvdbGetBytes(s string) (b []byte) { 13 key := kmgCrypto.Md5Hex([]byte(s)) 14 content, err := kmgFile.ReadFile(kmgConfig.DefaultEnv().PathInTmp("kvdb/" + key)) 15 if err != nil { 16 if os.IsNotExist(err) { 17 return nil 18 } 19 panic(err) 20 } 21 return content 22 } 23 24 func MustKvdbSetBytes(s string, b []byte) { 25 key := kmgCrypto.Md5Hex([]byte(s)) 26 kmgFile.MustWriteFileWithMkdir(kmgConfig.DefaultEnv().PathInTmp("kvdb/"+key), b) 27 } 28 29 // 返回是否找到了数据 30 func MustKvdbGet(s string, obj interface{}) bool { 31 b := MustKvdbGetBytes(s) 32 if b == nil { 33 return false 34 } 35 err := json.Unmarshal(b, obj) 36 if err != nil { 37 panic(err) 38 } 39 return true 40 } 41 42 func MustKvdbSet(s string, obj interface{}) { 43 b, err := json.Marshal(obj) 44 if err != nil { 45 panic(err) 46 } 47 MustKvdbSetBytes(s, b) 48 }