Class RedisFilterBolt

  • All Implemented Interfaces:
    Serializable, IBolt, IComponent, IRichBolt

    public class RedisFilterBolt
    extends AbstractRedisBolt
    Basic bolt for querying from Redis and filters out if key/field doesn't exist. If key/field exists on Redis, this bolt just forwards input tuple to default stream.

    Supported data types: STRING, HASH, SET, SORTED_SET, HYPER_LOG_LOG, GEO.

    Note: For STRING it checks such key exists on the key space. For HASH and SORTED_SET and GEO, it checks such field exists on that data structure. For SET and HYPER_LOG_LOG, it check such value exists on that data structure. (Note that it still refers key from tuple via RedisFilterMapper#getKeyFromTuple()) In order to apply checking this to SET, you need to input additional key this case.

    Note2: If you want to just query about existence of key regardless of actual data type, specify STRING to data type of RedisFilterMapper.

    See Also:
    Serialized Form
    • Constructor Detail

      • RedisFilterBolt

        public RedisFilterBolt​(JedisPoolConfig config,
                               RedisFilterMapper filterMapper)
        Constructor for single Redis environment (JedisPool).
        Parameters:
        config - configuration for initializing JedisPool
        filterMapper - mapper containing which datatype, query key that Bolt uses
      • RedisFilterBolt

        public RedisFilterBolt​(JedisClusterConfig config,
                               RedisFilterMapper filterMapper)
        Constructor for Redis Cluster environment (JedisCluster).
        Parameters:
        config - configuration for initializing JedisCluster
        filterMapper - mapper containing which datatype, query key that Bolt uses
    • Method Detail

      • declareOutputFields

        public void declareOutputFields​(OutputFieldsDeclarer declarer)
        Declare the output schema for all the streams of this topology.
        Parameters:
        declarer - this is used to declare output stream ids, output fields, and whether or not each output stream is a direct stream