Write to a Redis sorted set

In the example below, data is captured from the source table named invoice and is written to a Redis sorted set. The connection is an optional parameter that refers to the corresponding connection name defined in config.yaml. When you specify the data_type parameter for the job, it overrides the system-wide setting target_data_type defined in config.yaml.

When writing to sorted sets, you must provide two additional arguments, member and score. These specify the field names that will be used as a member and a score to add an element to a sorted set. In this case, the result will be a Redis sorted set named invoices:sorted based on the key expression and with an expiration of 100 seconds for each set member. If you don't supply an expire parameter, the keys will never expire.

source:
  server_name: chinook
  schema: public
  table: invoice
output:
  - uses: redis.write
    with:
      connection: target
      data_type: sorted_set
      key:
        expression: "`invoices:sorted`"
        language: jmespath
      args:
        score: Total
        member: InvoiceId 
      expire: 100      

Since sorted sets in Redis are inherently sorted, you can easily get the top N invoices by total invoice amount using the command below (the range 0..9 gets the top 10 invoices):

ZREVRANGE invoices:sorted 0 9 WITHSCORES
RATE THIS PAGE
Back to top ↑