# rush Package website: [release](https://rush.mlr-org.com/) \| [dev](https://rush.mlr-org.com/dev/) *rush* is an R package for asynchronous and decentralized optimization. It uses a database-centric architecture in which workers communicate through a shared [`Redis`](https://redis.io/) database. To support high-throughput workloads, rush combines sub-millisecond per-task overhead with caching strategies that reduce database operations. The package integrates with the `mlr3` ecosystem and serves as the backend for asynchronous optimization algorithms in [`bbotk`](https://CRAN.R-project.org/package=bbotk) and [`mlr3tuning`](https://CRAN.R-project.org/package=mlr3tuning). # Features - Database-centric architecture for decentralized optimization without a central controller. - Asynchronous communication between workers using [`Redis`](https://redis.io/). - Sub-millisecond per-task overhead for high-throughput workloads. - Efficient caching mechanism that minimizes database read/write operations. - Task queue support for centralized tasks distribution when needed. - Fast data transformation from Redis to [`data.table`](https://CRAN.R-project.org/package=data.table). - Scales to large remote worker networks via the [`mirai`](https://CRAN.R-project.org/package=mirai) package. - Worker logging directly into the Redis database using [`lgr`](https://CRAN.R-project.org/package=lgr). - Minimal dependencies for lightweight integration. ## Install Install the latest release from CRAN. ``` r install.packages("rush") ``` Install the development version from GitHub. ``` r pak::pak("mlr-org/rush") ``` And install [Redis](https://redis.io/docs/latest/operate/oss_and_stack/install/install-stack/). ## Test with Redis To test the package, set the `RUSH_TEST_USE_REDIS` environment variable to `true`. The test suite deletes the Redis database before execution, so never run it against a production server. ``` r Sys.setenv(RUSH_TEST_USE_REDIS = "true") ``` # Citation If you use rush, please cite our paper. > Becker M, Bischl B (2026). “rush: Scalable Asynchronous Distributed > Computing via Shared State in R.” *arXiv preprint arXiv:2606.21430*. > . ``` R @misc{becker2026rush, title = {rush: {{Scalable Asynchronous Distributed Computing}} via {{Shared State}} in {{R}}}, shorttitle = {rush}, author = {Becker, Marc and Bischl, Bernd}, year = 2026, month = jun, number = {arXiv:2606.21430}, eprint = {2606.21430}, primaryclass = {cs.DC}, publisher = {arXiv}, doi = {10.48550/arXiv.2606.21430}, archiveprefix = {arXiv} } ``` # Related Work - [future](https://CRAN.R-project.org/package=future) - [mirai](https://CRAN.R-project.org/package=mirai) - [batchtools](https://CRAN.R-project.org/package=batchtools) - [crew](https://CRAN.R-project.org/package=crew) - [rrq](https://github.com/mrc-ide/rrq) # Package index ## Manager - [`Rush`](https://rush.mlr-org.com/reference/Rush.md) : Rush - [`rsh()`](https://rush.mlr-org.com/reference/rsh.md) : Syntactic Sugar for Rush Manager Construction ## Worker - [`RushWorker`](https://rush.mlr-org.com/reference/RushWorker.md) : Rush Worker ## Plan - [`rush_plan()`](https://rush.mlr-org.com/reference/rush_plan.md) : Create Rush Plan - [`rush_available()`](https://rush.mlr-org.com/reference/rush_available.md) : Rush Available - [`rush_config()`](https://rush.mlr-org.com/reference/rush_config.md) : Get Rush Config - [`remove_rush_plan()`](https://rush.mlr-org.com/reference/remove_rush_plan.md) : Remove Rush Plan ## Worker Loop - [`start_worker()`](https://rush.mlr-org.com/reference/start_worker.md) : Start a worker - [`AppenderRedis`](https://rush.mlr-org.com/reference/AppenderRedis.md) : Log to Redis Database ## Misc - [`get_hostname()`](https://rush.mlr-org.com/reference/get_hostname.md) : Get the computer name of the current host - [`rush`](https://rush.mlr-org.com/reference/rush-package.md) [`rush-package`](https://rush.mlr-org.com/reference/rush-package.md) : rush: Rapid Asynchronous and Distributed Computing - [`store_large_object()`](https://rush.mlr-org.com/reference/store_large_object.md) : Store Large Objects # Articles ### Get Started - [rush - Quick Reference](https://rush.mlr-org.com/articles/rush.md): - [rush - Asynchronous and Distributed Computing](https://rush.mlr-org.com/articles/tutorial.md): - [Rush Manager](https://rush.mlr-org.com/articles/manager.md): - [Error Handling and Debugging](https://rush.mlr-org.com/articles/error_handling.md):