go-zero中使用redis缓存
func (u UserDomain) UserGetPower(id int64) ([]model.PowerModel, error) {
// 先获取redids缓存
powerListStr, err := u.cache.Get(fmt.Sprintf("user_powers_%d", id))
powerList := make([]model.PowerModel, 0)
if err != nil {
return nil, err
}
if powerListStr == "" {
// 查询数据库
err := u.userRepo.UserGetPower(id, &powerList)
if err != nil {
return nil, err
}
powerListByte, err := json.Marshal(powerList)
if err != nil {
return nil, err
}
// 添加缓存
err = u.cache.Setex(fmt.Sprintf("user_powers_%d", id), string(powerListByte), 60)
if err != nil {
return nil, err
}
} else {
// 返序列化
err := json.Unmarshal([]byte(powerListStr), &powerList)
if err != nil {
return nil, err
}
}
return powerList, nil