cache.go 827 B

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