npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

time-series-store

v0.1.0

Published

like graphite but for redis

Downloads

1

Readme

redis time series data manager

  • name variable is the full name of the key to use with redis
  • timeslots variable is the length of the array
  • timeslotLength variable is the difference between the beginning times of the slots, or the length of the slots themselves
  • data is dropped from the end as new data comes in

The values in this array are of the format [ "time", "value" ]

API

Series.setClient(redis)

Where redis is a connected instance of redis.

new Series(schema [, options ])

  1. check for the series in the database

  2. if a series is found verify the slots match the number in the schema else initialize a new series with the schema

  3. run series.cleanup()

.incr(timestamp [, value] [, callback])

  • incrmeent series slot

example:


series.incr(1339644364453, 2, function (err) { })
series.incr(1339644364453, function (err) { })
series.incr(1339644364453, 2)
series.incr(1339644364453)
  1. Check to make sure the value is a number and check to make sure the timestamp is valid.

  2. Use value provided or default from schema

  3. Callback error if timestamp is not a valid timestamp and determine which slot to add the value to. If there isnt a valid place to add the value callback an error (e.g. too far in the past)

4a. if the timestamp is in the future then create new time slots to bring the series data up to the provided time -- this usually creates 1 additional field but with less active series this may create many new time slots

4b. Increment the slot by the value. Note that the timestamp can be any timestamp within the currently recorded length of time, as the correct slot will be determined based on the series schema.

.getAll(callback)

  • return all the series data

example:


series.getAll(function (err, series) {
  // do something with series
  // ...

})

.setValue(timestamp, value [, callback])

  • set a slot to a specific value
  • callback the old slot

example:


series.setValue(1339644364453, 12, function (err, oldSlot) { })
series.setValue(1339644364453, 12)
  1. Identifies the slot to set. Note that like incr the timestamp can be any timestamp and the correct slot will be determined from the provided value.

  2. Set the slot to the new value