fredis 10.1.0

An async client for Redis and Valkey.
Documentation
[package]
authors = ["x-at-01 <x-at-01@googlegroups.com>"]
categories = ["asynchronous", "database", "web-programming"]
description = "An async client for Redis and Valkey."
edition = "2024"
exclude = ["tests", ".circleci", "bin", ".github", "doc"]
homepage = "https://github.com/webc-site/fredis"
keywords = ["redis", "valkey", "cluster", "sentinel"]
license = "MIT"
name = "fredis"
readme = "README.md"
repository = "https://github.com/webc-site/fredis"
rust-version = "1.85"
version = "10.1.0"

[package.metadata.docs.rs]
features = [
  "i-all",
  "i-redis-stack",
  "i-hexpire",
  "transactions",
  "blocking-encoding",
  "dns",
  "metrics",
  "mocks",
  "monitor",
  "replicas",
  "sentinel-auth",
  "sentinel-client",
  "serde-json",
  "subscriber-client",
  "unix-sockets",
  "enable-rustls",
  "enable-native-tls",
  "full-tracing",
  "credential-provider",
  "dynamic-pool",
  "tcp-user-timeouts",
]
rustdoc-args = ["--cfg", "docsrs"]

[lib]
doc = true
name = "fredis"
test = true

[features]
default = ["transactions", "i-std"]

blocking-encoding = ["tokio/rt-multi-thread"]
custom-reconnect-errors = []
default-nil-types = []
dns = ["hickory-resolver"]
metrics = []
mocks = ["glob-match"]
monitor = ["nom"]
replicas = []
sentinel-auth = []
sentinel-client = []
serde-json = ["serde_json"]
subscriber-client = ["i-pubsub"]
transactions = []
trust-dns-resolver = ["dep:trust-dns-resolver"]
unix-sockets = []
credential-provider = []
dynamic-pool = ["metrics"]
tcp-user-timeouts = []

# Enable experimental support for the Glommio runtime.
glommio = [
  "dep:glommio",
  "futures-io",
  "pin-project",
  "fred-macros/enabled",
  "oneshot/async",
  "futures-lite",
]
# Enable experimental support for the Monoio runtime.
monoio = [
  "dep:monoio",
  "monoio-codec",
  "fred-macros/enabled",
  "oneshot/async",
  "futures-lite",
  "local-sync",
]
monoio-native-tls = ["dep:monoio-native-tls"]
monoio-rustls = ["dep:monoio-rustls"]
# [WIP] Enable experimental support for the Smol runtime.
smol = []

# Enable experimental support for Cloudflare Workers.
cloudflare = [
  "dep:worker",
  "dep:wasm-bindgen",
  "dep:wasm-bindgen-futures",
  "getrandom/wasm_js",
  "pin-project",
  "fred-macros/enabled",
  "oneshot/async",
  "futures-lite",
]

# Enables rustls with the rustls/aws_lc_rs crypto backend
enable-rustls = [
  "rustls",
  "tokio-rustls",
  "rustls-native-certs",
  "rustls/std",
  "tokio-rustls/logging",
  "tokio-rustls/tls12",
  "tokio-rustls/aws_lc_rs",
]

# Enables rustls with the rustls/ring backend
enable-rustls-ring = [
  "rustls",
  "tokio-rustls",
  "rustls-native-certs",
  "rustls/std",
  "tokio-rustls/logging",
  "tokio-rustls/tls12",
  "tokio-rustls/ring",
]

# Enables native tls
enable-native-tls = ["native-tls", "tokio-native-tls"]

# Enables native tls with vendored openssl
vendored-openssl = ["enable-native-tls", "native-tls/vendored"]

# Standard Redis Interfaces
i-acl = []
i-all = [
  "i-acl",
  "i-client",
  "i-cluster",
  "i-config",
  "i-geo",
  "i-hashes",
  "i-hyperloglog",
  "i-keys",
  "i-lists",
  "i-scripts",
  "i-memory",
  "i-pubsub",
  "i-server",
  "i-streams",
  "i-tracking",
  "i-sorted-sets",
  "i-slowlog",
  "i-sets",
]
i-client = []
i-cluster = []
i-config = []
i-geo = ["i-sorted-sets"]
i-hashes = []
i-hyperloglog = []
i-keys = []
i-lists = []
i-memory = []
i-pubsub = []
i-scripts = []
i-server = []
i-sets = []
i-slowlog = []
i-sorted-sets = []
i-std = [
  "i-hashes",
  "i-keys",
  "i-lists",
  "i-sets",
  "i-streams",
  "i-pubsub",
  "i-sorted-sets",
  "i-server",
]
i-streams = []
i-tracking = ["i-client", "i-pubsub"]

