node-red-contrib-redis
Version:
Node Red client for Redis with pub/sub, list, lua scripting and other commands support.
838 lines (813 loc) • 38.3 kB
HTML
<script type="text/javascript">;
/*global RED*/
RED.nodes.registerType('redis-config', {
category: 'config',
defaults: {
name: {
value: "Local",
required: true
},
options: {
value: "{}",
required: true,
validate: RED.validators.typedInput("optionsType"),
},
cluster: {
value: false
},
optionsType: { value: "json" }
},
label: function () {
return this.name || "Redis host";
},
oneditprepare: function () {
$("#node-config-input-options").typedInput({
default: 'str',
typeField: "#node-config-input-optionsType",
types: ['str', 'env', 'json', 'jsonata']
});
}
});
</script>
<script type="text/x-red" data-template-name="redis-config">
<div class="form-row">
<label for="node-config-input-name"><i class="fa fa-server"></i> Name</label>
<input type="text" id="node-config-input-name">
</div>
<div class="form-row">
<label for="node-config-input-options"><i class="fa fa-random"></i> Options</label>
<input type="text" id="node-config-input-options">
<input type="hidden" id="node-config-input-optionsType">
</div>
<div class="form-row">
<label for="node-config-input-cluster"> </label>
<input type="checkbox" id="node-config-input-cluster" style="display:inline-block; width:15px; vertical-align:baseline;"> Cluster
</div>
</script>
<script type="text/javascript">
/*global RED*/
RED.nodes.registerType('redis-in', {
category: 'Redis',
inputs: 0,
outputs: 1,
color: "#ffffff",
icon: "redis.png",
paletteLabel: "redis in",
defaults: {
server: {
value: "",
type: "redis-config"
},
command: {
value: "blpop"
},
name: {
value: ""
},
topic: {
value: "",
required: true
},
obj: {
value: true
},
timeout: {
value: 0,
validate: RED.validators.number()
}
},
label: function () {
return this.name || this.topic || "redis in";
}
});
</script>
<script type="text/x-red" data-template-name="redis-in">
<div class="form-row">
<label for="node-input-server"><i class="fa fa-globe"></i> Server</label>
<input type="text" id="node-input-server" placeholder="Server">
</div>
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
<div class="form-row">
<label for="node-input-topic"><i class="icon-tasks"></i> Topic</label>
<input type="text" id="node-input-topic" placeholder="Topic">
</div>
<div class="form-row">
<label for="node-input-command"><i class="fa fa-unlock"></i> Method</label>
<select id="node-input-command">
<option value="blpop" selected>BLPOP</option>
<option value="brpop">BRPOP</option>
<option value="subscribe">SUBSCRIBE</option>
<option value="psubscribe">PSUBSCRIBE</option>
</select>
</div>
<div class="form-row">
<label for="node-input-timeout"><i class="fa fa-clock-o"></i> Timeout</label>
<input type="text" id="node-input-timeout" placeholder="Timeout">
</div>
<div class="form-row">
<label for="node-input-obj"> </label>
<input type="checkbox" id="node-input-obj" style="display:inline-block; width:15px; vertical-align:baseline;"> Parse payload from JSON Object
</div>
</script>
<script type="text/x-red" data-help-name="redis-in">
<p>Redis in</p>
<p>Acts as Subscriber, using BLPOP, SUBSCRIBE or PSUBSCRIBE</p>
<p>The msg.topic is pattern on all methods, separated by spaces.</p>
<p>Note: Only PSUBSCRIBE supports patterns with wildcards.</p>
</script>
<script type="text/javascript">
/*global RED*/
RED.nodes.registerType('redis-out', {
category: 'Redis',
inputs: 1,
outputs: 0,
color: "#ffffff",
icon: "redis.png",
align: "right",
paletteLabel: "redis out",
defaults: {
server: {
value: "",
type: "redis-config"
},
command: {
value: "rpush"
},
name: {
value: ""
},
topic: {
value: ""
},
obj: {
value: true
}
},
label: function () {
return this.name || this.topic || "redis out";
}
});
</script>
<script type="text/x-red" data-template-name="redis-out">
<div class="form-row">
<label for="node-input-server"><i class="fa fa-globe"></i> Server</label>
<input type="text" id="node-input-server" placeholder="Server">
</div>
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
<div class="form-row">
<label for="node-input-topic"><i class="icon-tasks"></i> Topic</label>
<input type="text" id="node-input-topic" placeholder="Topic">
</div>
<div class="form-row">
<label for="node-input-command"><i class="fa fa-unlock"></i> Method</label>
<select id="node-input-command">
<option value="rpush" selected>RPUSH</option>
<option value="lpush">LPUSH</option>
<option value="rpushx">RPUSHX</option>
<option value="lpushx">LPUSHX</option>
<option value="publish">PUBLISH</option>
</select>
</div>
<div class="form-row">
<label for="node-input-obj"> </label>
<input type="checkbox" id="node-input-obj" style="display:inline-block; width:15px; vertical-align:baseline;"> Serialize payload to JSON Object
</div>
</script>
<script type="text/x-red" data-help-name="redis-out">
<p>Redis out</p>
<p>Acts as Publisher, using RPUSH, LPUSH or PUBLISH</p>
<p>The msg.topic is key name to publish.</p>
<p>Note: Output only works on PUBLISH and return number of subscribers.</p>
</script>
<script type="text/javascript">
/*global RED*/
RED.nodes.registerType('redis-command', {
category: 'Redis',
inputs: 1,
outputs: 1,
color: "#ffffff",
icon: "redis.png",
paletteLabel: "redis cmd",
defaults: {
server: {
value: "",
type: "redis-config"
},
command: {
value: "set"
},
name: {
value: ""
},
topic: {
value: ""
},
params: {
value: "[]",
validate: function (v) { if (!this.required && !v) return true; return RED.validators.typedInput("paramsType")(v); },
required: false
},
paramsType: { value: "json" },
payloadType: {
value: "json"
},
block: {
value: false
}
},
label: function () {
return this.name || "redis " + this.command + " " + (this.topic || "");
},
oneditprepare: function () {
$("#node-input-params").typedInput({
default: 'json',
typeField: "#node-input-paramsType",
types: ['json']
});
}
});
</script>
<script type="text/x-red" data-template-name="redis-command">
<div class="form-row">
<label for="node-input-server"><i class="fa fa-globe"></i> Server</label>
<input type="text" id="node-input-server" placeholder="Server">
</div>
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
<div class="form-row">
<label for="node-input-topic"><i class="icon-tasks"></i> Topic/Key</label>
<input type="text" id="node-input-topic" placeholder="Topic">
</div>
<div class="form-row">
<label for="node-input-command"><i class="fa fa-unlock"></i> Command</label>
<select id="node-input-command">
<optgroup label="Core">
<option value="ACL">ACL</option>
<option value="APPEND">APPEND</option>
<option value="ASKING">ASKING</option>
<option value="AUTH">AUTH</option>
<option value="BGREWRITEAOF">BGREWRITEAOF</option>
<option value="BGSAVE">BGSAVE</option>
<option value="BITCOUNT">BITCOUNT</option>
<option value="BITFIELD">BITFIELD</option>
<option value="BITFIELD_RO">BITFIELD_RO</option>
<option value="BITOP">BITOP</option>
<option value="BITPOS">BITPOS</option>
<option value="BLPOP">BLPOP</option>
<option value="BRPOP">BRPOP</option>
<option value="BRPOPLPUSH">BRPOPLPUSH</option>
<option value="BZPOPMAX">BZPOPMAX</option>
<option value="BZPOPMIN">BZPOPMIN</option>
<option value="CLIENT">CLIENT</option>
<option value="CLUSTER">CLUSTER</option>
<option value="COMMAND">COMMAND</option>
<option value="CONFIG">CONFIG</option>
<option value="DBSIZE">DBSIZE</option>
<option value="DEBUG">DEBUG</option>
<option value="DECR">DECR</option>
<option value="DECRBY">DECRBY</option>
<option value="DEL">DEL</option>
<option value="DISCARD">DISCARD</option>
<option value="DUMP">DUMP</option>
<option value="ECHO">ECHO</option>
<option value="EVAL">EVAL</option>
<option value="EVALSHA">EVALSHA</option>
<option value="EXEC">EXEC</option>
<option value="EXISTS">EXISTS</option>
<option value="EXPIRE">EXPIRE</option>
<option value="EXPIREAT">EXPIREAT</option>
<option value="FLUSHALL">FLUSHALL</option>
<option value="FLUSHDB">FLUSHDB</option>
<option value="GEOADD">GEOADD</option>
<option value="GEODIST">GEODIST</option>
<option value="GEOHASH">GEOHASH</option>
<option value="GEOPOS">GEOPOS</option>
<option value="GEORADIUS">GEORADIUS</option>
<option value="GEORADIUSBYMEMBER">GEORADIUSBYMEMBER</option>
<option value="GEORADIUSBYMEMBER_RO">GEORADIUSBYMEMBER_RO</option>
<option value="GEORADIUS_RO">GEORADIUS_RO</option>
<option value="GET">GET</option>
<option value="GETBIT">GETBIT</option>
<option value="GETRANGE">GETRANGE</option>
<option value="GETSET">GETSET</option>
<option value="HDEL">HDEL</option>
<option value="HELLO">HELLO</option>
<option value="HEXISTS">HEXISTS</option>
<option value="HGET">HGET</option>
<option value="HGETALL">HGETALL</option>
<option value="HINCRBY">HINCRBY</option>
<option value="HINCRBYFLOAT">HINCRBYFLOAT</option>
<option value="HKEYS">HKEYS</option>
<option value="HLEN">HLEN</option>
<option value="HMGET">HMGET</option>
<option value="HMSET">HMSET</option>
<option value="HOST:">HOST:</option>
<option value="HSCAN">HSCAN</option>
<option value="HSET">HSET</option>
<option value="HSETNX">HSETNX</option>
<option value="HSTRLEN">HSTRLEN</option>
<option value="HVALS">HVALS</option>
<option value="INCR">INCR</option>
<option value="INCRBY">INCRBY</option>
<option value="INCRBYFLOAT">INCRBYFLOAT</option>
<option value="INFO">INFO</option>
<option value="KEYS">KEYS</option>
<option value="LASTSAVE">LASTSAVE</option>
<option value="LATENCY">LATENCY</option>
<option value="LINDEX">LINDEX</option>
<option value="LINSERT">LINSERT</option>
<option value="LLEN">LLEN</option>
<option value="LOLWUT">LOLWUT</option>
<option value="LPOP">LPOP</option>
<option value="LPUSH">LPUSH</option>
<option value="LPUSHX">LPUSHX</option>
<option value="LRANGE">LRANGE</option>
<option value="LREM">LREM</option>
<option value="LSET">LSET</option>
<option value="LTRIM">LTRIM</option>
<option value="MEMORY">MEMORY</option>
<option value="MGET">MGET</option>
<option value="MIGRATE">MIGRATE</option>
<option value="MODULE">MODULE</option>
<option value="MONITOR">MONITOR</option>
<option value="MOVE">MOVE</option>
<option value="MSET">MSET</option>
<option value="MSETNX">MSETNX</option>
<option value="MULTI">MULTI</option>
<option value="OBJECT">OBJECT</option>
<option value="PERSIST">PERSIST</option>
<option value="PEXPIRE">PEXPIRE</option>
<option value="PEXPIREAT">PEXPIREAT</option>
<option value="PFADD">PFADD</option>
<option value="PFCOUNT">PFCOUNT</option>
<option value="PFDEBUG">PFDEBUG</option>
<option value="PFMERGE">PFMERGE</option>
<option value="PFSELFTEST">PFSELFTEST</option>
<option value="PING">PING</option>
<option value="POST">POST</option>
<option value="PSETEX">PSETEX</option>
<option value="PSUBSCRIBE">PSUBSCRIBE</option>
<option value="PSYNC">PSYNC</option>
<option value="PTTL">PTTL</option>
<option value="PUBLISH">PUBLISH</option>
<option value="PUBSUB">PUBSUB</option>
<option value="PUNSUBSCRIBE">PUNSUBSCRIBE</option>
<option value="RANDOMKEY">RANDOMKEY</option>
<option value="READONLY">READONLY</option>
<option value="READWRITE">READWRITE</option>
<option value="RENAME">RENAME</option>
<option value="RENAMENX">RENAMENX</option>
<option value="REPLCONF">REPLCONF</option>
<option value="REPLICAOF">REPLICAOF</option>
<option value="RESTORE">RESTORE</option>
<option value="RESTORE-ASKING">RESTORE-ASKING</option>
<option value="ROLE">ROLE</option>
<option value="RPOP">RPOP</option>
<option value="RPOPLPUSH">RPOPLPUSH</option>
<option value="RPUSH">RPUSH</option>
<option value="RPUSHX">RPUSHX</option>
<option value="SADD">SADD</option>
<option value="SAVE">SAVE</option>
<option value="SCAN">SCAN</option>
<option value="SCARD">SCARD</option>
<option value="SCRIPT">SCRIPT</option>
<option value="SDIFF">SDIFF</option>
<option value="SDIFFSTORE">SDIFFSTORE</option>
<option value="SELECT">SELECT</option>
<option value="SET">SET</option>
<option value="SETBIT">SETBIT</option>
<option value="SETEX">SETEX</option>
<option value="SETNX">SETNX</option>
<option value="SETRANGE">SETRANGE</option>
<option value="SHUTDOWN">SHUTDOWN</option>
<option value="SINTER">SINTER</option>
<option value="SINTERSTORE">SINTERSTORE</option>
<option value="SISMEMBER">SISMEMBER</option>
<option value="SLAVEOF">SLAVEOF</option>
<option value="SLOWLOG">SLOWLOG</option>
<option value="SMEMBERS">SMEMBERS</option>
<option value="SMOVE">SMOVE</option>
<option value="SORT">SORT</option>
<option value="SPOP">SPOP</option>
<option value="SRANDMEMBER">SRANDMEMBER</option>
<option value="SREM">SREM</option>
<option value="SSCAN">SSCAN</option>
<option value="STRALGO">STRALGO</option>
<option value="STRLEN">STRLEN</option>
<option value="SUBSCRIBE">SUBSCRIBE</option>
<option value="SUBSTR">SUBSTR</option>
<option value="SUNION">SUNION</option>
<option value="SUNIONSTORE">SUNIONSTORE</option>
<option value="SWAPDB">SWAPDB</option>
<option value="SYNC">SYNC</option>
<option value="TIME">TIME</option>
<option value="TOUCH">TOUCH</option>
<option value="TTL">TTL</option>
<option value="TYPE">TYPE</option>
<option value="UNLINK">UNLINK</option>
<option value="UNSUBSCRIBE">UNSUBSCRIBE</option>
<option value="UNWATCH">UNWATCH</option>
<option value="WAIT">WAIT</option>
<option value="WATCH">WATCH</option>
<option value="XACK">XACK</option>
<option value="XADD">XADD</option>
<option value="XCLAIM">XCLAIM</option>
<option value="XDEL">XDEL</option>
<option value="XGROUP">XGROUP</option>
<option value="XINFO">XINFO</option>
<option value="XLEN">XLEN</option>
<option value="XPENDING">XPENDING</option>
<option value="XRANGE">XRANGE</option>
<option value="XREAD">XREAD</option>
<option value="XREADGROUP">XREADGROUP</option>
<option value="XREVRANGE">XREVRANGE</option>
<option value="XSETID">XSETID</option>
<option value="XTRIM">XTRIM</option>
<option value="ZADD">ZADD</option>
<option value="ZCARD">ZCARD</option>
<option value="ZCOUNT">ZCOUNT</option>
<option value="ZINCRBY">ZINCRBY</option>
<option value="ZINTERSTORE">ZINTERSTORE</option>
<option value="ZLEXCOUNT">ZLEXCOUNT</option>
<option value="ZPOPMAX">ZPOPMAX</option>
<option value="ZPOPMIN">ZPOPMIN</option>
<option value="ZRANGE">ZRANGE</option>
<option value="ZRANGEBYLEX">ZRANGEBYLEX</option>
<option value="ZRANGEBYSCORE">ZRANGEBYSCORE</option>
<option value="ZRANK">ZRANK</option>
<option value="ZREM">ZREM</option>
<option value="ZREMRANGEBYLEX">ZREMRANGEBYLEX</option>
<option value="ZREMRANGEBYRANK">ZREMRANGEBYRANK</option>
<option value="ZREMRANGEBYSCORE">ZREMRANGEBYSCORE</option>
<option value="ZREVRANGE">ZREVRANGE</option>
<option value="ZREVRANGEBYLEX">ZREVRANGEBYLEX</option>
<option value="ZREVRANGEBYSCORE">ZREVRANGEBYSCORE</option>
<option value="ZREVRANK">ZREVRANK</option>
<option value="ZSCAN">ZSCAN</option>
<option value="ZSCORE">ZSCORE</option>
<option value="ZUNIONSTORE">ZUNIONSTORE</option>
</optgroup>
<optgroup label="Modules">
<option value="AI.CONFIG">AI.CONFIG</option>
<option value="AI.DAGRUN">AI.DAGRUN</option>
<option value="AI.DAGRUN_RO">AI.DAGRUN_RO</option>
<option value="AI.INFO">AI.INFO</option>
<option value="AI.MODELDEL">AI.MODELDEL</option>
<option value="AI.MODELGET">AI.MODELGET</option>
<option value="AI.MODELRUN">AI.MODELRUN</option>
<option value="AI.MODELSET">AI.MODELSET</option>
<option value="AI.SCRIPTDEL">AI.SCRIPTDEL</option>
<option value="AI.SCRIPTGET">AI.SCRIPTGET</option>
<option value="AI.SCRIPTRUN">AI.SCRIPTRUN</option>
<option value="AI.SCRIPTSET">AI.SCRIPTSET</option>
<option value="AI.TENSORGET">AI.TENSORGET</option>
<option value="AI.TENSORSET">AI.TENSORSET</option>
<option value="AI._MODELSCAN">AI._MODELSCAN</option>
<option value="AI._SCRIPTSCAN">AI._SCRIPTSCAN</option>
<option value="BF.ADD">BF.ADD</option>
<option value="BF.DEBUG">BF.DEBUG</option>
<option value="BF.EXISTS">BF.EXISTS</option>
<option value="BF.INFO">BF.INFO</option>
<option value="BF.INSERT">BF.INSERT</option>
<option value="BF.LOADCHUNK">BF.LOADCHUNK</option>
<option value="BF.MADD">BF.MADD</option>
<option value="BF.MEXISTS">BF.MEXISTS</option>
<option value="BF.RESERVE">BF.RESERVE</option>
<option value="BF.SCANDUMP">BF.SCANDUMP</option>
<option value="CF.ADD">CF.ADD</option>
<option value="CF.ADDNX">CF.ADDNX</option>
<option value="CF.COMPACT">CF.COMPACT</option>
<option value="CF.COUNT">CF.COUNT</option>
<option value="CF.DEBUG">CF.DEBUG</option>
<option value="CF.DEL">CF.DEL</option>
<option value="CF.EXISTS">CF.EXISTS</option>
<option value="CF.INFO">CF.INFO</option>
<option value="CF.INSERT">CF.INSERT</option>
<option value="CF.INSERTNX">CF.INSERTNX</option>
<option value="CF.LOADCHUNK">CF.LOADCHUNK</option>
<option value="CF.MEXISTS">CF.MEXISTS</option>
<option value="CF.RESERVE">CF.RESERVE</option>
<option value="CF.SCANDUMP">CF.SCANDUMP</option>
<option value="CMS.INCRBY">CMS.INCRBY</option>
<option value="CMS.INFO">CMS.INFO</option>
<option value="CMS.INITBYDIM">CMS.INITBYDIM</option>
<option value="CMS.INITBYPROB">CMS.INITBYPROB</option>
<option value="CMS.MERGE">CMS.MERGE</option>
<option value="CMS.QUERY">CMS.QUERY</option>
<option value="FT.ADD">FT.ADD</option>
<option value="FT.ADDHASH">FT.ADDHASH</option>
<option value="FT.AGGREGATE">FT.AGGREGATE</option>
<option value="FT.ALIASADD">FT.ALIASADD</option>
<option value="FT.ALIASDEL">FT.ALIASDEL</option>
<option value="FT.ALIASUPDATE">FT.ALIASUPDATE</option>
<option value="FT.ALTER">FT.ALTER</option>
<option value="FT.CONFIG">FT.CONFIG</option>
<option value="FT.CREATE">FT.CREATE</option>
<option value="FT.CURSOR">FT.CURSOR</option>
<option value="FT.DEBUG">FT.DEBUG</option>
<option value="FT.DEL">FT.DEL</option>
<option value="FT.DICTADD">FT.DICTADD</option>
<option value="FT.DICTDEL">FT.DICTDEL</option>
<option value="FT.DICTDUMP">FT.DICTDUMP</option>
<option value="FT.DROP">FT.DROP</option>
<option value="FT.EXPLAIN">FT.EXPLAIN</option>
<option value="FT.EXPLAINCLI">FT.EXPLAINCLI</option>
<option value="FT.GET">FT.GET</option>
<option value="FT.INFO">FT.INFO</option>
<option value="FT.MGET">FT.MGET</option>
<option value="FT.OPTIMIZE">FT.OPTIMIZE</option>
<option value="FT.SAFEADD">FT.SAFEADD</option>
<option value="FT.SAFEADDHASH">FT.SAFEADDHASH</option>
<option value="FT.SEARCH">FT.SEARCH</option>
<option value="FT.SETPAYLOAD">FT.SETPAYLOAD</option>
<option value="FT.SPELLCHECK">FT.SPELLCHECK</option>
<option value="FT.SUGADD">FT.SUGADD</option>
<option value="FT.SUGDEL">FT.SUGDEL</option>
<option value="FT.SUGGET">FT.SUGGET</option>
<option value="FT.SUGLEN">FT.SUGLEN</option>
<option value="FT.SYNADD">FT.SYNADD</option>
<option value="FT.SYNDUMP">FT.SYNDUMP</option>
<option value="FT.SYNFORCEUPDATE">FT.SYNFORCEUPDATE</option>
<option value="FT.SYNUPDATE">FT.SYNUPDATE</option>
<option value="FT.TAGVALS">FT.TAGVALS</option>
<option value="GRAPH.BULK">GRAPH.BULK</option>
<option value="GRAPH.DELETE">GRAPH.DELETE</option>
<option value="GRAPH.EXPLAIN">GRAPH.EXPLAIN</option>
<option value="GRAPH.PROFILE">GRAPH.PROFILE</option>
<option value="GRAPH.QUERY">GRAPH.QUERY</option>
<option value="GRAPH.SLOWLOG">GRAPH.SLOWLOG</option>
<option value="JSON.ARRAPPEND">JSON.ARRAPPEND</option>
<option value="JSON.ARRINDEX">JSON.ARRINDEX</option>
<option value="JSON.ARRINSERT">JSON.ARRINSERT</option>
<option value="JSON.ARRLEN">JSON.ARRLEN</option>
<option value="JSON.ARRPOP">JSON.ARRPOP</option>
<option value="JSON.ARRTRIM">JSON.ARRTRIM</option>
<option value="JSON.DEBUG">JSON.DEBUG</option>
<option value="JSON.DEL">JSON.DEL</option>
<option value="JSON.FORGET">JSON.FORGET</option>
<option value="JSON.GET">JSON.GET</option>
<option value="JSON.MGET">JSON.MGET</option>
<option value="JSON.NUMINCRBY">JSON.NUMINCRBY</option>
<option value="JSON.NUMMULTBY">JSON.NUMMULTBY</option>
<option value="JSON.OBJKEYS">JSON.OBJKEYS</option>
<option value="JSON.OBJLEN">JSON.OBJLEN</option>
<option value="JSON.RESP">JSON.RESP</option>
<option value="JSON.SET">JSON.SET</option>
<option value="JSON.STRAPPEND">JSON.STRAPPEND</option>
<option value="JSON.STRLEN">JSON.STRLEN</option>
<option value="JSON.TYPE">JSON.TYPE</option>
<option value="JSON._CACHEINFO">JSON._CACHEINFO</option>
<option value="JSON._CACHEINIT">JSON._CACHEINIT</option>
<option value="RG.ABORTEXECUTION">RG.ABORTEXECUTION</option>
<option value="RG.CLUSTERSET">RG.CLUSTERSET</option>
<option value="RG.CONFIGGET">RG.CONFIGGET</option>
<option value="RG.CONFIGSET">RG.CONFIGSET</option>
<option value="RG.DROPEXECUTION">RG.DROPEXECUTION</option>
<option value="RG.DUMPEXECUTIONS">RG.DUMPEXECUTIONS</option>
<option value="RG.DUMPREGISTRATIONS">RG.DUMPREGISTRATIONS</option>
<option value="RG.EXAMPLE">RG.EXAMPLE</option>
<option value="RG.GETEXECUTION">RG.GETEXECUTION</option>
<option value="RG.GETRESULTS">RG.GETRESULTS</option>
<option value="RG.GETRESULTSBLOCKING">RG.GETRESULTSBLOCKING</option>
<option value="RG.HELLO">RG.HELLO</option>
<option value="RG.INFOCLUSTER">RG.INFOCLUSTER</option>
<option value="RG.INNERMSGCOMMAND">RG.INNERMSGCOMMAND</option>
<option value="RG.INNERREGISTER">RG.INNERREGISTER</option>
<option value="RG.INNERUNREGISTER">RG.INNERUNREGISTER</option>
<option value="RG.NETWORKTEST">RG.NETWORKTEST</option>
<option value="RG.PYDUMPREQS">RG.PYDUMPREQS</option>
<option value="RG.PYEXECUTE">RG.PYEXECUTE</option>
<option value="RG.PYEXECUTEREMOTE">RG.PYEXECUTEREMOTE</option>
<option value="RG.PYEXPORTREQ">RG.PYEXPORTREQ</option>
<option value="RG.PYFREEINTERPRETER">RG.PYFREEINTERPRETER</option>
<option value="RG.PYIMPORTREQ">RG.PYIMPORTREQ</option>
<option value="RG.PYIMPORTRETINTERNAL">RG.PYIMPORTRETINTERNAL</option>
<option value="RG.PYSTATS">RG.PYSTATS</option>
<option value="RG.REFRESHCLUSTER">RG.REFRESHCLUSTER</option>
<option value="RG.TRIGGER">RG.TRIGGER</option>
<option value="RG.UNREGISTER">RG.UNREGISTER</option>
<option value="TOPK.ADD">TOPK.ADD</option>
<option value="TOPK.COUNT">TOPK.COUNT</option>
<option value="TOPK.INCRBY">TOPK.INCRBY</option>
<option value="TOPK.INFO">TOPK.INFO</option>
<option value="TOPK.LIST">TOPK.LIST</option>
<option value="TOPK.QUERY">TOPK.QUERY</option>
<option value="TOPK.RESERVE">TOPK.RESERVE</option>
<option value="TS.ADD">TS.ADD</option>
<option value="TS.ALTER">TS.ALTER</option>
<option value="TS.CREATE">TS.CREATE</option>
<option value="TS.CREATERULE">TS.CREATERULE</option>
<option value="TS.DECRBY">TS.DECRBY</option>
<option value="TS.DELETERULE">TS.DELETERULE</option>
<option value="TS.GET">TS.GET</option>
<option value="TS.INCRBY">TS.INCRBY</option>
<option value="TS.INFO">TS.INFO</option>
<option value="TS.MADD">TS.MADD</option>
<option value="TS.MGET">TS.MGET</option>
<option value="TS.MRANGE">TS.MRANGE</option>
<option value="TS.QUERYINDEX">TS.QUERYINDEX</option>
<option value="TS.RANGE">TS.RANGE</option>
</optgroup>
</select>
</div>
<div class="form-row">
<label for="node-input-params"><i class="fa fa-server"></i> Params</label>
<input type="text" id="node-input-params">
<input type="hidden" id="node-input-paramsType">
</div>
<div class="form-row">
<label for="node-input-block"> </label>
<input type="checkbox" id="node-input-block" style="display:inline-block; width:15px; vertical-align:baseline;"> Block Commands(Force use new connection)
</div>
</script>
<script type="text/x-red" data-help-name="redis-command">
<p>Redis Command</p>
<p>Execute command inside Redis sending payload array as parameters and return the result as payload.</p>
</script>
<script type="text/javascript">
/*global RED*/
RED.nodes.registerType('redis-lua-script', {
category: 'Redis',
inputs: 1,
outputs: 1,
color: "#ffffff",
icon: "redis.png",
paletteLabel: "redis lua",
defaults: {
server: {
value: "",
type: "redis-config"
},
name: {
value: ""
},
keyval: {
value: 0,
validate: RED.validators.number()
},
func: {
value: "\nreturn nil"
},
stored: {
value: false
},
block: {
value: false
}
},
label: function () {
return this.name || "Redis Lua";
},
oneditprepare: function () {
var that = this;
$("#node-input-keyval").spinner({
min: 0
});
this.editor = RED.editor.createEditor({
id: 'node-input-func-editor',
mode: 'ace/mode/lua',
value: $("#node-input-func").val()
});
RED.library.create({
url: "functions", // where to get the data from
type: "function.lua", // the type of object the library is for
editor: this.editor, // the field name the main text body goes to
mode: "ace/mode/lua",
fields: ['name', 'keyval', 'stored']
});
this.editor.focus();
},
oneditsave: function () {
var annot = this.editor.getSession().getAnnotations();
this.noerr = 0;
$("#node-input-noerr").val(0);
for (var k = 0; k < annot.length; k++) {
//console.log(annot[k].type,":",annot[k].text, "on line", annot[k].row);
if (annot[k].type === "error") {
$("#node-input-noerr").val(annot.length);
this.noerr = annot.length;
}
}
$("#node-input-func").val(this.editor.getValue());
delete this.editor;
},
oneditresize: function (size) {
var rows = $("#dialog-form>div:not(.node-text-editor-row)");
var height = $("#dialog-form").height();
for (var i = 0; i < rows.size(); i++) {
height -= $(rows[i]).outerHeight(true);
}
var editorRow = $("#dialog-form>div.node-text-editor-row");
height -= (parseInt(editorRow.css("marginTop")) + parseInt(editorRow.css("marginBottom")));
$(".node-text-editor").css("height", height + "px");
this.editor.resize();
}
});
</script>
<script type="text/x-red" data-template-name="redis-lua-script">
<div class="form-row">
<label for="node-input-server"><i class="fa fa-globe"></i> Server</label>
<input type="text" id="node-input-server" placeholder="Server">
</div>
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
<div class="form-row">
<label> </label>
<input type="checkbox" id="node-input-stored" style="display: inline-block; width: auto; vertical-align: top;">
<label for="node-input-stored" style="width: 70%;">Stored Script</label>
</div>
<div class="form-row">
<label for="node-input-keyval"><i class="fa fa-random"></i> Keys</label>
<input id="node-input-keyval" style="width: 60px; height: 1.7em;" value="0">
</div>
<div class="form-row" style="margin-bottom: 0px;">
<label for="node-input-func"><i class="fa fa-wrench"></i> Lua Script</label>
<input type="hidden" id="node-input-func" autofocus="autofocus">
<input type="hidden" id="node-input-noerr">
</div>
<div class="form-row node-text-editor-row">
<div style="height: 250px;" class="node-text-editor" id="node-input-func-editor"></div>
</div>
<div class="form-row">
<label for="node-input-block"> </label>
<input type="checkbox" id="node-input-block" style="display:inline-block; width:15px; vertical-align:baseline;"> Block Commands(Force use new connection)
</div>
</script>
<script type="text/x-red" data-help-name="redis-lua-script">
<p>Redis Lua</p>
<p>Execute lua script inside Redis sending payload array as parameters and return the result as payload.</p>
<p>Options</p>
<p>Stored: Set if you want use SCRIPT LOAD and EVALSHA to run script</p>
<p>Keys: Number of keys that you send to the lua script</p>
<p>Script: Lua script</p>
<p>Payload: you need send all keys before, after send all values.</p>
</script>
<script type="text/javascript">
/*global RED*/
RED.nodes.registerType('redis-instance', {
category: 'Redis',
inputs: 0,
outputs: 0,
color: "#ffffff",
icon: "redis.png",
paletteLabel: "instance",
defaults: {
server: {
value: "",
type: "redis-config"
},
name: {
value: ""
},
topic: {
value: "redis",
required: true
},
location: {
value: "flow",
required: true
}
},
label: function () {
return this.name || this.topic || "instance ["+this.location+"]";
}
});
</script>
<script type="text/x-red" data-template-name="redis-instance">
<div class="form-row">
<label for="node-input-server"><i class="fa fa-globe"></i> Server</label>
<input type="text" id="node-input-server" placeholder="Server">
</div>
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
<div class="form-row">
<label for="node-input-topic"><i class="icon-tasks"></i> Topic</label>
<input type="text" id="node-input-topic" placeholder="Topic">
</div>
<div class="form-row">
<label for="node-input-location"><i class="fa fa-unlock"></i> Context</label>
<select id="node-input-location">
<option value="flow" selected>Flow</option>
<option value="global">Global</option>
</select>
</div>
</script>
<script type="text/x-red" data-help-name="redis-instance">
<p>Redis Instance</p>
<p>Injects a Redis connection on flow or global context.</p>
<p>The Topic is the var name of redis.</p>
<p></p>
</script>