{"id":15010359,"url":"https://github.com/eerohele/rad","last_synced_at":"2025-04-09T18:34:07.239Z","repository":{"id":240930383,"uuid":"781530778","full_name":"eerohele/rad","owner":"eerohele","description":"A small, zero-dependency Redis client for Clojure.","archived":false,"fork":false,"pushed_at":"2024-12-28T11:18:10.000Z","size":172,"stargazers_count":30,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-05T10:41:51.471Z","etag":null,"topics":["clojure","redis"],"latest_commit_sha":null,"homepage":"","language":"Clojure","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/eerohele.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":"2024-04-03T14:59:20.000Z","updated_at":"2025-01-17T14:35:36.000Z","dependencies_parsed_at":"2024-05-21T13:56:50.718Z","dependency_job_id":"0aaab165-ece0-443f-ad70-ca6d1a4a1a92","html_url":"https://github.com/eerohele/rad","commit_stats":null,"previous_names":["eerohele/rad"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eerohele%2Frad","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eerohele%2Frad/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eerohele%2Frad/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eerohele%2Frad/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eerohele","download_url":"https://codeload.github.com/eerohele/rad/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248088209,"owners_count":21045665,"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":["clojure","redis"],"created_at":"2024-09-24T19:33:41.472Z","updated_at":"2025-04-09T18:34:07.213Z","avatar_url":"https://github.com/eerohele.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rād [![Clojars Project](https://img.shields.io/clojars/v/me.flowthing/rad.svg)](https://clojars.org/me.flowthing/rad) [![0 dependencies!](https://0dependencies.dev/0dependencies.svg)](https://0dependencies.dev)\n\nRād «ᚱ» is a small, zero-dependency Redis client for Clojure (JDK 21+).\n\n\u003e [!CAUTION]\n\u003e Rad is alpha-quality software. While the API proper (the `rad.api` namespace) is unlikely to change, the logging implementation (`rad.log`) very well might.\n\n## Quick start\n\n```clojure\nuser=\u003e (require '[rad.api :as rad])\nnil\n;; Connect to default Redis host (\"localhost\") and port (6379).\nuser=\u003e (def redis (rad/client :decode rad/bytes-\u003estr))\n#'user/redis\n;; Send a command pipeline.\nuser=\u003e @(redis [:ECHO \"Hello\"] [:ECHO \"world!\"])\n[\"Hello\", \"world!\"]\n;; Close the connection.\nuser=\u003e (redis)\nnil\n```\n\n## Features\n\n- No runtime dependencies\n- Minimal API\n- RESP3 support\n- [Pipelining](https://redis.io/docs/latest/develop/use/pipelining/) support\n- Supports every version of Redis that supports RESP3\n- One connection per client (including [pub/sub](https://redis.io/docs/latest/develop/interact/pubsub/))\n- Automatically reconnects when disconnected\n- [Reasonable sequential throughput, pretty good concurrent throughput](https://github.com/eerohele/rad/actions/workflows/bench.yml) over a single connection\n\n## Documentation\n\nSee [documentation](doc/INDEX.md) and [API documentation](https://eerohele.github.io/rad).\n\nIf you want to know how Rad works, see also the [architecture documentation](doc/ARCHITECTURE.md).\n\n## Examples\n\nSee [`examples`](examples).\n\n## Non-goals\n\n- Connection pooling\n\n## Limitations\n\n- RESP3-only\n- No automatic encoding of Clojure values into bytes\n- No automatic decoding of bytes into Clojure values\n- No [TLS](https://redis.io/docs/latest/operate/oss_and_stack/management/security/encryption/) support\n- No [Redis Cluster](https://redis.io/docs/latest/operate/oss_and_stack/management/scaling/) support\n- Does not support the `MONITOR` command\n\n## Contributing\n\nIf you have ideas on how to improve Rad's performance (sequential performance in particular) or the performance of the [RESP3 implementation](https://github.com/eerohele/rad/blob/main/src/rad/resp.clj) (apart from writing it in Java), I'd be interested in hearing about them.\n\nOther than that, I'm not accepting code contributions at this time. If you have improvement ideas, bug reports, or feature requests, [file an issue](https://github.com/eerohele/rad/issues).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feerohele%2Frad","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feerohele%2Frad","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feerohele%2Frad/lists"}