The hau
module allows you to quickly track hourly, daily, weekly, and monthly active users in Redis.
Hourly? Yeah, hourly.
Check out this article to better understand library implementation: https://blog.getspool.com/2011/11/29/fast-easy-realtime-metrics-using-redis-bitmaps/
You can install the hau
module via npm. You will also need to have a Redis server instance running.
npm install hau
Once hau
is installed we need a client:
var hau = require('hau');
var activity = hau.createClient(REDIS_PORT, REDIS_HOST, REDIS_OPTIONS);
###activity.track(id, [action]);
Tracking is a very simple operation:
activity.track(10, 'commented');
activity.track(1);
Where the id is the id of the user you want to track and the action is the action they performed.
###activity.untrack(id, [action]);
You may also undo a tracked action for a user with untrack
:
activity.untrack(10, 'commented');
activity.untrack(1);
You can fetch the daily, weekly, and monthly active users easily:
###activity.daily([action], [date], callback);
// Fetching the number of users who commented on Nov 21, 2013
activity.daily('commented', '2013-11-21', function (err, num) {
console.log(num);
});
// Fetching the number of daily active users for the current day
activity.daily(function (err, num) {
console.log(num);
});
// Using promises to fetch the number of users who commented on Nov 21, 2013
const { promisify } = require('util');
const activityDaily = promisify(activity.daily);
const daily = await activityDaily('commented', '2013-11-21');
// Using promises to fetch the number of daily active users for the current day
const { promisify } = require('util');
const activityDaily = promisify(activity.daily);
const daily = await activityDaily();
###activity.weekly([action], [date], callback);
// Fetching the number of users who commented the week containing Nov 21, 2013
activity.weekly('commented', '2013-11-21', function (err, num) {
console.log(num);
});
// Fetching the number of daily active users for the current week
activity.weekly(function (err, num) {
console.log(num);
});
###activity.monthly([action], [date], callback);
// Fetching the number of users who commented the month of Nov 2013
activity.monthly('commented', '2013-11', function (err, num) {
console.log(num);
});
// Fetching the number of daily active users for the current month
activity.monthly(function (err, num) {
console.log(num);
});
- 0.0.1
- First release (forked from iancmyers's active-user module)
- 0.2.0
- New updates made by malcolmocean's adding hourly support, and changing the dependency bigint to bignum
- 0.3.0
- Remove dependency on
bignum
, now using BigInt, which is a native JS object
- Remove dependency on