feat: 实现日志追踪链路 #185
@@ -6,7 +6,7 @@ import (
|
|||||||
|
|
||||||
"github.com/redis/go-redis/v9"
|
"github.com/redis/go-redis/v9"
|
||||||
|
|
||||||
"github.com/hhs/camtalk/internal/logger"
|
"github.com/hhs/camtalk/internal/trace"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Redis key 前缀。
|
// Redis key 前缀。
|
||||||
@@ -83,7 +83,8 @@ func (r *CachedUserRepository) SaveRefreshToken(ctx context.Context, userID, tok
|
|||||||
pipe.Set(ctx, key, userID, ttl)
|
pipe.Set(ctx, key, userID, ttl)
|
||||||
pipe.SAdd(ctx, userRefreshKey(userID), tokenHash)
|
pipe.SAdd(ctx, userRefreshKey(userID), tokenHash)
|
||||||
if _, err := pipe.Exec(ctx); err != nil {
|
if _, err := pipe.Exec(ctx); err != nil {
|
||||||
logger.Log.Warnw("Redis cache write failed for refresh token", "error", err)
|
log := trace.FromContext(ctx)
|
||||||
|
log.Warnw("redis cache write failed for refresh token", "error", err)
|
||||||
// 降级:DB 已写入成功,Redis 失败不影响正确性
|
// 降级:DB 已写入成功,Redis 失败不影响正确性
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
@@ -100,7 +101,8 @@ func (r *CachedUserRepository) FindRefreshToken(ctx context.Context, tokenHash s
|
|||||||
}
|
}
|
||||||
// redis.Nil 表示 key 不存在,其他错误记录日志后降级到 DB
|
// redis.Nil 表示 key 不存在,其他错误记录日志后降级到 DB
|
||||||
if err != redis.Nil {
|
if err != redis.Nil {
|
||||||
logger.Log.Warnw("Redis cache read failed for refresh token", "error", err)
|
log := trace.FromContext(ctx)
|
||||||
|
log.Warnw("redis cache read failed for refresh token", "error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 降级到 DB
|
// 降级到 DB
|
||||||
@@ -139,7 +141,8 @@ func (r *CachedUserRepository) DeleteRefreshToken(ctx context.Context, tokenHash
|
|||||||
pipe.SRem(ctx, userRefreshKey(userID), tokenHash)
|
pipe.SRem(ctx, userRefreshKey(userID), tokenHash)
|
||||||
}
|
}
|
||||||
if _, err := pipe.Exec(ctx); err != nil {
|
if _, err := pipe.Exec(ctx); err != nil {
|
||||||
logger.Log.Warnw("Redis cache delete failed for refresh token", "error", err)
|
log := trace.FromContext(ctx)
|
||||||
|
log.Warnw("redis cache delete failed for refresh token", "error", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -159,7 +162,8 @@ func (r *CachedUserRepository) DeleteUserRefreshTokens(ctx context.Context, user
|
|||||||
}
|
}
|
||||||
keys = append(keys, userKey)
|
keys = append(keys, userKey)
|
||||||
if err := r.rdb.Del(ctx, keys...).Err(); err != nil {
|
if err := r.rdb.Del(ctx, keys...).Err(); err != nil {
|
||||||
logger.Log.Warnw("Redis cache batch delete failed for user refresh tokens", "error", err, "userID", userID)
|
log := trace.FromContext(ctx)
|
||||||
|
log.Warnw("redis cache batch delete failed for user refresh tokens", "error", err, "user_id", userID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user