adsub.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package model
  2. import (
  3. "active/constant"
  4. "fmt"
  5. "sync"
  6. "git.jiaxianghudong.com/go/logs"
  7. "git.jiaxianghudong.com/webs/pkg/rds"
  8. "github.com/go-redis/redis"
  9. )
  10. // AppBannersCache 广告轮播缓存
  11. var AppBannersCache sync.Map
  12. // GetBanner 轮播数据
  13. func GetBanner() []AppsBanner {
  14. // 先读取缓存
  15. if data, ok := AppBannersCache.Load("AppBanners"); ok {
  16. return data.([]AppsBanner)
  17. }
  18. bannerdata, err := GetBannerData()
  19. if err != nil {
  20. return bannerdata
  21. }
  22. logs.Info("Set AppBanners cahce success!")
  23. AppBannersCache.Store("AppBanners", bannerdata)
  24. return bannerdata
  25. }
  26. // SubAdsRedisConfig 运行时轮播广告订阅
  27. func SubAdsRedisConfig() {
  28. r := rds.Register("redis8")
  29. _, err := r.Ping().Result()
  30. if err != nil {
  31. fmt.Println("配置订阅错误", err)
  32. }
  33. // 监听test频道
  34. pubSub := r.Subscribe(constant.SUBADTOPIC)
  35. // 订阅
  36. go func() {
  37. fmt.Println("配置订阅启动2")
  38. var receipt interface{}
  39. var err error
  40. for {
  41. receipt, err = pubSub.Receive()
  42. if err != nil {
  43. fmt.Println(err)
  44. }
  45. fmt.Println("配置订阅消息来了3")
  46. switch v := receipt.(type) {
  47. case *redis.Message: // 单个订阅subscribe
  48. fmt.Printf("%s: message: %s\n", v.Channel, v.Payload)
  49. switch v.Payload {
  50. case "AppBanners":
  51. AppBannersCache.Delete("AppBanners")
  52. fmt.Println("AppBanners,内容订阅完毕")
  53. break
  54. default:
  55. }
  56. case error:
  57. fmt.Println("你好")
  58. return
  59. default:
  60. fmt.Println("pong....")
  61. }
  62. }
  63. }()
  64. }