跳转至

异常处理

异常层次结构

RedisKitError
├── RedisConnectionError
│   └── ConnectionPoolExhaustedError
├── SerializationError
├── TopologyConstraintError
├── LockError
│   ├── LockAcquireError
│   └── LockReleaseError
├── CacheError
├── QueueError
│   └── QueueEmptyError
├── BloomFilterError
├── SessionError
│   └── SessionNotFoundError
├── RateLimitExceeded
├── StreamError
└── RepositoryError
    ├── EntityNotFoundError
    └── OptimisticLockError

降级策略(FallbackPolicy)

可配置的 Redis 故障降级策略。

from redis_kit import FallbackPolicy, Cache

policy = FallbackPolicy(
    on_connection_error="return_none",  # "raise" | "return_none" | "callback"
    log_on_fallback=True,
)
cache = Cache(conn.sync_client, fallback_policy=policy)

模式

模式 行为
"raise"(默认) 重新抛出异常
"return_none" 记录警告日志,返回 None
"callback" 调用 fallback 回调函数并返回其结果

Callback 示例

from redis_kit import Cache, FallbackPolicy

def local_fallback(command: str, key: str, error: Exception):
    """Redis 不可用时从本地缓存降级"""
    if command == "GET":
        return local_cache.get(key)
    return None

policy = FallbackPolicy(
    on_connection_error="callback",
    fallback=local_fallback,
)
cache = Cache(conn.sync_client, prefix="myapp", fallback_policy=policy)

仅对连接类异常生效

FallbackPolicy 仅在 RedisConnectionErrorRedisTimeoutError 时触发。其他异常(如序列化错误)始终直接抛出。

callback 模式必须提供 fallback

使用 on_connection_error="callback" 时,必须同时提供 fallback 回调函数,否则构造时会抛出 ValueError