Mikaelemmmm / go-zero-looklook

🔥基于go-zero(go zero) 微服务全技术栈开发最佳实践项目。Develop best practice projects based on the full technology stack of go zero (go zero) microservices.
https://go-zero.dev
MIT License
4.18k stars 789 forks source link

insert cache question #143

Closed lonelyJOJO-s closed 3 months ago

lonelyJOJO-s commented 3 months ago

great work! i am new to go-zero, I saw when exec insert, we can use a cache to sotre model like the code below but it seems data.Id = 0, which makes cache the id=0. I wonder if there is some mechinism here?

func (m *defaultUserModel) Insert(ctx context.Context, session sqlx.Session, data *User) (sql.Result, error) {
    data.DeleteTime = time.Unix(0, 0)
    data.DelState = globalkey.DelStateNo
    looklookUsercenterUserIdKey := fmt.Sprintf("%s%v", cacheLooklookUsercenterUserIdPrefix, data.Id)
    looklookUsercenterUserMobileKey := fmt.Sprintf("%s%v", cacheLooklookUsercenterUserMobilePrefix, data.Mobile)
    return m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
        query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, userRowsExpectAutoSet)
        if session != nil {
            return session.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.Mobile, data.Password, data.Nickname, data.Sex, data.Avatar, data.Info)
        }
        return conn.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.Mobile, data.Password, data.Nickname, data.Sex, data.Avatar, data.Info)
    }, looklookUsercenterUserIdKey, looklookUsercenterUserMobileKey)
}

thanks to your response

lonelyJOJO-s commented 3 months ago

i read the docs and found out ExecCtx will delete cache while query will set the key