redis 缓存方式修改

This commit is contained in:
Cold
2025-12-20 14:50:41 +08:00
committed by 张斌
parent 134df0699c
commit 7c103a1d1d

View File

@@ -382,21 +382,13 @@ func IsUserActive(ctx context.Context, userId string, seconds int64) (bool, erro
return false, nil // 未找到记录,视为不活跃
}
// 检查时间差
now := gtime.Now().Timestamp()
return (now - lastActive) < seconds, nil
}
// SetSessionCache 缓存用户的 RAGFlow Session ID
// 使用 gredis SetEX 方法
func SetSessionCache(ctx context.Context, userId, sessionId string) error {
key := SessionLastActiveKeyPrefix + userId + ":session_id"
// ============== 限流相关 ==============
// SETEX key 604800 value (604800秒 = 7天)
_, err := redisClient.Do(ctx, "SETEX", key, 604800, sessionId)
return err
}
// 限流相关常量
const (
// RateLimitKeyPrefix 限流计数器 Key 前缀
RateLimitKeyPrefix = "ragflow:ratelimit:"
@@ -433,9 +425,17 @@ func GetRateLimit(ctx context.Context, key string) (count int64, err error) {
return
}
// GetSessionCache 获取缓存 RAGFlow Session ID
func GetSessionCache(ctx context.Context, userId string) (string, error) {
key := SessionLastActiveKeyPrefix + userId + ":session_id"
// SetSessionCache 缓存 RAGFlow Session ID(租户+用户+方向隔离)
func SetSessionCache(ctx context.Context, tenantId, userId, chatId, sessionId string) error {
key := SessionLastActiveKeyPrefix + tenantId + ":" + userId + ":" + chatId + ":session_id"
// SETEX key 7200 value (7200秒 = 2小时与last_active保持一致)
_, err := redisClient.Do(ctx, "SETEX", key, 7200, sessionId)
return err
}
// GetSessionCache 获取缓存的 RAGFlow Session ID租户+用户+方向隔离)
func GetSessionCache(ctx context.Context, tenantId, userId, chatId string) (string, error) {
key := SessionLastActiveKeyPrefix + tenantId + ":" + userId + ":" + chatId + ":session_id"
result, err := redisClient.Get(ctx, key)
if err != nil {
return "", err
@@ -448,9 +448,9 @@ func GetSessionCache(ctx context.Context, userId string) (string, error) {
return result.String(), nil
}
// DelSessionCache 删除缓存的 RAGFlow Session ID归档时调用
func DelSessionCache(ctx context.Context, userId string) error {
key := SessionLastActiveKeyPrefix + userId + ":session_id"
// DelSessionCache 删除缓存的 RAGFlow Session ID归档时调用,租户+用户+方向隔离
func DelSessionCache(ctx context.Context, tenantId, userId, chatId string) error {
key := SessionLastActiveKeyPrefix + tenantId + ":" + userId + ":" + chatId + ":session_id"
_, err := redisClient.Del(ctx, key)
return err
}