Substreams
Redis CLI Node.js
substreams-sink-redis
is a tool that allows developers to pipe data extracted from a blockchain to a Redis KV store.
- MacOS
- Linux
- Windows
Install globally via npm
$ npm install -g substreams-sink-redis
Run
$ substreams-sink-redis run --help
Usage: substreams-sink-redis run [options]
Substreams Redis sink module
Options:
-e --substreams-endpoint <string> Substreams gRPC endpoint to stream data from (env: SUBSTREAMS_ENDPOINT)
--manifest <string> URL of Substreams package (env: MANIFEST)
--module-name <string> Name of the output module (declared in the manifest) (env: MODULE_NAME)
-s --start-block <int> Start block to stream from (defaults to -1, which means the initialBlock of the first module you are streaming) (default: "-1", env: START_BLOCK)
-t --stop-block <int> Stop block to end stream at, inclusively (env: STOP_BLOCK)
-p, --params <string...> Set a params for parameterizable modules. Can be specified multiple times. (ex: -p module1=valA -p module2=valX&valY) (default: [], env: PARAMS)
--substreams-api-token <string> API token for the substream endpoint or API key if '--auth-issue-url' is specified (default: "", env: SUBSTREAMS_API_TOKEN)
--auth-issue-url <string> URL used to issue a token (default: "https://auth.pinax.network/v1/auth/issue", env: AUTH_ISSUE_URL)
--delay-before-start <int> Delay (ms) before starting Substreams (default: 0, env: DELAY_BEFORE_START)
--cursor-path <string> File path or URL to cursor lock file (default: "cursor.lock", env: CURSOR_PATH)
--disable-production-mode Disable production mode, allows debugging modules logs, stops high-speed parallel processing (default: false, env: DISABLE_PRODUCTION_MODE)
--restart-inactivity-seconds <int> If set, the sink will restart when inactive for over a certain amount of seconds (default: 300, env: RESTART_INACTIVITY_SECONDS)
--hostname <string> The process will listen on this hostname for any HTTP and Prometheus metrics requests (default: "localhost", env: HOSTNAME)
--port <int> The process will listen on this port for any HTTP and Prometheus metrics requests (default: 9102, env: PORT)
--metrics-labels [string...] To apply generic labels to all default metrics (ex: --labels foo=bar) (default: {}, env: METRICS_LABELS)
--collect-default-metrics <boolean> Collect default metrics (default: false, env: COLLECT_DEFAULT_METRICS)
--headers [string...] Set headers that will be sent on every requests (ex: --headers X-HEADER=headerA) (default: [], env: HEADERS)
--verbose Enable verbose logging (default: false, env: VERBOSE)
--kv-url <string> KV_URL (default: "redis://127.0.0.1:6379", env: KV_URL)
--kv-prefix <string> Prefix to add to the key in the KV database. (env: KV_PREFIX)
--kv-retention-period <number> Is maximum retention period, compared to the maximum existing timestamp, in milliseconds. (default: 604800000, env: KV_RETENTION_PERIOD)
--kv-bucket-duration <number> Is duration of each timeseries bucket, in milliseconds. (default: 86400000, env: KV_BUCKET_DURATION)
--kv-create-rules Create timeseries bucket and rules. (default: false, env: KV_CREATE_RULES)
-h, --help display help for command
The substreams-sink-redis
also exposes an API that can be used to interact with the Redis KV store.
Uses the Redis GET
command to retrieve the value of a key.
key
: The key to retrieve the value from.
/GET?key=foo
Uses the Redis INFO
command to retrieve information and statistics about the Redis server.
Uses the Redis TS.RANGE
command to retrieve a range of values from a timeseries.
key
: The key to retrieve the timeseries from.fromTimestamp
: Get samples starting from this timestamp (default is-
).toTimestamp
: Get samples up to this timestamp (default is+
).aggregationType
: The aggregation type to use. Can be one ofAVG
,SUM
,MIN
,MAX
,RANGE
,COUNT
,FIRST
,LAST
,STD.P
,STD.S
,VAR.P
,VAR.S
,RATE
,RATE.SECOND
,RATE.MINUTE
,RATE.HOUR
,RATE.DAY
(default isSUM
).bucketDuration
: The bucket duration in milliseconds (default is 1).
/TS/RANGE?key=TIMESERIES&fromTimestamp=1602618850000&toTimestamp=1602618426000&aggregationType=SUM&bucketDuration=123
[
{
"timestamp": 1602618850000,
"value": 1086139
},
{
"timestamp": 1602618850123,
"value": 1078466
},
{
"timestamp": 1602618850246,
"value": 1139608
},
...
]
Uses the Redis TS.INFO
command to retrieve information and statistics about the Redis TimeSeries.
key
: The key to retrieve the timeseries info from.
/TS/INFO?key=foo
- Consume
*.spkg
from:- Load URL or IPFS
- Read from
*.spkg
local filesystem - Read from
substreams.yaml
local filesystem
- Handle
cursor
restart
- set
- mset