[package]
edition = "2021"
name = "oxcache"
version = "0.1.4"
authors = ["Kirky.X"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A high-performance multi-level cache library for Rust with L1 (memory) and L2 (Redis) caching."
readme = "README.md"
keywords = [
"cache",
"redis",
"memory",
"async",
"performance",
]
categories = [
"caching",
"asynchronous",
"database",
]
license = "MIT"
repository = "https://github.com/kirky-x/oxcache"
[features]
batch-write = ["dep:tokio-util"]
bincode = [
"serialization",
"dep:bincode",
]
bloom-filter = [
"dep:bloomfilter",
"dep:murmur3",
]
cli = [
"dep:clap",
"dep:dashmap",
"dep:tracing",
"metrics",
]
codegen = ["dep:anyhow"]
compression = ["dep:flate2"]
confers = [
"dep:confers",
"dep:toml",
]
config-dynamic = ["confers"]
core = [
"minimal",
"l2-redis",
"futures",
]
database = [
"dep:sea-orm",
"dep:sqlx",
"dep:regex",
]
default = ["full"]
enhanced-stats = ["metrics"]
extra-serialization = [
"dep:rmp-serde",
"dep:ciborium",
]
flate2 = ["dep:flate2"]
full = [
"core",
"macros",
"bloom-filter",
"rate-limiting",
"wal-recovery",
"database",
"cli",
"full-metrics",
"batch-write",
"confers",
"codegen",
"compression",
"smart-strategy",
"redis-native",
"enhanced-stats",
"ttl-control",
"tiered-cache",
"extra-serialization",
"config-dynamic",
"http-cache",
"serialization-cache",
]
full-metrics = [
"metrics",
"dep:tracing-opentelemetry",
"dep:opentelemetry-otlp",
]
http-cache = [
"serialization",
"tiered-cache",
"dep:md5",
"dep:http",
"dep:tower",
"dep:axum",
"dep:hyper",
"dep:http-body-util",
]
l1-moka = [
"dep:moka",
"dep:dashmap",
]
l2-redis = ["dep:redis"]
macros = ["dep:oxcache_macros"]
metrics = [
"opentelemetry",
"dep:dashmap",
]
minimal = [
"l1-moka",
"tokio/time",
"dep:tracing",
"metrics",
"serialization",
"chrono",
]
opentelemetry = [
"dep:opentelemetry",
"dep:opentelemetry_sdk",
"dep:tracing-subscriber",
]
rate-limiting = []
redis-native = ["l2-redis"]
serialization = [
"dep:serde",
"dep:serde_json",
]
serialization-cache = [
"serialization",
"dep:dashmap",
]
smart-strategy = [
"compression",
"metrics",
"l1-moka",
]
sync = []
tiered-cache = [
"l1-moka",
"l2-redis",
]
ttl-control = ["l2-redis"]
wal-recovery = []
[lib]
name = "oxcache"
path = "src/lib.rs"
[[bin]]
name = "oxcache"
path = "src/main.rs"
[[test]]
name = "config_test"
path = "tests/config_test.rs"
[[test]]
name = "cross_database_integration_tests"
path = "tests/cross_database_integration_tests.rs"
[[test]]
name = "database_partitioning_tests"
path = "tests/database_partitioning_tests.rs"
[[test]]
name = "database_test_utils"
path = "tests/database_test_utils.rs"
[[test]]
name = "debug_mysql_test"
path = "tests/debug_mysql_test.rs"
[[test]]
name = "e2e"
path = "tests/e2e.rs"
[[test]]
name = "feature_combinations"
path = "tests/feature_combinations.rs"
[[test]]
name = "feature_gated_init_test"
path = "tests/feature_gated_init_test.rs"
[[test]]
name = "integration"
path = "tests/integration.rs"
[[test]]
name = "l2_backend_test"
path = "tests/l2_backend_test.rs"
[[test]]
name = "layer_test"
path = "tests/layer_test.rs"
[[test]]
name = "memory_leak_test"
path = "tests/memory_leak_test.rs"
[[test]]
name = "memory_tests"
path = "tests/memory_tests.rs"
[[test]]
name = "miri_memory_test"
path = "tests/miri_memory_test.rs"
[[test]]
name = "mock_l2_backend_test"
path = "tests/mock_l2_backend_test.rs"
[[test]]
name = "redis_test_utils"
path = "tests/redis_test_utils.rs"
[[test]]
name = "redis_version_compatibility_test"
path = "tests/redis_version_compatibility_test.rs"
[[test]]
name = "security_tests"
path = "tests/security_tests.rs"
[[test]]
name = "sqlite_connection_test"
path = "tests/sqlite_connection_test.rs"
[[test]]
name = "test_utils"
path = "tests/test_utils.rs"
[[test]]
name = "unit"
path = "tests/unit.rs"
[[bench]]
name = "cache_benchmark"
path = "benches/cache_benchmark.rs"
[[bench]]
name = "l2_cache_benchmark"
path = "benches/l2_cache_benchmark.rs"
[[bench]]
name = "optimization_benchmark"
path = "benches/optimization_benchmark.rs"
[dependencies.anyhow]
version = "1.0"
[dependencies.async-trait]
version = "0.1"
[dependencies.axum]
version = "0.8"
optional = true
[dependencies.bincode]
version = "1.3"
optional = true
[dependencies.bloomfilter]
version = "2.0.0"
optional = true
[dependencies.chrono]
version = "0.4"
features = [
"serde",
"clock",
]
optional = true
default-features = false
[dependencies.ciborium]
version = "0.2"
optional = true
[dependencies.clap]
version = "4.4"
features = ["derive"]
optional = true
default-features = false
[dependencies.confers]
version = "0.1.1"
optional = true
[dependencies.dashmap]
version = "6.0"
optional = true
[dependencies.flate2]
version = "1.0"
optional = true
[dependencies.futures]
version = "0.3"
optional = true
[dependencies.http]
version = "1.0"
optional = true
[dependencies.http-body-util]
version = "0.1"
optional = true
[dependencies.hyper]
version = "1.0"
optional = true
[dependencies.lazy_static]
version = "1.4"
[dependencies.log]
version = "0.4"
[dependencies.md5]
version = "0.7"
optional = true
[dependencies.moka]
version = "0.12"
features = ["future"]
optional = true
default-features = false
[dependencies.murmur3]
version = "0.5"
optional = true
[dependencies.once_cell]
version = "1.18"
[dependencies.opentelemetry]
version = "0.22"
optional = true
[dependencies.opentelemetry-otlp]
version = "0.15"
optional = true
[dependencies.opentelemetry_sdk]
version = "0.22"
optional = true
[dependencies.oxcache_macros]
version = "0.1.3"
optional = true
[dependencies.redis]
version = "0.27"
features = [
"aio",
"tokio-comp",
"cluster-async",
"sentinel",
"connection-manager",
"script",
]
optional = true
default-features = false
[dependencies.regex]
version = "1.10"
optional = true
[dependencies.rmp-serde]
version = "1.0"
optional = true
[dependencies.sea-orm]
version = "1.0.14"
features = [
"sqlx-sqlite",
"runtime-tokio-rustls",
"macros",
]
optional = true
default-features = false
[dependencies.secrecy]
version = "0.8"
features = ["serde"]
[dependencies.serde]
version = "1.0"
features = [
"derive",
"alloc",
]
optional = true
default-features = false
[dependencies.serde_json]
version = "1.0"
optional = true
[dependencies.sqlx]
version = "0.8"
features = [
"sqlite",
"runtime-tokio-rustls",
"macros",
"migrate",
]
optional = true
default-features = false
[dependencies.thiserror]
version = "1.0"
[dependencies.tokio]
version = "1.32"
features = ["full"]
[dependencies.tokio-util]
version = "0.7"
optional = true
[dependencies.toml]
version = "0.8"
optional = true
[dependencies.tower]
version = "0.5"
optional = true
[dependencies.tracing]
version = "0.1"
optional = true
[dependencies.tracing-opentelemetry]
version = "0.23"
optional = true
[dependencies.tracing-subscriber]
version = "0.3"
features = [
"env-filter",
"fmt",
]
optional = true
default-features = false
[dependencies.uuid]
version = "1.0"
features = ["v4"]
[dev-dependencies.criterion]
version = "0.5"
features = ["async_tokio"]
[dev-dependencies.ctor]
version = "0.2"
[dev-dependencies.mockall]
version = "0.14.0"
[dev-dependencies.rand]
version = "0.8"
[dev-dependencies.serial_test]
version = "3.0"
[dev-dependencies.tempfile]
version = "3.8"
[build-dependencies.anyhow]
version = "1.0"
optional = true
[profile.dev]
debug = 2
[profile.release]
opt-level = 3
lto = "fat"
codegen-units = 1
panic = "abort"
overflow-checks = false
strip = true
[profile.release.package."*"]
opt-level = 3
[profile.test]
opt-level = 0