我在node.js遇到redis问题。我使用 socket.io 与 redis (没有pub-sub模型,即单连接)。我的redis操作需要花费大量时间来执行。每当我的套接字连接数增加时,redis命令的时间会呈指数级增长。有时它会超过10秒。 我正在努力解决这个问题,并且对node.js来说是新手。
我怎么知道Redis需要时间。我在调用之前和调用redis library(microbenchmark)
set.seed(1)
cp <- t(replicate(1e+6, sample(9)))
B <- t(replicate(9, sample(9)-1))
f989=function() apply(mapply(seq, seq(ncol(cp)-1), 2:ncol(cp)), 2, function(i) B[cp[,i]])
fikop=function() sapply(1:(ncol(cp) - 1), function(ii){
B[cp[,ii] + nrow(B) * (cp[,ii+1] - 1)]
})
all(f989()==fikop())
# [1] TRUE
microbenchmark(f989(), fikop())
# Unit: milliseconds
# expr min lq mean median uq max neval
# f989() 157.4025 165.0029 190.5306 200.8816 204.6907 239.720 100
# fikop() 212.2289 255.1914 259.2568 261.1330 266.3382 310.974 100
方法之后应用了控制台日志。
P.S。 :我们使用python脚本运行相同的测试,结果是可以接受的。我不知道为什么node.js会出现这个问题。
已经尝试过:https://redislabs.com/blog/redis-running-slowly-heres-what-you-can-do-about-it/
任何帮助都是值得赞赏的人!
更新 - 添加了代码段。我正在尝试使用socket.io创建一个基本的测验应用程序。该流程是从数据库中获取所有问题并将其缓存在Redis中。然后在整个问题集中,我随机挑选了5个问题并在Redis中设置。
setex