我在使用 ristretto 缓存时遇到问题。事实上,我有一个小 api 应该返回我存储在我的 ristretto 缓存中作为 json 的值。
问题是当我调用我的函数时,返回的是用base64编码的json,我只是找不到解码它的方法。
这是我的代码:
第 1 部分:初始化我的 ristretto 缓存的代码:
func InitCache() {
var err error
ristrettoCache, err = ristretto.NewCache(&ristretto.Config{
NumCounters: 3000,
MaxCost: 1e6,
BufferItems: 64,
})
if err != nil {
panic(err)
}
}
第 2 部分:将我的值放入缓存中:
for _, t := range listTokensFromDB {
b, err := json.Marshal(t)
if err != nil {
fmt.Println(err)
}
ristrettoCache.Set(t.Symbol, b, 1)
}
第 3 部分:从缓存中获取值
func getTokenInfo(w http.ResponseWriter, r *http.Request){
vars := mux.Vars(r)
key := vars["chain"]+vars["symbol"]
value, found := ristrettoCache.Get(key)
if !found {
return
}
json.NewEncoder(w).Encode(value)
}
当我调用我的 api 时,我得到的结果是:
"eyJTeW1ib2wiOiJic2NDUllQVE8iLCJBZGRyIjoiMHgyQmNBMUFlM0U1MjQ0NzMyM0IzRWE0NzA4QTNkMTg1ODRDYWY4NWE3IiwiTHBzIjpbeyJTeW1ib2xUb2tlbiI6IkZFRyIsIlRva2VuQWRkciI6IjB4YWNGQzk1NTg1RDgwQWI2MmY2N0ExNEM1NjZDMWI3YTQ5RmU5MTE2NyIsIkxwQWRkciI6IjB4NDU5ZTJlMjQ4NGNlMDU2MWRmNTJiYzFlNjkxMzkyNDA2M2JhZDM5MCJ9LHsiU3ltYm9sVG9rZW4iOiJmQk5CIiwiVG9rZW5BZGRyIjoiMHg4N2IxQWNjRTZhMTk1OEU1MjIyMzNBNzM3MzEzQzA4NjU1MWE1Yzc2IiwiTHBBZGRyIjoiMHg3OGM2NzkzZGMxMDY1OWZlN2U0YWJhMTQwMmI5M2Y2ODljOGY0YzI3In1dfQ=="
但我想要base64解码的版本......
如果我在将值 b 插入缓存时将其更改为字符串,如下所示:
for _, t := range listTokensFromDB {
b, err := json.Marshal(t)
if err != nil {
fmt.Println(err)
}
ristrettoCache.Set(t.Symbol, string(b), 1)
}
当我得到响应时,我得到这样的字符串化 json:“{“Symbol”:“bscCRYPTO”,“Addr”:“0x2BcA1Ae3E52447323B...”
而且我找不到摆脱这个字符串的方法:/
有人会知道我怎样才能得到真正的json吗?
提前谢谢你,祝你有美好的一天!
慕村225694
相关分类