我应该构建一个Web应用程序来跟踪用户活动,我有一些问题需要了解如何使用Redis跟踪在线用户活动,以及Mongo存储该数据以进行分析。
我可以只使用Mongo,但我担心我有很多调用来跟踪用户正在做的事情。所以我想在Redis上写下在线数据,并在它们变老时放入Mongo。当数据对于在线无意义时,我的意思是老了。
我想到了Mongo和Redis之间的一个网关,所以可能是RabbitMQ?。
有什么建议吗? 我应该只使用Mongo?
我写的代码的一个例子:
前端(Angular application / Socket.io):
setInterval(function () {
socket.emit('visitor-data', {
referringSite: document.referrer,
browser: navigator.sayswho,
os: navigator.platform,
page: location.pathname
});
}, 3000);
后端(Node.js / Socket.io)
socket.on('visitor-data', function(data) {
visitorsData[socket.id] = data;
);
VisitorsData只是一个数组,但我应该构建一个可伸缩的应用程序,所以我不能以这种方式存储数据。
然后我有一些这样的函数来计算数据:
function computeRefererCounts() {
var referrerCounts = {};
for (var key in visitorsData) {
var referringSite = visitorsData[key].referringSite || '(direct)';
if (referringSite in referrerCounts) {
referrerCounts[referringSite]++;
} else {
referrerCounts[referringSite] = 1;
}
}
return referrerCounts;
}
只是一些数字: 我估计了类似的东西: