hau
Version:
Easily track hourly daily, weekly, and monthly active users with Redis.
109 lines (78 loc) • 3.09 kB
Markdown
The `hau` module allows you to quickly track hourly, daily, weekly, and monthly active users in Redis.
Hourly? Yeah, [hourly](https://medium.com/@anamitra/the-shape-of-the-curve-5b869a38684a).
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](http://redis.io) instance running.
```bash
npm install hau
```
Once `hau` is installed we need a client:
```js
var hau = require('hau');
var activity = hau.createClient(REDIS_PORT, REDIS_HOST, REDIS_OPTIONS);
```
Tracking is a very simple operation:
```js
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.
You may also undo a tracked action for a user with `untrack`:
```js
activity.untrack(10, 'commented');
activity.untrack(1);
```
You can fetch the daily, weekly, and monthly active users easily:
```js
// 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();
```
```js
// 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);
});
```
```js
// 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](https://github.com/iancmyers)'s [active-user](https://github.com/iancmyers/active-user) module)
* 0.2.0
* New updates made by [malcolmocean](https://github.com/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