草庐IT

nodejs-expressjs

全部标签

node.js - Redis 在 nodejs 中太慢?

在nodejs上使用connect-redis太慢了。当我将connect-redis连接到应用程序时性能下降constRedisStore=require('connect-redis')(session);...app1.use(session({store:newRedisStore(config.redisStore),secret:'asd',resave:false,rolling:true,saveUninitialized:false,cookie:{maxAge:config.redisStore.maxAge,httpOnly:false,},}));如果我在apa

express - 跨多服务器集群跟踪 expressjs 中连接的客户端数量

我正在使用SSE并且需要跟踪集群中的事件连接数。在每个实例中我都可以做server.getConnections(function(err,count){if(err)throwerr;console.log(count);});使用此方法并使用Redis在集群中保持准确总数的最佳方法是什么? 最佳答案 不知道您设置的所有细节,我会按如下方式处理:假设您的所有集群实例都与同一个Redis实例通信,在Redis存储中设置一个名为connection_count的键:SETconnection_count0。在每个集群节点上处理serv

performance - NodeJS 对象列表或保存在 Redis 中的列表?

我正在开发一个包含在线用户列表的应用程序。现在我在nodejs中定义了全局变量varonlineUsers={}其中包含用户对象varuserObj={username:'johndoe',fullname:'JohnDoe',user_id:234242}在线。我的问题是,考虑到将有数百万在线用户的潜在情况,将在线用户对象放在Redis中还是保持原样对性能会更好? 最佳答案 当您的潜在场景是数百万并发在线用户时,您将需要运行多个网络服务器来处理该负载。每个网络服务器都需要记录谁在共享数据存储中登录和注销,在您的例子中是Redis。

node.js - 使用expressjs/nodejs store session登录到redis

我正在使用express/nodejs存储登录到redis的session,代码如下:app.use(express.session({key:'myappname.sid',secret:"SomeSecret!!!",store:newRedisStore({host:'127.0.0.1',,port:6379,}),cookie:{maxAge:604800//oneweek}}));我通过以下方式检查登录状态:functionensureAuthenticated(req,res,next){if(req.isAuthenticated()){returnnext();}re

javascript - 从nodejs中的第二个函数获取结果

写nodejs脚本,遇到下一个问题。我如何从clientSession函数中获取结果varUser=function(){}User.prototype.get_current_user=function(cookie){varcookieManager=newco.cookie(cookie);varclientSession=newredis.createClient();varrespons=clientSession.get("sessions/"+cookieManager.get("PHPSESSID"),function(error,result){try{if(resu

node.js - 有什么方法可以减少在 nodejs 中获取数据和缓存的并发请求量?

我有一个Express应用程序,它需要非常低的响应率~我们计划从数据库中获取一段数据,如果在Redis中找到,则返回数据,如果没有,则触发请求并将其保存到Redis,以便下一个请求可以从Redis中获取它。我正在运行一些测试,想知道是否有办法减少数据库获取请求的数量?例如,目前我们的应用程序每个盒子有300req/s。我们有六个盒子在AWS上运行。如果那条数据第一次在Redis中不可用,可能会有大约500个请求试图从数据库中获取数据并将其缓存在Redis中。我们正在努力减少这个数字。不确定Node.js或Redis中是否有处理该问题的方法。这是我正在测试的代码。client.getAs

node.js - 在 nodejs 上循环 redis 返回的 promise

我正在尝试在for循环中使用promise。我觉得是我第一次使用Promise.all的时候了,但我似乎无法让它工作。这是我目前所拥有的:redis.keys('en:230:*').then(function(result){//result=['en:230.1','en:230.2','en:230.5','en:230.10','en:230.3','en:230.75']for(vark=0;k我的目标是计算所有“结果”排序集并将每个结果放入另一个名为en:230:top的排序集中这将包含分数的计数结果和值的1,2,5,10,3,75。目前,我只是想遍历所有“结果”并计数。谁

javascript - 如何在 NodeJs 中将 Redis 值检索到数组中

我想从我的redis中获取所有值并将其存储到nodejs中的数组中这是我现在的代码,redisClient.keys("Serial*",function(err,keys){keys.forEach(function(key,i){redisClient.hgetall(key,function(err,currencyData){console.log(currencyData);})});});它允许我将所有值输出到控制台但我需要使用这些值 最佳答案 假设您需要数组中的currencyData-functiongetAllCu

javascript - 跨 nodejs 应用程序的多个实例共享相同的 session

我有一个用nodejs和express编写的应用程序,我们使用passportjs进行身份验证。我正在寻找的是跨多个nodejs实例共享session。所以有一个应用程序将在不同的端口上运行,即实例。Redis有没有更好的方法?如果你们中的任何人实现了类似的东西,请告诉我。谢谢 最佳答案 任何快速存储,Redis是最好的,但也可以是memcache,如果你想支付一些I/O,甚至是mysql。另一种不推荐的解决方法是将负载平衡器/NGINX配置为具有粘性session,因此同一用户将始终访问同一服务器。这将是解决它的最便宜的方法,但我

node.js - 带有 kue 的 NodeJS 应用程序从不从 0 开始

我有一个使用kue执行长时间运行操作的nodeJSapi。虽然,一旦我关闭应用程序并重新启动它,所有以前的作业仍然存在。移除它们不会将Redis计数器重置为0。仅从任何状态移除它们:事件、非事件、失败、完成或延迟。这是我的kue声明:varkue=require('kue'),queue=kue.createQueue()每次调用某个api端点时,我都会执行以下操作://enqueueanewjobprocessfordataanalysisvardaJob=queue.create('job1',{title:'jobtobecompleted'}).removeOnComplete