like graphite but for redis

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" ]

Where redis is a connected instance of redis.

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

  • incrmeent series slot


series.incr(1339644364453, 2, function (err) { })
series.incr(1339644364453, function (err) { })
series.incr(1339644364453, 2)
  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.

  • return all the series data


series.getAll(function (errseries) {
  // do something with series 
  // ... 
  • set a slot to a specific value
  • callback the old slot


series.setValue(1339644364453, 12, function (erroldSlot) { })
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