//! Redis cache adapter configuration and offline-compatible store.

mod backend;
mod breaker;
pub(crate) mod store_breaker;
mod store_ops;

pub mod client;
pub mod cluster;
pub mod command;
pub mod config;
pub mod error;
pub mod hash;
pub mod redirect;
pub mod retry;
pub mod script;
pub mod sharded;
pub mod slot;
pub mod store;

pub use breaker::RedisBreakerConfig;
pub use client::{RedisClientFactory, cluster_startup_nodes};
pub use cluster::RedisClusterRouter;
pub use command::{RedisCommandRecorder, run_redis_command};
pub(crate) use command::{redis_breaker_rejection, redis_error, run_redis_cache_command};
pub use config::{
    RedisCacheConfig, RedisClusterConfig, RedisDegradationEvent, RedisDegradedAction,
    RedisDeleteRetryConfig, RedisNodeConfig, RedisOperation, RedisShardedCacheConfig,
    RedisUnavailablePolicy,
};
pub use error::{RedisCacheError, RedisCacheResult};
pub use hash::{RedisShardChoice, RedisShardPicker};
pub use redirect::{
    RedisClusterRedirect, RedisClusterRedirectKind, RedisClusterRouteAction, RedisClusterSlotMap,
    RedisCommandEvent, RedisCommandEventKind, RedisCommandOutcome, classify_redis_error,
};
pub use retry::{
    RedisDeleteClient, RedisDeleteExecutor, RedisDeleteRetryQueue, RedisDeleteRetryStats,
};
pub use script::{RedisLuaScript, RedisScriptEvent, RedisScriptInvocation};
pub use sharded::RedisShardedCacheStore;
pub use slot::{REDIS_CLUSTER_SLOTS, redis_cluster_hash_tag, redis_cluster_slot};
pub use store::RedisCacheStore;
