{"id":20730167,"url":"https://github.com/dahomey-technologies/rustis","last_synced_at":"2026-01-08T07:12:10.613Z","repository":{"id":58156032,"uuid":"530004740","full_name":"dahomey-technologies/rustis","owner":"dahomey-technologies","description":"An asynchronous Redis client for Rust","archived":false,"fork":false,"pushed_at":"2024-08-07T21:29:50.000Z","size":1392,"stargazers_count":88,"open_issues_count":0,"forks_count":12,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-09-10T11:09:39.939Z","etag":null,"topics":["async","database","redis","redis-client","redis-cluster","redis-database","redis-sentinel","redis-stack","rust","rust-crate","rust-lang","rust-library"],"latest_commit_sha":null,"homepage":"https://docs.rs/rustis","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dahomey-technologies.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-08-28T23:27:20.000Z","updated_at":"2024-08-31T18:03:46.000Z","dependencies_parsed_at":"2024-03-16T20:22:57.959Z","dependency_job_id":"d16d9470-2f15-4e80-9d81-ae69071a8dd7","html_url":"https://github.com/dahomey-technologies/rustis","commit_stats":null,"previous_names":["dahomey-technologies/redis-driver-rs"],"tags_count":41,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dahomey-technologies%2Frustis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dahomey-technologies%2Frustis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dahomey-technologies%2Frustis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dahomey-technologies%2Frustis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dahomey-technologies","download_url":"https://codeload.github.com/dahomey-technologies/rustis/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247415973,"owners_count":20935387,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["async","database","redis","redis-client","redis-cluster","redis-database","redis-sentinel","redis-stack","rust","rust-crate","rust-lang","rust-library"],"created_at":"2024-11-17T05:10:12.487Z","updated_at":"2026-01-08T07:12:10.594Z","avatar_url":"https://github.com/dahomey-technologies.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"An asynchronous Redis client for Rust.\n\n[![Crate](https://img.shields.io/crates/v/rustis.svg)](https://crates.io/crates/rustis)\n[![docs.rs](https://docs.rs/rustis/badge.svg)](https://docs.rs/rustis)\n[![Build](https://github.com/dahomey-technologies/rustis/actions/workflows/compile_and_test.yml/badge.svg)](https://github.com/dahomey-technologies/rustis/actions/workflows/compile_and_test.yml)\n[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n[![libs.tech recommends](https://libs.tech/project/530004740/badge.svg)](https://libs.tech/project/530004740/rustis)\n\n# Documentation\n\n[Official Documentation](https://docs.rs/rustis/latest/rustis/)\n\n# Philosophy\n\n* Low allocations\n* Full async library\n* Lock free implementation\n* Rust idiomatic API\n* Multiplexing as a core feature\n\n# Features\n\n* Full documentation with multiple examples\n* Support all [Redis Commands](https://redis.io/commands/) until Redis 8.0\n* Async support ([tokio](https://tokio.rs/) or [async-std](https://async.rs/))\n* Different client modes:\n  * Single client\n  * [Multiplexed](https://redis.com/blog/multiplexing-explained/) client\n  * Pooled client manager (based on [bb8](https://docs.rs/bb8/latest/bb8/))\n* Automatic command batching\n* Advanced reconnection \u0026 retry strategy\n* [Pipelining](https://redis.io/docs/latest/develop/using-commands/pipelining/) support\n* Configuration with Redis URL or dedicated builder\n* [TLS](https://redis.io/docs/latest/operate/oss_and_stack/management/security/encryption/) support\n* [Transaction](https://redis.io/docs/latest/develop/using-commands/transactions/) support\n* [Pub/sub](https://redis.io/docs/latest/develop/pubsub/) support\n* [Sentinel](https://redis.io/docs/latest/operate/oss_and_stack/management/sentinel/) support\n* [LUA Scripts/Functions](hhttps://redis.io/docs/latest/develop/programmability/) support\n* [Cluster](https://redis.io/docs/latest/operate/oss_and_stack/management/scaling/) support (minimus supported Redis version is 6)\n* [Client-side caching](https://redis.io/docs/latest/develop/reference/client-side-caching/) support\n\n# Protocol Compatibility\n\nRustis uses the RESP3 protocol **exclusively**.\n\nThe `HELLO 3` command is automatically sent when establishing a connection.  \nTherefore, your Redis server **must support RESP3** (Redis ≥6.0+ with RESP3 enabled).\n\nIf you use Redis 5 or older, or your Redis 6+ server still defaults to RESP2,  \n**Rustis will not work.**\n\nTo verify your server supports RESP3:\n```bash\nredis-cli --raw HELLO 3\n```\nIf you see server info (role, version, etc.), you're good to go.\nIf you get an error, upgrade Redis.\n\n# Basic Usage\n\n```rust\nuse rustis::{\n     client::Client, \n     commands::{FlushingMode, ServerCommands, StringCommands},\n     Result,\n};\n\n#[tokio::main]\nasync fn main() -\u003e Result\u003c()\u003e {\n     // Connect the client to a Redis server from its IP and port\n     let client = Client::connect(\"127.0.0.1:6379\").await?;\n \n     // Flush all existing data in Redis\n     client.flushdb(FlushingMode::Sync).await?;\n\n     // sends the command SET to Redis. This command is defined in the StringCommands trait\n     client.set(\"key\", \"value\").await?;\n \n     // sends the command GET to Redis. This command is defined in the StringCommands trait\n     let value: String = client.get(\"key\").await?;\n     println!(\"value: {value:?}\");\n\n     Ok(())\n}\n```\n\n# Tests\n\n1. From the `redis` directory, run `docker_up.sh` or `docker_up.cmd`\n2. run `cargo test --features pool,tokio-rustls,json,client-cache` (Tokio runtime)\n3. run `cargo test --no-default-features --features async-std-runtime,async-std-native-tls,json,client-cache` (async-std runtime)\n4. run `cargo fmt --all -- --check`\n\n# Benchmarks\n\n1. From the `redis` directory, run `docker_up.sh` or `docker_up.cmd`\n2. run `cargo bench`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdahomey-technologies%2Frustis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdahomey-technologies%2Frustis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdahomey-technologies%2Frustis/lists"}