You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

cache.go 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. // Copyright 2019 The Gitea Authors. All rights reserved.
  2. // Use of this source code is governed by a MIT-style
  3. // license that can be found in the LICENSE file.
  4. package setting
  5. import (
  6. "strings"
  7. "time"
  8. "code.gitea.io/gitea/modules/log"
  9. )
  10. // Cache represents cache settings
  11. type Cache struct {
  12. Enabled bool
  13. Adapter string
  14. Interval int
  15. Conn string
  16. TTL time.Duration `ini:"ITEM_TTL"`
  17. }
  18. var (
  19. // CacheService the global cache
  20. CacheService = struct {
  21. Cache
  22. LastCommit struct {
  23. Enabled bool
  24. TTL time.Duration `ini:"ITEM_TTL"`
  25. CommitsCount int64
  26. } `ini:"cache.last_commit"`
  27. }{
  28. Cache: Cache{
  29. Enabled: true,
  30. Adapter: "memory",
  31. Interval: 60,
  32. TTL: 16 * time.Hour,
  33. },
  34. LastCommit: struct {
  35. Enabled bool
  36. TTL time.Duration `ini:"ITEM_TTL"`
  37. CommitsCount int64
  38. }{
  39. Enabled: true,
  40. TTL: 8760 * time.Hour,
  41. CommitsCount: 1000,
  42. },
  43. }
  44. )
  45. func newCacheService() {
  46. sec := Cfg.Section("cache")
  47. if err := sec.MapTo(&CacheService); err != nil {
  48. log.Fatal("Failed to map Cache settings: %v", err)
  49. }
  50. CacheService.Adapter = sec.Key("ADAPTER").In("memory", []string{"memory", "redis", "memcache"})
  51. switch CacheService.Adapter {
  52. case "memory":
  53. case "redis", "memcache":
  54. CacheService.Conn = strings.Trim(sec.Key("HOST").String(), "\" ")
  55. case "": // disable cache
  56. CacheService.Enabled = false
  57. default:
  58. log.Fatal("Unknown cache adapter: %s", CacheService.Adapter)
  59. }
  60. if CacheService.Enabled {
  61. log.Info("Cache Service Enabled")
  62. }
  63. sec = Cfg.Section("cache.last_commit")
  64. if !CacheService.Enabled {
  65. CacheService.LastCommit.Enabled = false
  66. }
  67. CacheService.LastCommit.CommitsCount = sec.Key("COMMITS_COUNT").MustInt64(1000)
  68. if CacheService.LastCommit.Enabled {
  69. log.Info("Last Commit Cache Service Enabled")
  70. }
  71. }