# Redis Stack Interfaces
i-redis-json = ["serde-json"]
i-redis-stack = ["i-redis-json", "i-time-series", "i-redisearch"]
i-redisearch = ["i-sorted-sets", "i-geo", "i-hashes"]
i-time-series = []
i-hexpire = []

# Full and partial tracing
full-tracing = ["partial-tracing"]
partial-tracing = ["tracing", "tracing-futures"]

# Debugging Features
debug-ids = []
network-logs = []

[dependencies]
arc-swap = "1.9"
async-trait = { version = "0.1" }
bytes = "1.12"
bytes-utils = "0.1.4"
float-cmp = "0.10"
futures = { version = "0.3", features = ["std"] }
log = "0.4"
native-tls = { version = "0.2", optional = true }
nom = { version = "8.0", optional = true }
parking_lot = "0.12"
rand = "0.10"
redis-protocol = { version = "6.0.0", features = ["resp2", "resp3", "bytes"] }
rustls = { version = "0.23", optional = true, default-features = false }
rustls-native-certs = { version = "0.8", optional = true }
semver = "1.0"
serde_json = { version = "1", optional = true }
sha-1 = { version = "0.10", optional = true }
tracing = { version = "0.1", optional = true }
tracing-futures = { version = "0.2", optional = true }
glob-match = { version = "0.2.1", optional = true }
url = "2.5"
urlencoding = "2.1"
# DNS Features
trust-dns-resolver = { version = "0.23", optional = true, features = ["tokio"] }
hickory-resolver = { version = "0.25.2", optional = true, features = ["tokio"] }
fred-macros = "0.1"
# Tokio Dependencies
tokio = { version = "1.53", default-features = false, features = [
  "sync",
  "macros",
  "io-util",
] }
tokio-native-tls = { version = "0.3", optional = true }
tokio-rustls = { version = "0.26", optional = true, default-features = false }
tokio-stream = "0.1"
tokio-util = { version = "0.7", features = ["codec"] }
# Glommio Dependencies
glommio = { version = "0.9.0", optional = true }
futures-io = { version = "0.3", optional = true }
pin-project = { version = "1.1.13", optional = true }
oneshot = { version = "0.2.1", optional = true, default-features = false, features = [
  "async",
] }
futures-lite = { version = "2.6", optional = true }
# Monoio Dependencies
monoio = { version = "0.2.4", optional = true, features = ["bytes"] }
monoio-codec = { version = "0.3.4", optional = true }
monoio-native-tls = { version = "0.4.0", optional = true }
monoio-rustls = { version = "0.4.0", optional = true }
local-sync = { version = "0.1.1", optional = true }

[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
socket2 = "0.6"

[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tokio]
version = "1.53"
features = ["net", "rt", "rt-multi-thread", "time"]

[target.'cfg(target_arch = "wasm32")'.dependencies]
worker = { version = "0.8", optional = true }
wasm-bindgen = { version = "0.2", optional = true }
wasm-bindgen-futures = { version = "0.4", optional = true }
getrandom = { version = "0.4", optional = true, features = ["wasm_js"] }

[dev-dependencies]
axum = { version = "0.8", features = ["macros"] }
actix-web = "4.12.1"
maplit = "1.0"
pretty_env_logger = "0.5"
serde = { version = "1.0", features = ["derive"] }
tokio-stream = { version = "0.1", features = ["sync"] }

[[example]]
name = "glommio"
required-features = ["glommio", "i-std"]

[[example]]
name = "misc"
required-features = ["i-all"]

[[example]]
name = "scan"
required-features = ["i-all"]

[[example]]
name = "monitor"
required-features = ["monitor"]

[[example]]
name = "pubsub"
required-features = ["subscriber-client"]

[[example]]
name = "axum"
required-features = ["subscriber-client"]

[[example]]
name = "serde_json"
required-features = ["serde-json"]

[[example]]
name = "redis_json"
required-features = ["i-redis-json"]

[[example]]
name = "dynamic_pool"
required-features = ["dynamic-pool"]

[[example]]
name = "replicas"
required-features = ["i-std", "i-cluster", "replicas"]

[[example]]
name = "dns"
required-features = ["dns"]

[[example]]
name = "client_tracking"
required-features = ["i-tracking", "i-std"]

[[example]]
name = "lua"
required-features = ["sha-1", "i-scripts"]

[[example]]
name = "events"
required-features = ["tokio-stream/sync", "i-std"]

[[example]]
name = "transactions"
required-features = ["transactions", "i-std"]