cache.go 794 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package cache
  2. import (
  3. "time"
  4. "github.com/dgraph-io/ristretto/v2"
  5. "github.com/uozi-tech/cosy/logger"
  6. )
  7. var cache *ristretto.Cache[string, any]
  8. func Init() {
  9. var err error
  10. cache, err = ristretto.NewCache(&ristretto.Config[string, any]{
  11. NumCounters: 1e7, // number of keys to track frequency of (10M).
  12. MaxCost: 1 << 30, // maximum cost of cache (1GB).
  13. BufferItems: 64, // number of keys per Get buffer.
  14. })
  15. if err != nil {
  16. logger.Fatal("initializing local cache err", err)
  17. }
  18. // Initialize the config scanner
  19. InitScanner()
  20. }
  21. func Set(key string, value interface{}, ttl time.Duration) {
  22. cache.SetWithTTL(key, value, 0, ttl)
  23. cache.Wait()
  24. }
  25. func Get(key string) (value interface{}, ok bool) {
  26. return cache.Get(key)
  27. }
  28. func Del(key string) {
  29. cache.Del(key)
  30. }