[ go-zero使用redis添加缓存 ]


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