package redis import ( "context" "encoding/json" "fmt" "fwh-toolbox-server/cache" "fwh-toolbox-server/domain" "time" rds "github.com/redis/go-redis/v9" ) var ( emsparaCtx = context.Background() emsparaKeyPrefix = "fwhtoolbox:emspara:" emsparaVidKey = emsparaKeyPrefix + "VID" emsparaPidKey = emsparaKeyPrefix + "PID" ) func UpdateEmspara(vidMacros []domain.ParamsVidMacroModel, pidMacros []domain.ParamsPidMacroModel) error { ctx, cancel := context.WithTimeout(emsparaCtx, 5*time.Second) defer cancel() _, err := cache.Pipeline(ctx, func(p rds.Pipeliner) error { p.Del(ctx, emsparaVidKey) // 清空VID原数据 p.Del(ctx, emsparaPidKey) // 清空PID原数据 // 插入VID数据 for _, m := range vidMacros { val, err := json.Marshal(map[string]string{ "name": m.MacroName, "desc": m.Description, }) if err != nil { return err } p.HSet(ctx, emsparaVidKey, m.ID, val) } // 插入PID数据 for _, m := range pidMacros { val, err := json.Marshal(map[string]string{ "name": m.MacroName, "desc": m.Description, }) if err != nil { return err } p.HSet(ctx, emsparaPidKey, m.ID, val) } return nil }) return err } func GetEmsparaVidInfo(id uint) (string, string, error) { ctx, cancel := context.WithTimeout(emsparaCtx, 5*time.Second) defer cancel() v, err := cache.HGet(ctx, emsparaVidKey, fmt.Sprintf("%d", id)) if err != nil { return "", "", err } var m map[string]string if err := json.Unmarshal([]byte(v), &m); err != nil { return "", "", err } return m["name"], m["desc"], nil } func GetEmsparaPidInfo(id uint) (string, string, error) { ctx, cancel := context.WithTimeout(emsparaCtx, 5*time.Second) defer cancel() v, err := cache.HGet(ctx, emsparaPidKey, fmt.Sprintf("%d", id)) if err != nil { return "", "", err } var m map[string]string if err := json.Unmarshal([]byte(v), &m); err != nil { return "", "", err } return m["name"], m["desc"], nil }