kratos tool genmc

缓存代码生成

在internal/dao/dao.go中添加mc缓存interface定义,可以指定对应的注解参数
并且在接口前面添加go:generate kratos tool genmc
然后在当前目录执行go generate,可以看到自动生成的mc.cache.go代码。

缓存模板

  1. //go:generate kratos tool genmc
  2. type _mc interface {
  3. // mc: -key=demoKey
  4. CacheDemos(c context.Context, keys []int64) (map[int64]*Demo, error)
  5. // mc: -key=demoKey
  6. CacheDemo(c context.Context, key int64) (*Demo, error)
  7. // mc: -key=keyMid
  8. CacheDemo1(c context.Context, key int64, mid int64) (*Demo, error)
  9. // mc: -key=noneKey
  10. CacheNone(c context.Context) (*Demo, error)
  11. // mc: -key=demoKey
  12. CacheString(c context.Context, key int64) (string, error)
  13. // mc: -key=demoKey -expire=d.demoExpire -encode=json
  14. AddCacheDemos(c context.Context, values map[int64]*Demo) error
  15. // mc: -key=demo2Key -expire=d.demoExpire -encode=json
  16. AddCacheDemos2(c context.Context, values map[int64]*Demo, tp int64) error
  17. // 这里也支持自定义注释 会替换默认的注释
  18. // mc: -key=demoKey -expire=d.demoExpire -encode=json|gzip
  19. AddCacheDemo(c context.Context, key int64, value *Demo) error
  20. // mc: -key=keyMid -expire=d.demoExpire -encode=gob
  21. AddCacheDemo1(c context.Context, key int64, value *Demo, mid int64) error
  22. // mc: -key=noneKey
  23. AddCacheNone(c context.Context, value *Demo) error
  24. // mc: -key=demoKey -expire=d.demoExpire
  25. AddCacheString(c context.Context, key int64, value string) error
  26. // mc: -key=demoKey
  27. DelCacheDemos(c context.Context, keys []int64) error
  28. // mc: -key=demoKey
  29. DelCacheDemo(c context.Context, key int64) error
  30. // mc: -key=keyMid
  31. DelCacheDemo1(c context.Context, key int64, mid int64) error
  32. // mc: -key=noneKey
  33. DelCacheNone(c context.Context) error
  34. }
  35. func demoKey(id int64) string {
  36. return fmt.Sprintf("art_%d", id)
  37. }
  38. func demo2Key(id, tp int64) string {
  39. return fmt.Sprintf("art_%d_%d", id, tp)
  40. }
  41. func keyMid(id, mid int64) string {
  42. return fmt.Sprintf("art_%d_%d", id, mid)
  43. }
  44. func noneKey() string {
  45. return "none"
  46. }

参考

也可以参考完整的testdata例子:kratos/tool/kratos-gen-mc/testdata