Redis ADBC driver
The standard way to integrate your application with Redis is to use the official Redis clients and libraries for your programming language. Redis ADBC is another option for workflows that benefit from SQL and Apache Arrow, including the data-tool integrations described here.
SQL queries and Arrow bulk ingestion over Redis through the Arrow Database Connectivity (ADBC) API. This community driver bundles its native library in platform wheels for Linux x86_64/arm64 (glibc 2.28+) and macOS arm64 (macOS 12+). Use Python 3.14 for the current integrations. Python 3.12+ remains installable for the separate Superset compatibility environment. Windows and macOS Intel wheels are not provided.
For installation and diagnostics, see Choose your tool and connect.
python -m pip install 'adbc-driver-redis[dbapi]' polars
python -m adbc_driver_redis doctor --offline
Recommended Redis configuration: Redis Search (Query Engine) enabled and query performance factor (QPF) set to 4× where supported. Search is required; 4× QPF is recommended for concurrent query performance. Configure these on the Redis server; installing this package does not enable them. See server requirements for configuration and CPU sizing guidance.
Set REDIS_URI and run python -m adbc_driver_redis doctor to check connectivity,
Search and a fetched SELECT 1. Add --check-manifests after registration for
native clients that load drivers by name.
With Redis and Search running:
import polars as pl
df = pl.read_database_uri(
query="SELECT 1 AS one",
uri="redis://localhost:6379/0",
engine="adbc",
)
print(df)
For direct DB-API use:
from adbc_driver_redis import dbapi
with dbapi.connect("redis://localhost:6379/0") as conn:
with conn.cursor() as cur:
cur.execute("SELECT 1 AS one")
print(cur.fetch_arrow_table())
Use rediss:// for TLS. Search is required; writes autocommit and transactions
are unsupported. SQL support comes from this driver. Installing the package
does not install or start a Redis server.
The airflow extra supports adbc_driver_redis.airflow.RedisAdbcHook for
autocommit queries through Airflow.
Optional extras: sqlalchemy for current SQLAlchemy, superset for the isolated
Superset 6.1 / SQLAlchemy 1.4 compatibility environment,
dagster for the Redis ADBC IO manager, and dask for partitioned DataFrame
reads with adbc_driver_redis.dask.read_query. The source build's ray extra
pins Ray 2.59.0 and supplies worker-side Arrow reads through
adbc_driver_redis.ray.read_query; see the
Ray guide
for installation on every worker and live-read consistency limits.
The dlt extra provides the append-only dlt destination:
import dlt
from adbc_driver_redis.dlt import redis_adbc
pipeline = dlt.pipeline(
pipeline_name="redis_orders",
destination=redis_adbc(uri="redis://localhost:6379/0", schema_name="analytics"),
)
pipeline.run([{"id": 1, "amount": 10.5}], table_name="orders")
Install with python -m pip install 'adbc-driver-redis[dlt]'. Loads use Arrow
batches through ADBC. Only append is supported; retries can duplicate partially
written batches. Keep the local dlt pipeline directory for checkpoints.
See the installation and integration guide and server requirements for supported Redis deployments, configuration and limitations.
Rerun candidate integration tests
The runners exercise direct Redis ADBC paths only. They start or reuse isolated
Redis Software with Search on 127.0.0.1:26379, verify active 4x QPF through
make -C go redis-up before every group, and build the current native library.
See the native sweep record
for every matrix entry's status, exact coverage, warnings, and compatibility limits.
The five-tool follow-up
adds Ibis, MLflow, Beam, Mage, and Kestra to that earlier coverage.
Run every automated native candidate in separate compatible environments:
python3 -m pip install uv
JAVA_HOME=/path/to/java21/Contents/Home KESTRA_JAVA=/path/to/java25/bin/java QUARTO=/path/to/quarto \
python/scripts/run-all-native-candidates.sh
Prerequisites are Docker Compose, curl, jq, a Go compiler, Java 21 for Spark,
Java 25 or newer for Kestra 2.0.7,
R with a working package compiler, and Quarto CLI. On macOS, the Java/R/OpenMP
dependencies can be installed with brew install openjdk@21 r libomp.
Use the official Quarto installation for the document test. The script creates
Python 3.12/3.14 environments using uv and installs R DBI/ADBC packages in an
isolated library. The native dbt adapter is installed from its recorded immutable
source revision; set CANDIDATE_DBT_ADAPTER to use another source requirement.
DuckDB and Fivetran's local SDK tester may download official runtime artifacts.
The Kestra profile downloads the pinned official 2.0.7 executable, verifies its
published SHA-256, and installs the Python Script plugin 1.18.6 into the cache.
Set KESTRA_JAR and KESTRA_PLUGINS_PATH to reuse a prepared matching runtime.
Its server runs only for the test, on a loopback endpoint with generated local
authentication and temporary storage; it is stopped after the tests.
The profiles remain separate because Airflow/Prefect have incompatible FastAPI requirements and Superset uses an older SQLAlchemy/PyArrow stack:
| Profile | Python | Dependency extras / tools |
|---|---|---|
| core | 3.12 | test,candidate-tests: pandas, Polars, NumPy/scikit-learn, SQLAlchemy, Arrow, DuckDB, Dask, Dagster, Prefect, dlt, Ray |
| workflows | 3.12 | workflow-tests: Jupyter, HF Datasets, Streamlit, SciPy |
| models | 3.12 | plotting-tests,model-tests: Plotly, Matplotlib, XGBoost, PyTorch, TensorFlow, Keras, Transformers |
| orchestrators | 3.12 | orchestrator-tests: local Kubeflow, Metaflow, Fivetran SDK |
| spark | 3.12 | spark-tests: fetched Arrow results into local Spark; Java required |
| airflow | 3.14 | airflow-tests: packaged hook and TaskFlow |
| superset | 3.12 | superset,test-runner: dataset/chart SQL and SQL Lab |
| dbt | 3.14 | dbt-tests plus native adapter: build, model tests, catalog |
| documents | 3.12 | workflow-tests plus R/Quarto: DBI reads/binding check and HTML render |
| analysis | 3.12 | analysis-tests: Ibis expressions and MLflow dataset tracking; PyArrow below 26 |
| beam | 3.12 | beam-tests: native ADBC reads inside local FnApi worker subprocesses |
| mage | 3.12 | mage-tests: real local loader/transformer pipeline |
| kestra | 3.12 | kestra-tests: native Python Script tasks, file handoff, checked task outputs; Java 25+ |
| ray-tls | 3.12 | ray-tests: owned private-CA Software fixture, remote worker reads and trust rejection |
Ibis, MLflow, Beam, Mage, and Kestra each cover populated and empty results. These are custom native ADBC/Arrow/Python workflows. They do not establish an Ibis Redis backend, an MLflow Redis tracking store, a packaged Beam I/O connector, or hosted application support. MLflow 3.17.2's automatic digest fails on pandas 3.1.0 empty string columns; the empty workflow uses its public explicit-digest option, while the exact default-path failure is retained as a strict expected failure (upstream bug).
MLflow and Beam's released dependency caps require PyArrow below 26. Their profiles retain compatible versions. MLflow's PyArrow 26 update already merged in #27216; Beam's request is #40919.
Run just this follow-up batch with the same saved launcher and isolated profiles:
CANDIDATE_PROFILES="analysis beam mage kestra" KESTRA_JAVA=/path/to/java25/bin/java \
python/scripts/run-all-native-candidates.sh
Set CANDIDATE_ENV_ROOT to choose the environment/cache directory, UV to use
a specific uv executable, and CANDIDATE_RESULTS_DIR to choose the report
directory. Defaults are under the system temporary directory. Each profile
writes a log, JUnit XML, and launcher exit code; summary.json distinguishes
passes, failures, errors, skips, and expected failures. CANDIDATE_PROFILES selects
which profiles to run and summarize; omitted profiles are not represented as
current passes. A setup failure in one
profile still allows the other profiles to run. RStudio requires the separate
manual IDE check: source r_dbi_smoke.R from an R session
with the same REDIS_URI, REDIS_ADBC_LIBRARY, and R library path.
For a focused run, install the corresponding extras in a virtual environment and select tools by name. For example:
python3 -m venv .venv-workflows
.venv-workflows/bin/python -m pip install -e 'python[workflow-tests]'
PYTHON="$PWD/.venv-workflows/bin/python" python/scripts/run-candidate-tests.sh jupyter datasets streamlit scipy
Use python/scripts/run-candidate-tests.sh --help for tool names. Omitting
names or passing all delegates to the isolated all-native runner. The runner
leaves Redis Software available; remove it with
COMPOSE_PROJECT_NAME=redis-adbc-candidates make -C go redis-down.
SOFTWARE_DB_PORT, SOFTWARE_API_PORT (default 29443), and
CANDIDATE_COMPOSE_PROJECT select another fixture. REDIS_URI is set to the
verified fixture. Flight SQL paths are excluded. Hosted deployment, GPU/model
scale, and browser UI coverage are not implied by these local tests.
Ray workers with a private CA
Install python[ray-tests] and select the dedicated TLS profile:
PYTHON=/path/to/ray-venv/bin/python python/scripts/run-candidate-tests.sh ray-tls
This selector runs on its own. It creates a fresh Software project, verifies 4x
QPF, installs a short-lived private certificate on the Software proxy, and supplies
its authenticated rediss:// endpoint and CA to the datasource tests. The worker
must preserve every row and Arrow schema with trust supplied and reject the
certificate when trust is removed. The profile fails if the TLS fixture is absent.
Trust is passed through adbc.redis.tls_ca_file; it is not installed globally or
used for package downloads. Containers, network and private material are removed
after both successful and failing runs.
CANDIDATE_TLS_API_PORT/CANDIDATE_TLS_DB_PORT default to 30443/27379.
CANDIDATE_TLS_COMPOSE_PROJECT selects a project name; the default is unique to
the process. A pre-existing project is rejected. The all-native launcher runs
this as its own environment and keeps a separate ray-tls report. The ordinary
plaintext Ray group still reports its TLS-case skip explicitly.
Dependency regressions
R binding tests cover single/multiple parameters, NULLs and rebinding, while asserting the driver's unnamed parameter schema. adbi 0.1.3 still has strict expected failures; its Arrow binding method also reaches the same name check. A proposed upstream correction passes the tests in an isolated package install; it is not a supported released dependency yet.
Datasets tests now exercise default saves independently and with fetched ADBC
results. Datasets 5.1.0's exact zero-shard empty reload error remains a strict
expected failure. An explicit empty-shard case preserves the tested mitigation;
nonempty results use defaults. Keep num_shards=1 for empty results until a
released fix passes the default-sharding regression.
See the follow-up validation for results, proposed upstream patches and remaining dependency work.
Arrow IPC stream/file serialization is available inside the native driver through standard ADBC statement options. See the IPC contract and example.
Metadata
Release files for adbc-driver-redis 0.0.20
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| adbc_driver_redis-0.0.20-py3-none-manylinux_2_28_x86_64.whl | Python 3 | none | Linux glibc 2.28+ x86-64 | Details for adbc_driver_redis-0.0.20-py3-none-manylinux_2_28_x86_64.whl |
| adbc_driver_redis-0.0.20-py3-none-manylinux_2_28_aarch64.whl | Python 3 | none | Linux glibc 2.28+ ARM64 | Details for adbc_driver_redis-0.0.20-py3-none-manylinux_2_28_aarch64.whl |
| adbc_driver_redis-0.0.20-py3-none-macosx_12_0_arm64.whl | Python 3 | none | macOS 12.0+ ARM64 | Details for adbc_driver_redis-0.0.20-py3-none-macosx_12_0_arm64.whl |
Total release size: 44.5 MB
Release files / adbc_driver_redis-0.0.20-py3-none-manylinux_2_28_x86_64.whl
| Download URL | adbc_driver_redis-0.0.20-py3-none-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 16.4 MB |
| Tags | Linux glibc 2.28+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
04ec7912a1274160561c718d43e4eb678027cfb9ce67f9eef7fe1fd2e7ca04ef
|
|
BLAKE2b-256 checksum How to use checksums |
a01e8cb0c7072476b26125d1b649557063155c8fc9d0d6d947954ed1ca41f4ac
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 3, 2026.
Transparency logRelease files / adbc_driver_redis-0.0.20-py3-none-manylinux_2_28_aarch64.whl
| Download URL | adbc_driver_redis-0.0.20-py3-none-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 14.3 MB |
| Tags | Linux glibc 2.28+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
b666fe4bb37d2a8f0c0d60b7273ec9e596f113e93c835102c6f2a1d5ac7db761
|
|
BLAKE2b-256 checksum How to use checksums |
6bc351183d078896d960e2284ee48c98db0896c4c08e8b385ac591d46f504d93
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 3, 2026.
Transparency logRelease files / adbc_driver_redis-0.0.20-py3-none-macosx_12_0_arm64.whl
| Download URL | adbc_driver_redis-0.0.20-py3-none-macosx_12_0_arm64.whl |
|---|---|
| Size | 13.9 MB |
| Tags | Python 3 macOS 12.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
970f5ac5b304ccd2143f2ebabbba4092cd02f74c7264981b4e8cf89a4e32624c
|
|
BLAKE2b-256 checksum How to use checksums |
97a5100f0b235ca7ad49c0e026ed4e5031e93a870fded981b1684a83c679019e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 3, 2026.
Transparency logSecurity for adbc-driver-redis 0.0.20
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 3 files in this release have been uploaded with provenance metadata.
Attestation for adbc_driver_redis-0.0.20-py3-none-manylinux_2_28_x86_64.whl
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 3, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.