Interface RedisDataSource

  • All Known Implementing Classes:
    BlockingRedisDataSourceImpl

    public interface RedisDataSource
    Synchronous / Blocking Redis Data Source.

    This class provides access to various groups of methods. Each method execute a Redis command. Groups and methods are type-safe. The decomposition follows the Redis API group.

    NOTE: Not all commands are exposed from this API. This is done on purpose. You can always use the low-level Redis client to execute others commands.

    • Method Detail

      • withConnection

        void withConnection​(Consumer<RedisDataSource> consumer)
        Retrieves a RedisDataSource using a single connection with the Redis server. The connection is acquired from the pool, and released then the consumer completes.
        Parameters:
        consumer - the consumer receiving the connection and returning when the connection can be released.
      • withTransaction

        TransactionResult withTransaction​(Consumer<TransactionalRedisDataSource> tx)
        Retrieves a RedisDataSource enqueuing commands in a Redis Transaction (MULTI). Note that transaction acquires a single connection, and all the commands are enqueued in this connection. The commands are only executed when the passed block completes.

        The results of the commands are retrieved using the returned TransactionResult.

        The user can discard a transaction using the TransactionalRedisDataSource.discard() method. In this case, the produced TransactionResult will be empty.

        Parameters:
        tx - the consumer receiving the transactional redis data source. The enqueued commands are only executed at the end of the block.
      • withTransaction

        TransactionResult withTransaction​(Consumer<TransactionalRedisDataSource> tx,
                                          String... watchedKeys)
        Retrieves a RedisDataSource enqueuing commands in a Redis Transaction (MULTI). Note that transaction acquires a single connection, and all the commands are enqueued in this connection. The commands are only executed when the passed block completes.

        The results of the commands are retrieved using the returned TransactionResult.

        The user can discard a transaction using the TransactionalRedisDataSource.discard() method. In this case, the produced TransactionResult will be empty.

        Parameters:
        tx - the consumer receiving the transactional redis data source. The enqueued commands are only executed at the end of the block.
        watchedKeys - the keys to watch during the execution of the transaction. If one of these key is modified before the completion of the transaction, the transaction is discarded.
      • withTransaction

        <I> OptimisticLockingTransactionResult<I> withTransaction​(Function<RedisDataSource,​I> preTxBlock,
                                                                  BiConsumer<I,​TransactionalRedisDataSource> tx,
                                                                  String... watchedKeys)
        Retrieves a RedisDataSource enqueuing commands in a Redis Transaction (MULTI). Note that transaction acquires a single connection, and all the commands are enqueued in this connection. The commands are only executed when the passed block emits the null item.

        This variant also allows executing code before the transaction gets started but after the key being watched:

             WATCH key
             // preTxBlock
             element = ZRANGE k 0 0
             // TxBlock
             MULTI
                ZREM k element
             EXEC
         

        The preTxBlock returns a RedisDataSource. The produced value is received by the tx block, which can use that value to execute the appropriate operation in the transaction. The produced value can also be retrieved from the produced OptimisticLockingTransactionResult. Commands issued in the preTxBlock must used the passed (single-connection) RedisDataSource instance.

        If the preTxBlock throws an exception, the transaction is not executed, and the returned OptimisticLockingTransactionResult is empty.

        This construct allows implementing operation relying on optimistic locking. The results of the commands are retrieved using the produced OptimisticLockingTransactionResult.

        The user can discard a transaction using the TransactionalRedisDataSource.discard() method. In this case, the produced OptimisticLockingTransactionResult will be empty.

        Parameters:
        tx - the consumer receiving the transactional redis data source. The enqueued commands are only executed at the end of the block.
        watchedKeys - the keys to watch during the execution of the transaction. If one of these key is modified before the completion of the transaction, the transaction is discarded.
      • select

        void select​(long index)
        Execute the command SELECT. Summary: Change the selected database for the current connection Group: connection Requires Redis 1.0.0

        This method is expected to be used inside a withConnection(Consumer) block.

        Parameters:
        index - the database index.
      • flushall

        void flushall()
        Execute the command FLUSHALL. Summary: Remove all keys from all databases Group: server Requires Redis 1.0.0
      • hash

        <K,​F,​V> HashCommands<K,​F,​V> hash​(Class<K> redisKeyType,
                                                                 Class<F> typeOfField,
                                                                 Class<V> typeOfValue)
        Gets the object to execute commands manipulating hashes (a.k.a. Map&lt;F, V&gt;).

        If you want to use a hash of &lt;String -> Person&gt; stored using String identifier, you would use: hash(String.class, String.class, Person.class). If you want to use a hash of &lt;String -> Person&gt; stored using UUID identifier, you would use: hash(UUID.class, String.class, Person.class).

        Type Parameters:
        K - the type of the redis key
        F - the type of the fields (map's keys)
        V - the type of the value
        Parameters:
        redisKeyType - the class of the keys
        typeOfField - the class of the fields
        typeOfValue - the class of the values
        Returns:
        the object to execute commands manipulating hashes (a.k.a. Map&lt;K, V&gt;).
      • hash

        default <V> HashCommands<String,​String,​V> hash​(Class<V> typeOfValue)
        Gets the object to execute commands manipulating hashes (a.k.a. Map&lt;String, V&gt;).

        This is a shortcut on hash(String.class, String.class, V)

        Type Parameters:
        V - the type of the value
        Parameters:
        typeOfValue - the class of the values
        Returns:
        the object to execute commands manipulating hashes (a.k.a. Map&lt;String, V&gt;).
      • geo

        <K,​V> GeoCommands<K,​V> geo​(Class<K> redisKeyType,
                                               Class<V> memberType)
        Gets the object to execute commands manipulating geo items (a.k.a. {longitude, latitude, member}).

        V represents the type of the member, i.e. the localized thing.

        Type Parameters:
        K - the type of the redis key
        V - the type of the member
        Parameters:
        redisKeyType - the class of the keys
        memberType - the class of the members
        Returns:
        the object to execute geo commands.
      • geo

        default <V> GeoCommands<String,​V> geo​(Class<V> memberType)
        Gets the object to execute commands manipulating geo items (a.k.a. {longitude, latitude, member}).

        V represents the type of the member, i.e. the localized thing.

        Type Parameters:
        V - the type of the member
        Parameters:
        memberType - the class of the members
        Returns:
        the object to execute geo commands.
      • key

        <K> KeyCommands<K> key​(Class<K> redisKeyType)
        Gets the object to execute commands manipulating keys and expiration times.
        Type Parameters:
        K - the type of the key
        Parameters:
        redisKeyType - the type of the keys
        Returns:
        the object to execute commands manipulating keys.
      • key

        default KeyCommands<String> key()
        Gets the object to execute commands manipulating keys and expiration times.
        Returns:
        the object to execute commands manipulating keys.
      • sortedSet

        <K,​V> SortedSetCommands<K,​V> sortedSet​(Class<K> redisKeyType,
                                                           Class<V> valueType)
        Gets the object to execute commands manipulating sorted sets.
        Type Parameters:
        K - the type of the key
        V - the type of the value
        Parameters:
        redisKeyType - the type of the keys
        valueType - the type of the value sorted in the sorted sets
        Returns:
        the object to manipulate sorted sets.
      • sortedSet

        default <V> SortedSetCommands<String,​V> sortedSet​(Class<V> valueType)
        Gets the object to execute commands manipulating sorted sets.
        Type Parameters:
        V - the type of the value
        Parameters:
        valueType - the type of the value sorted in the sorted sets
        Returns:
        the object to manipulate sorted sets.
      • value

        <K,​V> ValueCommands<K,​V> value​(Class<K> redisKeyType,
                                                   Class<V> valueType)
        Gets the object to execute commands manipulating stored strings.

        NOTE: Instead of string, this group is named value to avoid the confusion with the Java String type. Indeed, Redis strings can be strings, numbers, byte arrays...

        Type Parameters:
        K - the type of the key
        V - the type of the value
        Parameters:
        redisKeyType - the type of the keys
        valueType - the type of the value, often String, or the value are encoded/decoded using codecs.
        Returns:
        the object to manipulate stored strings.
      • value

        default <V> ValueCommands<String,​V> value​(Class<V> valueType)
        Gets the object to execute commands manipulating stored strings.

        NOTE: Instead of string, this group is named value to avoid the confusion with the Java String type. Indeed, Redis strings can be strings, numbers, byte arrays...

        Type Parameters:
        V - the type of the value
        Parameters:
        valueType - the type of the value, often String, or the value are encoded/decoded using codecs.
        Returns:
        the object to manipulate stored strings.
      • string

        @Deprecated
        <K,​V> StringCommands<K,​V> string​(Class<K> redisKeyType,
                                                     Class<V> valueType)
        Deprecated.
        Gets the object to execute commands manipulating stored strings.
        Type Parameters:
        K - the type of the key
        V - the type of the value
        Parameters:
        redisKeyType - the type of the keys
        valueType - the type of the value, often String, or the value are encoded/decoded using codecs.
        Returns:
        the object to manipulate stored strings.
      • string

        @Deprecated
        default <V> StringCommands<String,​V> string​(Class<V> valueType)
        Deprecated.
        Use value(Class) instead
        Gets the object to execute commands manipulating stored strings.
        Type Parameters:
        V - the type of the value
        Parameters:
        valueType - the type of the value, often String, or the value are encoded/decoded using codecs.
        Returns:
        the object to manipulate stored strings.
      • set

        <K,​V> SetCommands<K,​V> set​(Class<K> redisKeyType,
                                               Class<V> memberType)
        Gets the object to execute commands manipulating sets.
        Type Parameters:
        K - the type of the key
        V - the type of the member
        Parameters:
        redisKeyType - the type of the keys
        memberType - the type of the member stored in each set
        Returns:
        the object to manipulate sets.
      • set

        default <V> SetCommands<String,​V> set​(Class<V> memberType)
        Gets the object to execute commands manipulating sets.
        Type Parameters:
        V - the type of the member
        Parameters:
        memberType - the type of the member stored in each set
        Returns:
        the object to manipulate sets.
      • list

        <K,​V> ListCommands<K,​V> list​(Class<K> redisKeyType,
                                                 Class<V> memberType)
        Gets the object to execute commands manipulating lists.
        Type Parameters:
        K - the type of the key
        V - the type of the member
        Parameters:
        redisKeyType - the type of the keys
        memberType - the type of the member stored in each list
        Returns:
        the object to manipulate sets.
      • list

        default <V> ListCommands<String,​V> list​(Class<V> memberType)
        Gets the object to execute commands manipulating lists.
        Type Parameters:
        V - the type of the member
        Parameters:
        memberType - the type of the member stored in each list
        Returns:
        the object to manipulate sets.
      • hyperloglog

        <K,​V> HyperLogLogCommands<K,​V> hyperloglog​(Class<K> redisKeyType,
                                                               Class<V> memberType)
        Gets the object to execute commands manipulating hyperloglog data structures.
        Type Parameters:
        K - the type of the key
        V - the type of the member
        Parameters:
        redisKeyType - the type of the keys
        memberType - the type of the member stored in the data structure
        Returns:
        the object to manipulate hyper log log data structures.
      • hyperloglog

        default <V> HyperLogLogCommands<String,​V> hyperloglog​(Class<V> memberType)
        Gets the object to execute commands manipulating hyperloglog data structures.
        Type Parameters:
        V - the type of the member
        Parameters:
        memberType - the type of the member stored in the data structure
        Returns:
        the object to manipulate hyper log log data structures.
      • bitmap

        <K> BitMapCommands<K> bitmap​(Class<K> redisKeyType)
        Gets the object to execute commands manipulating bitmap data structures.
        Type Parameters:
        K - the type of the key
        Parameters:
        redisKeyType - the type of the keys
        Returns:
        the object to manipulate bitmap data structures.
      • bitmap

        default BitMapCommands<String> bitmap()
        Gets the object to execute commands manipulating bitmap data structures.
        Returns:
        the object to manipulate bitmap data structures.
      • pubsub

        <V> PubSubCommands<V> pubsub​(Class<V> messageType)
        Gets the objects to publish and receive messages.
        Type Parameters:
        V - the type of message
        Parameters:
        messageType - the type of message
        Returns:
        the object to publish and subscribe to Redis channels
      • execute

        io.vertx.mutiny.redis.client.Response execute​(String command,
                                                      String... args)
        Executes a command. This method is used to execute commands not offered by the API.
        Parameters:
        command - the command name
        args - the parameters, encoded as String.
        Returns:
        the response
      • execute

        io.vertx.mutiny.redis.client.Response execute​(io.vertx.mutiny.redis.client.Command command,
                                                      String... args)
        Executes a command. This method is used to execute commands not offered by the API.
        Parameters:
        command - the command
        args - the parameters, encoded as String.
        Returns:
        the response
      • execute

        io.vertx.mutiny.redis.client.Response execute​(io.vertx.redis.client.Command command,
                                                      String... args)
        Executes a command. This method is used to execute commands not offered by the API.
        Parameters:
        command - the command
        args - the parameters, encoded as String.
        Returns:
        the response