Closed lonelyJOJO-s closed 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
i read the docs and found out ExecCtx will delete cache while query will set the key
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?
thanks to your response