library(redux)
library(RedisAPI)
library(RcppRedis)
library(rredis)
library(rbenchmark)
data(trees)
fit <- lm(log(Volume) ~ log(Girth) + log(Height), data=trees)
rawfit <- rawToChar(serialize(fit,NULL,ascii=TRUE))
redis <- new(Redis)
rredis::redisConnect()
reduxConn <- redux::hiredis()
hiredis <- function() redis$set("fits", fit)
rredis <- function() rredis::redisSet("fits2", fit)
reduxs <- function() reduxConn$SET("fits3", object_to_bin(fit))
res <- benchmark(hiredis(), rredis(), reduxs(), replications=1000)[,1:4]
print(res)
## test replications elapsed relative
## 1 hiredis() 1000 0.093 1.069
## 3 reduxs() 1000 0.087 1.000
## 2 rredis() 1000 0.494 5.678
all.equal(unserialize(charToRaw(redis$exec("GET fits1"))), fit)
## [1] TRUE
all.equal(rredis::redisGet("fits2"), fit)
## [1] TRUE
all.equal(bin_to_object(reduxConn$GET("fits2")), fit)
## [1] TRUE
if (redisExists("abc1")) redisDelete("abc1")
## [1] "1"
## attr(,"redis string value")
## [1] TRUE
if (redisExists("abc2")) redisDelete("abc2")
## [1] "1"
## attr(,"redis string value")
## [1] TRUE
if (redisExists("abc3")) redisDelete("abc3")
## [1] "1"
## attr(,"redis string value")
## [1] TRUE
abc <- paste0(rep(letters,10),collapse="")
hiredisP<- function() redis$rpush("abc1", abc)
rredisP <- function() rredis::redisRPush("abc2", abc)
reduxP <- function() reduxConn$RPUSH("abc3", object_to_bin(abc))
resP <- benchmark(hiredisP(), rredisP(), reduxP(), replications=100)[,1:4]
print(resP)
## test replications elapsed relative
## 1 hiredisP() 100 0.006 1.50
## 3 reduxP() 100 0.004 1.00
## 2 rredisP() 100 0.043 10.75
hiredisLR <- function() redis$lrange("abc1",0,-1)
rredisLR <- function() redisLRange("abc2",0,-1)
reduxLR <- function() lapply(reduxConn$LRANGE("abc3",0,-1), bin_to_object)
resLR <- benchmark(hiredisLR(), rredisLR(), reduxLR(), replications=100)[,1:4]
print(resLR)
## test replications elapsed relative
## 1 hiredisLR() 100 0.073 2.607
## 3 reduxLR() 100 0.028 1.000
## 2 rredisLR() 100 0.690 24.643
abc1 <- hiredisLR()
abc2 <- rredisLR()
abc3 <- reduxLR()
abcList <- lapply(1:101,function(x) abc)
all.equal(abc1, abcList)
## [1] TRUE
all.equal(abc1, abc2)
## [1] TRUE
all.equal(abc1, abc3)
## [1] TRUE