[package]
name = "rustis"
version = "0.19.0"
keywords = ["redis", "database", "async", "cluster", "sentinel"]
categories = ["database", "asynchronous"]
description = "Redis async driver for Rust"
homepage = "https://github.com/dahomey-technologies/rustis"
repository = "https://github.com/dahomey-technologies/rustis"
documentation = "https://docs.rs/rustis"
readme = "README.md"
license-file = "LICENSE"
edition = "2024"
[features]
default = ["tokio-runtime", "pool", "tokio-rustls", "json", "client-cache"]
tokio-runtime = ["tokio/macros", "tokio/net", "tokio/rt", "tokio/io-util"]
tokio-rustls = ["dep:tokio-rustls", "dep:webpki-roots", "rustls"]
tokio-native-tls = ["dep:tokio-native-tls", "native-tls"]
async-std-runtime = [
"dep:async-std",
"async-std/attributes",
"tokio-util/compat",
]
async-std-native-tls = ["dep:async-native-tls", "native-tls"]
pool = ["dep:bb8"]
native-tls = ["dep:native-tls"]
rustls = ["dep:rustls"]
json = ["dep:serde_json"]
client-cache = ["dep:moka", "dep:dashmap"]
bench = ["dep:criterion", "dep:fred", "dep:redis"]
web-examples = ["dep:axum", "dep:actix-web"]
[dependencies]
async-std = { version = "1.13", features = ["attributes"], optional = true }
futures-util = { version = "0.3", features = ["sink", "io"] }
futures-channel = { version = "0.3", features = ["sink"] }
bytes = { version = "1.11", features = ["serde"] }
tokio = { version = "1.49", features = ["time", "io-util", "sync"] }
tokio-util = { version = "0.7", features = ["codec"] }
atoi = "2.0"
itoa = "1.0"
fast-float2 = "0.2"
dtoa = "1.0"
smallvec = { version = "1.15", features = ["union", "serde"] }
bb8 = { version = "0.9", optional = true }
url = "2.5"
tokio-rustls = { version = "0.26", optional = true }
webpki-roots = { version = "1.0", optional = true }
native-tls = { version = "0.2", optional = true }
rustls = { version = "0.23", optional = true }
tokio-native-tls = { version = "0.3", optional = true }
async-native-tls = { version = "0.5", optional = true }
log = "0.4"
crc16 = "0.4"
rand = "0.9"
serde = { version = "1.0", features = ["derive"] }
serde_json = { version = "1.0", optional = true }
socket2 = "0.6"
memchr = "2.7"
moka = { version = "0.12", features = ["future"], optional = true }
dashmap = { version = "6.1", optional = true }
mimalloc = "0.1"
criterion = { version = "0.8", features = ["async_tokio"], optional = true }
fred = { version = "10.1", optional = true }
redis = { version = "1.0", features = ["aio", "tokio-comp"], optional = true }
axum = { version = "0.8", optional = true }
actix-web = { version = "4.12", optional = true }
thiserror = "2.0"
[dev-dependencies]
serial_test = "3.3"
tokio = { version = "1.49", features = ["rt-multi-thread"] }
rand = "0.9"
env_logger = "0.11"
smallvec = { version = "1.15", features = ["serde"] }
rustls-pemfile = "2.2"
[package.metadata.docs.rs]
features = ["tokio-runtime", "tokio-rustls", "pool", "json", "client-cache"]
rustdoc-args = ["--cfg", "docsrs"]
[[bench]]
name = "generic_api"
harness = false
required-features = ["bench"]
[[bench]]
name = "multiplexer"
harness = false
required-features = ["bench"]
[[bench]]
name = "native_api"
harness = false
required-features = ["bench"]
[[bench]]
name = "pipeline"
harness = false
required-features = ["bench"]
[[bench]]
name = "fast_path"
harness = false
required-features = ["bench"]
[[example]]
name = "actix_crud"
required-features = ["web-examples"]
[[example]]
name = "actix_long_polling_pubsub"
required-features = ["web-examples"]
[[example]]
name = "axum_crud"
required-features = ["web-examples"]
[[example]]
name = "axum_long_polling_pubsub"
required-features = ["web-examples"]
[[example]]
name = "cbor"
[[example]]
name = "loop"
[[example]]
name = "resp_profiling"
[[example]]
name = "simple"
[profile.dev]
opt-level = 0
debug = true
split-debuginfo = "packed"