dao.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package dao
  2. import (
  3. "context"
  4. "go-common/app/job/live-userexp/conf"
  5. "go-common/library/cache/memcache"
  6. "go-common/library/database/sql"
  7. "go-common/library/log"
  8. )
  9. // Dao struct userexp-service dao
  10. type Dao struct {
  11. c *conf.Config
  12. // exp db
  13. expDb *sql.DB
  14. // memcache
  15. expMc *memcache.Pool
  16. cacheExpire int32
  17. }
  18. // New new a Dao and return.
  19. func New(c *conf.Config) (d *Dao) {
  20. d = &Dao{
  21. c: c,
  22. expDb: sql.NewMySQL(c.DB.Exp),
  23. expMc: memcache.NewPool(c.Memcache.Exp),
  24. cacheExpire: c.LevelExpire,
  25. }
  26. return
  27. }
  28. // Ping check service health.
  29. func (d *Dao) Ping(c context.Context) (err error) {
  30. if err = d.expDb.Ping(c); err != nil {
  31. log.Error("PingDb error(%v)", err)
  32. return
  33. }
  34. if err = d.pingMemcache(c); err != nil {
  35. return
  36. }
  37. return
  38. }
  39. // PingMemcache check connection success.
  40. func (d *Dao) pingMemcache(c context.Context) (err error) {
  41. item := &memcache.Item{
  42. Key: "ping",
  43. Value: []byte{1},
  44. Expiration: d.cacheExpire,
  45. }
  46. conn := d.expMc.Get(c)
  47. err = conn.Set(item)
  48. conn.Close()
  49. if err != nil {
  50. log.Error("PingMemcache conn.Set(%v) error(%v)", item, err)
  51. }
  52. return
  53. }
  54. // Close close memcache resource.
  55. func (d *Dao) Close() {
  56. if d.expMc != nil {
  57. d.expMc.Close()
  58. }
  59. if d.expDb != nil {
  60. d.expDb.Close()
  61. }
  62. }