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  }