hau

0.3.0 • Public • Published

Hourly Active User

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/

Installing and Getting Started

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);

Tracking

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);

Reporting

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);
});

Release History

  • 0.0.1
  • 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

Package Sidebar

Install

npm i hau

Weekly Downloads

1

Version

0.3.0

License

MIT

Unpacked Size

21.8 kB

Total Files

10

Last publish

Collaborators

  • malcolmocean