package controller import ( "encoding/json" "fmt" "github.com/gin-gonic/gin" "strconv" "worktest/pkg/model" "worktest/pkg/redistab" ) type ListReq struct { Title string `json:"'title'"` } type ProductReq struct { ID uint `json:"autoincr"` } //RemoveCache 清除所有redis1缓存 func RemoveCache(c *gin.Context) { var req ProductReq if err := c.ShouldBind(&req); err != nil { Error(c, err.Error()) return } v, err := redistab.RedisClient.Del(redistab.GetProductOrderList(req.ID)).Result() fmt.Println("1---------", v, err) v, err = redistab.RedisClient.Del(redistab.GetProductSaleNum(req.ID)).Result() fmt.Println("1---------", v, err) v, err = redistab.RedisClient.Del(redistab.GetProductStockSize(req.ID)).Result() fmt.Println("1---------", v, err) Success(c, nil) return } //RemoveAllCache 清除所有redis1缓存 func RemoveAllCache(c *gin.Context) { var req ListReq if err := c.ShouldBind(&req); err != nil { Error(c, err.Error()) return } var list []*model.Product model.DB.Model(&model.Product{}).Find(&list) fmt.Println("2--------", redistab.RedisClient) for _, t := range list { //销量 v, err := redistab.RedisClient.Del(redistab.GetProductOrderList(t.ID)).Result() fmt.Println("1---------", v, err) v, err = redistab.RedisClient.Del(redistab.GetProductSaleNum(t.ID)).Result() fmt.Println("1---------", v, err) v, err = redistab.RedisClient.Del(redistab.GetProductStockSize(t.ID)).Result() fmt.Println("1---------", v, err) } Success(c, nil) return } func List(c *gin.Context) { var req ListReq if err := c.ShouldBind(&req); err != nil { Error(c, err.Error()) return } var list []*model.Product model.DB.Model(&model.Product{}).Find(&list) fmt.Println("2--------", redistab.RedisClient) for i, t := range list { fmt.Println("30----", redistab.GetProductOrderList(t.ID)) //销量 v, err := redistab.RedisClient.Get(redistab.GetProductOrderList(t.ID)).Result() fmt.Println("1---------", v, err) if err == nil && v != "" { u64, err := strconv.ParseUint(v, 10, 32) if err != nil { list[i].OrderNum = u64 } } v, err = redistab.RedisClient.Get(redistab.GetProductSaleNum(t.ID)).Result() fmt.Println("1---------", v, err) if err == nil && v != "" { u64, err := strconv.ParseUint(v, 10, 32) if err != nil { list[i].SalesVolume = u64 } } v, err = redistab.RedisClient.Get(redistab.GetProductStockSize(t.ID)).Result() fmt.Println("1---------", v, err) if err == nil && v != "" { u64, err := strconv.ParseUint(v, 10, 32) if err != nil { list[i].NowStockSize = u64 } } b, err := redistab.RedisClient.PFCount(redistab.GetProductStockSize(t.ID)).Result() fmt.Println("1---------", b, err) if err == nil && v != "" { list[i].Uv = uint(b) } } Success(c, list) return } //Clear 清除数据 func Clear(c *gin.Context) { var req ListReq if err := c.ShouldBind(&req); err != nil { Error(c, err.Error()) return } var list []*model.Product model.DB.Model(&model.Product{}).Find(&list) Success(c, list) return } //SynCache 同步redis func SynCache(c *gin.Context) { var req ListReq if err := c.ShouldBind(&req); err != nil { Error(c, err.Error()) return } var list []*model.Product model.DB.Model(&model.Product{}).Find(&list) fmt.Println("2--------", redistab.RedisClient) for _, t := range list { v, err := redistab.RedisClient.Set(redistab.GetProductStockSize(t.ID), t.StockSize, 0).Result() fmt.Println("1---------", v, err) temp, err := json.Marshal(t) v, err = redistab.RedisClient.Set(redistab.GetProductDetail(t.ID), string(temp), 0).Result() fmt.Println("1---------", v, err) //同步bitmap redistab.RedisClient.Del(redistab.GetProductBitMap(), string(temp)) b, err := redistab.RedisClient.SetBit(redistab.GetProductBitMap(), int64(t.ID), 1).Result() fmt.Println("1---------", b, err) } Success(c, list) return }