time-series-store

like graphite but for redis

npm install time-series-store
4 downloads in the last month

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

npm loves you