instance.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package cache
  2. import (
  3. "context"
  4. "encoding/json"
  5. "os"
  6. "time"
  7. )
  8. var (
  9. std Cache
  10. )
  11. func init() {
  12. std = NewMemCache()
  13. }
  14. func SetCache(l Cache) {
  15. std = l
  16. }
  17. func GetCache() Cache {
  18. return std
  19. }
  20. // Set 设置缓存数据
  21. func Set(ctx context.Context, key string, buf []byte) {
  22. std.Set(ctx, key, buf)
  23. }
  24. // SetEx 设置一个有效时间的缓存数据
  25. func SetEx(ctx context.Context, key string, buf []byte, expire time.Duration) {
  26. std.SetEx(ctx, key, buf, expire)
  27. }
  28. // Try 尝试获取缓存数据,获取不到就设置
  29. func Try(ctx context.Context, key string, cb LoadFunc) (buf []byte, err error) {
  30. return std.Try(ctx, key, cb)
  31. }
  32. // Get 获取缓存数据
  33. func Get(ctx context.Context, key string) (buf []byte, ok bool) {
  34. return std.Get(ctx, key)
  35. }
  36. // Del 删除缓存数据
  37. func Del(ctx context.Context, key string) {
  38. std.Del(ctx, key)
  39. }
  40. // Store 存储缓存数据
  41. func Store(ctx context.Context, key string, val any) (err error) {
  42. return StoreEx(ctx, key, val, 0)
  43. }
  44. // StoreEx 存储缓存数据
  45. func StoreEx(ctx context.Context, key string, val any, expire time.Duration) (err error) {
  46. var (
  47. buf []byte
  48. )
  49. if buf, err = json.Marshal(val); err != nil {
  50. return
  51. }
  52. SetEx(ctx, key, buf, expire)
  53. return
  54. }
  55. // Load 加载指定的缓存数据
  56. func Load(ctx context.Context, key string, val any) (err error) {
  57. var (
  58. ok bool
  59. buf []byte
  60. )
  61. if buf, ok = Get(ctx, key); !ok {
  62. return os.ErrNotExist
  63. }
  64. err = json.Unmarshal(buf, val)
  65. return
  66. }