migrate from github

This commit is contained in:
2026-07-15 22:42:31 +08:00
commit 3ad559f05e
262 changed files with 21637 additions and 0 deletions
+67
View File
@@ -0,0 +1,67 @@
package cache
import (
"context"
"time"
"github.com/XingfenD/yoresee_doc/pkg/storage"
"github.com/bytedance/sonic"
"github.com/redis/go-redis/v9"
"github.com/sirupsen/logrus"
)
func GetJSON(ctx context.Context, key string, dst interface{}) (bool, error) {
b, err := storage.KVS.Get(ctx, key).Bytes()
if err == redis.Nil {
return false, nil
}
if err != nil {
return false, err
}
if err := sonic.Unmarshal(b, dst); err != nil {
return false, err
}
return true, nil
}
func SetJSON(ctx context.Context, key string, v interface{}, ttl time.Duration) error {
b, err := sonic.Marshal(v)
if err != nil {
return err
}
return storage.KVS.Set(ctx, key, b, ttl).Err()
}
func DeleteByPattern(ctx context.Context, pattern string) error {
iter := storage.KVS.Scan(ctx, 0, pattern, 100).Iterator()
for iter.Next(ctx) {
_ = storage.KVS.Del(ctx, iter.Val()).Err()
}
return iter.Err()
}
func DoubleDelete(ctx context.Context, writeDB func() error, keys ...string) error {
if err := deleteKeys(ctx, keys); err != nil {
logrus.Warn("First cache deletion failed: ", err)
}
if err := writeDB(); err != nil {
return err
}
go func() {
time.Sleep(100 * time.Millisecond)
if err := deleteKeys(ctx, keys); err != nil {
logrus.Warn("Second cache deletion failed: ", err)
}
}()
return nil
}
func deleteKeys(ctx context.Context, keys []string) error {
if len(keys) == 0 {
return nil
}
return storage.KVS.Del(ctx, keys...).Err()
}