redux v1.1.0

0

Monthly downloads

0th

Percentile

R Bindings to 'hiredis'

A 'hiredis' wrapper that includes support for transactions, pipelining, blocking subscription, serialisation of all keys and values, 'Redis' error handling with R errors. Includes an automatically generated 'R6' interface to the full 'hiredis' 'API'. Generated functions are faithful to the 'hiredis' documentation while attempting to match R's argument semantics. Serialisation must be explicitly done by the user, but both binary and text-mode serialisation is supported.

Readme

redux

Project Status: Active - The project has reached a stable, usable state and is being actively developed. Build Status AppVeyor Build Status codecov.io

redux provides an inteface 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.

As well as supporting Redis commands, redux supports:

  • pipelineing: execute more than one command in a single Redis roundtrip, which can greatly increase performance, especially over high-latency connections.
  • socket connections: can connect to a locally running Redis instance over a unix socket (if Redis is configured to do so) for faster communication.
  • 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
  • subscriptions: create a simple blocking subscribe client, applying a callback function to every message received.
  • error handling: Every Redis error becomes an R error.

redux also provides a driver for storr, allowing easy exchange of R objects between computers.

Usage

Create a hiredis object:

r <- redux::hiredis()

The hiredis object is a hiredis object with many (many methods), each corresponding to a different Redis command.

r
## <redis_api>
##   Redis commands:
##     APPEND: function
##     AUTH: function
##     BGREWRITEAOF: function
##     BGSAVE: function
##     ...
##     ZSCORE: function
##     ZUNIONSTORE: function
##   Other public methods:
##     clone: function
##     command: function
##     config: function
##     initialize: function
##     pipeline: function
##     reconnect: function
##     subscribe: function
##     type: function

All the methods are available from this object; for example to set "foo" to "bar", use:

r$SET("foo", "bar")

See the package vignette for more information (vignette("redux")) or https://richfitz.github.io/redux/vignettes/redux.html

Testing

To use the test suite, please set the environment variables

  • NOT_CRAN=true
  • REDUX_TEST_USE_REDIS=true
  • REDUX_TEST_USE_REDIS_ISOLATED=true

The 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.

Installation

Install from CRAN with

install.packages("redux")

or install the development version with

remotes::install_github("richfitz/redux", upgrade = FALSE)

See also

There is considerable prior work in this space:

  • rredis, the original R Redis client
  • RcppRedis, Dirk Eddelbuettel's R Redis client, which greatly influenced the design decisions here
  • hiredis-rb, the Ruby Redis client that inspired the subscribe and pipeline support here.
  • rrlite, an almost identical interface to rlite, a serverless-zero configuration database with an identical interface to Redis

License

GPL-2 © Rich FitzJohn.

Functions in redux

Name Description
object_to_string Convert R objects to/from strings
parse_redis_url Parse Redis URL
from_redis_hash Convert Redis hash
redis_info Parse Redis INFO
redis_connection Create a Redis connection
redis_config Redis configuration
hiredis Interface to Redis
redis_scripts Load Lua scripts into Redis
redis_time Get time from Redis
storr_redis_api Redis object cache driver
redis_api Create a Redis API object
scan_apply Iterate over keys using SCAN
redis_multi Helper for Redis MULTI
redis Redis commands object
No Results!

Vignettes of redux

Name
redux.Rmd
No Results!

Last month downloads

Details

SystemRequirements hiredis
License GPL-2
LazyData true
URL https://github.com/richfitz/redux
BugReports https://github.com/richfitz/redux/issues
VignetteBuilder knitr
RoxygenNote 6.0.1
Encoding UTF-8
NeedsCompilation yes
Packaged 2018-05-29 15:23:52 UTC; rich
Repository CRAN
Date/Publication 2018-05-31 20:38:07 UTC

Include our badge in your README

[![Rdoc](http://www.rdocumentation.org/badges/version/redux)](http://www.rdocumentation.org/packages/redux)