Skip to content

malcolmocean/hau

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Track user actions quickly in Redis with Node.js

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%