{"id":14066872,"url":"https://github.com/richfitz/redux","last_synced_at":"2025-10-06T16:41:08.373Z","repository":{"id":39648832,"uuid":"45845155","full_name":"richfitz/redux","owner":"richfitz","description":":telephone_receiver::computer: Redis client for R","archived":false,"fork":false,"pushed_at":"2025-09-01T14:13:01.000Z","size":1587,"stargazers_count":95,"open_issues_count":17,"forks_count":17,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-09-08T17:01:00.793Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://richfitz.github.io/redux","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/richfitz.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS.md","contributing":null,"funding":null,"license":null,"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,"zenodo":null}},"created_at":"2015-11-09T14:59:43.000Z","updated_at":"2025-09-01T14:10:15.000Z","dependencies_parsed_at":"2024-11-16T20:02:06.064Z","dependency_job_id":"e204be25-afe5-42d9-bd3c-3f46733b52e4","html_url":"https://github.com/richfitz/redux","commit_stats":{"total_commits":211,"total_committers":6,"mean_commits":"35.166666666666664","dds":"0.28436018957345977","last_synced_commit":"0bd967ced3795a66f2c93ebc8d6eb9fe3acd0117"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/richfitz/redux","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richfitz%2Fredux","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richfitz%2Fredux/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richfitz%2Fredux/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richfitz%2Fredux/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/richfitz","download_url":"https://codeload.github.com/richfitz/redux/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richfitz%2Fredux/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278646399,"owners_count":26021510,"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","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2024-08-13T07:05:18.507Z","updated_at":"2025-10-06T16:41:08.368Z","avatar_url":"https://github.com/richfitz.png","language":"R","funding_links":[],"categories":["R","Database Management"],"sub_categories":[],"readme":"# redux\n\n\u003c!-- badges: start --\u003e\n[![Project Status: Active - The project has reached a stable, usable state and is being actively developed.](http://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/)\n[![R-CMD-check](https://github.com/richfitz/redux/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/richfitz/redux/actions/workflows/R-CMD-check.yaml)\n[![Codecov test coverage](https://codecov.io/gh/richfitz/redux/graph/badge.svg)](https://app.codecov.io/gh/richfitz/redux)\n[![](https://www.r-pkg.org/badges/version/redux)](https://cran.r-project.org/package=redux)\n\u003c!-- badges: end --\u003e\n\n`redux` provides an interface to Redis.  Two interfaces are provided; a low level interface (allowing execution of arbitrary Redis commands with almost no interface) and a high-level interface with an API that matches all of the several hundred Redis commands.\n\nAs well as supporting Redis commands, `redux` supports:\n\n* **pipelineing**: execute more than one command in a single Redis roundtrip, which can greatly increase performance, especially over high-latency connections.\n* **socket connections**: can connect to a locally running Redis instance over a unix socket (if Redis is configured to do so) for faster communication.\n* **flexible serialisation**: serialise any part of a Redis command, including keys and fields.  Binary serialisation is supported via `object_to_bin` / `bin_to_object`, which are thin wrappers around `serialize` / `unserialize`\n* **subscriptions**: create a simple blocking subscribe client, applying a callback function to every message received.\n* **error handling**: Every Redis error becomes an  R error.\n\n`redux` also provides a driver for [`storr`](https://cran.r-project.org/package=storr), allowing easy exchange of R objects between computers.\n\n## Usage\n\nCreate a hiredis object:\n\n```r\nr \u003c- redux::hiredis()\n```\n\nThe hiredis object is a hiredis object with many (*many* methods), each corresponding to a different Redis command.\n\n```r\nr\n## \u003credis_api\u003e\n##   Redis commands:\n##     APPEND: function\n##     AUTH: function\n##     BGREWRITEAOF: function\n##     BGSAVE: function\n##     ...\n##     ZSCORE: function\n##     ZUNIONSTORE: function\n##   Other public methods:\n##     clone: function\n##     command: function\n##     config: function\n##     initialize: function\n##     pipeline: function\n##     reconnect: function\n##     subscribe: function\n##     type: function\n```\n\nAll the methods are available from this object; for example to set \"foo\" to \"bar\", use:\n\n```\nr$SET(\"foo\", \"bar\")\n```\n\nSee the package vignette for more information (`vignette(\"redux\")`) or https://richfitz.github.io/redux/articles/redux.html\n\n## Testing\n\nTo use the test suite, please set the environment variables\n\n- `NOT_CRAN=true`\n- `REDUX_TEST_USE_REDIS=true`\n- `REDUX_TEST_ISOLATED=true`\n\nThe first two opt in to using redis _at all_, and the third activates commands that may be destructive or undesirable to use on a production server.\n\n## Installation\n\nInstall from CRAN with\n\n```r\ninstall.packages(\"redux\")\n```\n\nor install the development version with\n\n```r\nremotes::install_github(\"richfitz/redux\", upgrade = FALSE)\n```\n\n## See also\n\nThere is considerable prior work in this space:\n\n* [`rredis`](https://cran.r-project.org/package=rredis), the original R Redis client\n* [`RcppRedis`](https://cran.r-project.org/package=RcppRedis), Dirk Eddelbuettel's R Redis client, which greatly influenced the design decisions here\n* [`hiredis-rb`](https://github.com/redis/hiredis-rb), the _Ruby_ Redis client that inspired the subscribe and pipeline support here.\n* [`rrlite`](https://github.com/ropensci-archive/rrlite), an almost identical interface to [`rlite`](https://github.com/seppo0010/rlite), a serverless-zero configuration database with an identical interface to Redis\n\n## License\n\nGPL-2 © [Rich FitzJohn](https://github.com/richfitz/redux).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichfitz%2Fredux","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frichfitz%2Fredux","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichfitz%2Fredux/lists"}