# Redis Sink The sink will publish the result into redis. ## Properties | Property name | Optional | Description | |---------------|----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | addr | false | The addr of the Redis,example: 10.122.48.17:6379 | | password | true | The Redis login password | | db | false | The database of the Redis,example: 0 | | key | false | Select one of the Key, Key and field of Redis data and give priority to field, it is only applicable when keyType is ``single``. | | field | true | This field must exist. For example, if the field attribute is "deviceName" and {"deviceName":"abc"} is received, then the key used to store in redis is "abc". it is only applicable when keyType is ``single``. Note: Do not use a data template to configure this value | | keyType | true | The property that determine the format of data to be stored in redis, can be ``single`` or ``multiple``, and default is ``single``. ``single`` means all data will be save into redis after json marshal as a single value. ``multiple`` means all key-value pair will be saved into redis separately | | dataType | false | The default Redis data type is string. Note that the original key must be deleted after the Redis data type is changed. Otherwise, the modification is invalid. now only support "list" and "string" | | expiration | false | Timeout duration of Redis data. This parameter is valid only for string data in seconds. The default value is -1 | | rowkindField | true | Specify which field represents the action like insert or update. If not specified, all rows are default to insert. | ## Sample usage Below is a sample for selecting temperature greater than 50 degree, and some profiles only for your reference. ### /tmp/redisRule.txt ```json { "id": "redis", "sql": "SELECT * from demo_stream where temperature > 50", "actions": [ { "log": {}, "redis":{ "addr": "10.122.48.17:6379", "password": "123456", "db": 1, "dataType": "string", "expire": "10000", "field": "temperature" } } ] } ``` ### Updatable sample By specifying the `rowkindField` property, the sink can update according the action specified in that field. ```json { "id": "ruleUpdateAlert", "sql":"SELECT * FROM alertStream", "actions":[ { "redis": { "addr": "127.0.0.1:6379", "dataType": "string", "field": "id", "rowkindField": "action", "sendSingle": true } } ] } ``` ### Upsert multiple keys sample By specifying the ``keyType`` property to be ``multiple``, the sink can update multiple keys' corresponding value in redis ```json { "id": "ruleUpdateAlert", "sql":"SELECT * FROM alertStream", "actions":[ { "redis": { "addr": "127.0.0.1:6379", "dataType": "string", "keyType": "multiple", "sendSingle": true } } ] } ``` When result map is the following format, the ``temperature`` and ``humidity`` will be saved into redis separately ```json { "temperature": 40.9, "humidity": 30.9 } ```