Package org.redisson

Class RedissonListMultimap<K,V>

Type Parameters:
K - key
V - value
All Implemented Interfaces:
RExpirable, RExpirableAsync, RListMultimap<K,V>, RMultimap<K,V>, RMultimapAsync<K,V>, RObject, RObjectAsync
Direct Known Subclasses:
RedissonListMultimapCache

public class RedissonListMultimap<K,V> extends RedissonMultimap<K,V> implements RListMultimap<K,V>
Author:
Nikita Koksharov
  • Constructor Details

  • Method Details

    • sizeAsync

      public RFuture<Integer> sizeAsync()
      Description copied from interface: RMultimapAsync
      Returns the number of key-value pairs in this multimap.
      Specified by:
      sizeAsync in interface RMultimapAsync<K,V>
      Returns:
      size of multimap
    • fastRemoveValueAsync

      public RFuture<Long> fastRemoveValueAsync(V... values)
      Description copied from interface: RMultimapAsync
      Removes values from map by one operation
      Specified by:
      fastRemoveValueAsync in interface RMultimapAsync<K,V>
      Parameters:
      values - map values
      Returns:
      the number of values that were removed from the map
    • containsKeyAsync

      public RFuture<Boolean> containsKeyAsync(Object key)
      Description copied from interface: RMultimapAsync
      Returns true if this multimap contains at least one key-value pair with the key key.
      Specified by:
      containsKeyAsync in interface RMultimapAsync<K,V>
      Parameters:
      key - - map key
      Returns:
      true if contains a key
    • containsValueAsync

      public RFuture<Boolean> containsValueAsync(Object value)
      Description copied from interface: RMultimapAsync
      Returns true if this multimap contains at least one key-value pair with the value value.
      Specified by:
      containsValueAsync in interface RMultimapAsync<K,V>
      Parameters:
      value - - map value
      Returns:
      true if contains a value
    • containsEntry

      public boolean containsEntry(Object key, Object value)
      Description copied from interface: RMultimap
      Returns true if this multimap contains at least one key-value pair with the key key and the value value.
      Specified by:
      containsEntry in interface RMultimap<K,V>
      Overrides:
      containsEntry in class RedissonMultimap<K,V>
      Parameters:
      key - - map key
      value - - map value
      Returns:
      true if contains an entry
    • containsEntryAsync

      public RFuture<Boolean> containsEntryAsync(Object key, Object value)
      Description copied from interface: RMultimapAsync
      Returns true if this multimap contains at least one key-value pair with the key key and the value value.
      Specified by:
      containsEntryAsync in interface RMultimapAsync<K,V>
      Parameters:
      key - - map key
      value - - map value
      Returns:
      true if contains an entry
    • put

      public boolean put(K key, V value)
      Description copied from interface: RMultimap
      Stores a key-value pair in this multimap.

      Some multimap implementations allow duplicate key-value pairs, in which case put always adds a new key-value pair and increases the multimap size by 1. Other implementations prohibit duplicates, and storing a key-value pair that's already in the multimap has no effect.

      Specified by:
      put in interface RMultimap<K,V>
      Overrides:
      put in class RedissonMultimap<K,V>
      Parameters:
      key - - map key
      value - - map value
      Returns:
      true if the method increased the size of the multimap, or false if the multimap already contained the key-value pair and doesn't allow duplicates
    • putAsync

      public RFuture<Boolean> putAsync(K key, V value)
      Description copied from interface: RMultimapAsync
      Stores a key-value pair in this multimap.

      Some multimap implementations allow duplicate key-value pairs, in which case put always adds a new key-value pair and increases the multimap size by 1. Other implementations prohibit duplicates, and storing a key-value pair that's already in the multimap has no effect.

      Specified by:
      putAsync in interface RMultimapAsync<K,V>
      Parameters:
      key - - map key
      value - - map value
      Returns:
      true if the method increased the size of the multimap, or false if the multimap already contained the key-value pair and doesn't allow duplicates
    • removeAsync

      public RFuture<Boolean> removeAsync(Object key, Object value)
      Description copied from interface: RMultimapAsync
      Removes a single key-value pair with the key key and the value value from this multimap, if such exists. If multiple key-value pairs in the multimap fit this description, which one is removed is unspecified.
      Specified by:
      removeAsync in interface RMultimapAsync<K,V>
      Parameters:
      key - - map key
      value - - map value
      Returns:
      true if the multimap changed
    • putAllAsync

      public RFuture<Boolean> putAllAsync(K key, Iterable<? extends V> values)
      Description copied from interface: RMultimapAsync
      Stores a key-value pair in this multimap for each of values, all using the same key, key. Equivalent to (but expected to be more efficient than):
         
      
         for (V value : values) {
           put(key, value);
         }

      In particular, this is a no-op if values is empty.

      Specified by:
      putAllAsync in interface RMultimapAsync<K,V>
      Parameters:
      key - - map key
      values - - map values
      Returns:
      true if the multimap changed
    • get

      public RList<V> get(K key)
      Description copied from interface: RListMultimap
      Returns a view collection of the values associated with key in this multimap, if any. Note that when containsKey(key) is false, this returns an empty collection, not null.

      Changes to the returned collection will update the underlying multimap, and vice versa.

      Because a RListMultimap may has duplicates among values mapped by key and stores insertion order method returns a List, instead of the Collection specified in the RMultimap interface.

      Specified by:
      get in interface RListMultimap<K,V>
      Specified by:
      get in interface RMultimap<K,V>
      Parameters:
      key - - map key
      Returns:
      collection of values
    • getAll

      public List<V> getAll(K key)
      Description copied from interface: RMultimap
      Returns all elements at once. Result collection is NOT backed by map, so changes are not reflected in map.
      Specified by:
      getAll in interface RListMultimap<K,V>
      Specified by:
      getAll in interface RMultimap<K,V>
      Overrides:
      getAll in class RedissonMultimap<K,V>
      Parameters:
      key - - map key
      Returns:
      collection of values
    • getAllAsync

      public RFuture<Collection<V>> getAllAsync(K key)
      Specified by:
      getAllAsync in interface RMultimapAsync<K,V>
    • removeAll

      public List<V> removeAll(Object key)
      Description copied from interface: RMultimap
      Removes all values associated with the key key.

      Once this method returns, key will not be mapped to any values

      Use RMultimap.fastRemove(K...) if values are not needed.

      Specified by:
      removeAll in interface RListMultimap<K,V>
      Specified by:
      removeAll in interface RMultimap<K,V>
      Overrides:
      removeAll in class RedissonMultimap<K,V>
      Parameters:
      key - - map key
      Returns:
      the values that were removed (possibly empty). The returned collection may be modifiable, but updating it will have no effect on the multimap.
    • removeAllAsync

      public RFuture<Collection<V>> removeAllAsync(Object key)
      Description copied from interface: RMultimapAsync
      Removes all values associated with the key key.

      Once this method returns, key will not be mapped to any values.

      Specified by:
      removeAllAsync in interface RMultimapAsync<K,V>
      Parameters:
      key - - map key
      Returns:
      the values that were removed (possibly empty). The returned collection may be modifiable, but updating it will have no effect on the multimap.
    • replaceValues

      public List<V> replaceValues(K key, Iterable<? extends V> values)
      Description copied from interface: RMultimap
      Stores a collection of values with the same key, replacing any existing values for that key.

      If values is empty, this is equivalent to removeAll(key).

      Specified by:
      replaceValues in interface RListMultimap<K,V>
      Specified by:
      replaceValues in interface RMultimap<K,V>
      Overrides:
      replaceValues in class RedissonMultimap<K,V>
      Parameters:
      key - - map key
      values - - map values
      Returns:
      the collection of replaced values, or an empty collection if no values were previously associated with the key. The collection may be modifiable, but updating it will have no effect on the multimap.
    • replaceValuesAsync

      public RFuture<Collection<V>> replaceValuesAsync(K key, Iterable<? extends V> values)
      Description copied from interface: RMultimapAsync
      Stores a collection of values with the same key, replacing any existing values for that key.

      If values is empty, this is equivalent to RMultimapAsync.removeAllAsync(Object).

      Specified by:
      replaceValuesAsync in interface RMultimapAsync<K,V>
      Parameters:
      key - - map key
      values - - map values
      Returns:
      the collection of replaced values, or an empty collection if no values were previously associated with the key. The collection may be modifiable, but updating it will have no effect on the multimap.
    • expire

      public boolean expire(long timeToLive, TimeUnit timeUnit)
      Description copied from interface: RExpirable
      Specified by:
      expire in interface RExpirable
      Parameters:
      timeToLive - - timeout before object will be deleted
      timeUnit - - timeout time unit
      Returns:
      true if the timeout was set and false if not
    • expireAsync

      public RFuture<Boolean> expireAsync(long timeToLive, TimeUnit timeUnit)
      Description copied from interface: RExpirableAsync
      Specified by:
      expireAsync in interface RExpirableAsync
      Parameters:
      timeToLive - - timeout before object will be deleted
      timeUnit - - timeout time unit
      Returns:
      true if the timeout was set and false if not
    • expireAt

      public boolean expireAt(long timestamp)
      Description copied from interface: RExpirable
      Specified by:
      expireAt in interface RExpirable
      Parameters:
      timestamp - - expire date in milliseconds (Unix timestamp)
      Returns:
      true if the timeout was set and false if not
    • expireAtAsync

      public RFuture<Boolean> expireAtAsync(long timestamp)
      Description copied from interface: RExpirableAsync
      Specified by:
      expireAtAsync in interface RExpirableAsync
      Parameters:
      timestamp - - expire date in milliseconds (Unix timestamp)
      Returns:
      true if the timeout was set and false if not
    • expire

      public boolean expire(Instant instant)
      Description copied from interface: RExpirable
      Sets an expiration date for this object. When expire date comes the key will automatically be deleted.
      Specified by:
      expire in interface RExpirable
      Parameters:
      instant - expire date
      Returns:
      true if the timeout was set and false if not
    • expireIfSet

      public boolean expireIfSet(Instant time)
      Description copied from interface: RExpirable
      Sets an expiration date for this object only if it has been already set. When expire date comes the object will automatically be deleted.

      Requires Redis 7.0.0 and higher.

      Specified by:
      expireIfSet in interface RExpirable
      Parameters:
      time - expire date
      Returns:
      true if the timeout was set and false if not
    • expireIfSetAsync

      public RFuture<Boolean> expireIfSetAsync(Instant time)
      Description copied from interface: RExpirableAsync
      Sets an expiration date for this object only if it has been already set. When expire date comes the object will automatically be deleted.

      Requires Redis 7.0.0 and higher.

      Specified by:
      expireIfSetAsync in interface RExpirableAsync
      Parameters:
      time - expire date
      Returns:
      true if the timeout was set and false if not
    • expireIfNotSet

      public boolean expireIfNotSet(Instant time)
      Description copied from interface: RExpirable
      Sets an expiration date for this object only if it hasn't been set before. When expire date comes the object will automatically be deleted.

      Requires Redis 7.0.0 and higher.

      Specified by:
      expireIfNotSet in interface RExpirable
      Parameters:
      time - expire date
      Returns:
      true if the timeout was set and false if not
    • expireIfNotSetAsync

      public RFuture<Boolean> expireIfNotSetAsync(Instant time)
      Description copied from interface: RExpirableAsync
      Sets an expiration date for this object only if it hasn't been set before. When expire date comes the object will automatically be deleted.

      Requires Redis 7.0.0 and higher.

      Specified by:
      expireIfNotSetAsync in interface RExpirableAsync
      Parameters:
      time - expire date
      Returns:
      true if the timeout was set and false if not
    • expireIfGreater

      public boolean expireIfGreater(Instant time)
      Description copied from interface: RExpirable
      Sets an expiration date for this object only if it's greater than expiration date set before. When expire date comes the object will automatically be deleted.

      Requires Redis 7.0.0 and higher.

      Specified by:
      expireIfGreater in interface RExpirable
      Parameters:
      time - expire date
      Returns:
      true if the timeout was set and false if not
    • expireIfGreaterAsync

      public RFuture<Boolean> expireIfGreaterAsync(Instant time)
      Description copied from interface: RExpirableAsync
      Sets an expiration date for this object only if it's greater than expiration date set before. When expire date comes the object will automatically be deleted.

      Requires Redis 7.0.0 and higher.

      Specified by:
      expireIfGreaterAsync in interface RExpirableAsync
      Parameters:
      time - expire date
      Returns:
      true if the timeout was set and false if not
    • expireIfLess

      public boolean expireIfLess(Instant time)
      Description copied from interface: RExpirable
      Sets an expiration date for this object only if it's less than expiration date set before. When expire date comes the object will automatically be deleted.

      Requires Redis 7.0.0 and higher.

      Specified by:
      expireIfLess in interface RExpirable
      Parameters:
      time - expire date
      Returns:
      true if the timeout was set and false if not
    • expireIfLessAsync

      public RFuture<Boolean> expireIfLessAsync(Instant time)
      Description copied from interface: RExpirableAsync
      Sets an expiration date for this object only if it's less than expiration date set before. When expire date comes the object will automatically be deleted.

      Requires Redis 7.0.0 and higher.

      Specified by:
      expireIfLessAsync in interface RExpirableAsync
      Parameters:
      time - expire date
      Returns:
      true if the timeout was set and false if not
    • expireAsync

      public RFuture<Boolean> expireAsync(Instant instant)
      Description copied from interface: RExpirableAsync
      Set an expire date for object. When expire date comes the key will automatically be deleted.
      Specified by:
      expireAsync in interface RExpirableAsync
      Parameters:
      instant - - expire date
      Returns:
      true if the timeout was set and false if not
    • expire

      public boolean expire(Duration duration)
      Description copied from interface: RExpirable
      Sets a timeout for this object. After the timeout has expired, the key will automatically be deleted.
      Specified by:
      expire in interface RExpirable
      Parameters:
      duration - timeout before object will be deleted
      Returns:
      true if the timeout was set and false if not
    • expireAsync

      public RFuture<Boolean> expireAsync(Duration duration)
      Description copied from interface: RExpirableAsync
      Set a timeout for object. After the timeout has expired, the key will automatically be deleted.
      Specified by:
      expireAsync in interface RExpirableAsync
      Parameters:
      duration - timeout before object will be deleted
      Returns:
      true if the timeout was set and false if not
    • expireAt

      public boolean expireAt(Date timestamp)
      Description copied from interface: RExpirable
      Specified by:
      expireAt in interface RExpirable
      Parameters:
      timestamp - - expire date
      Returns:
      true if the timeout was set and false if not
    • expireAtAsync

      public RFuture<Boolean> expireAtAsync(Date timestamp)
      Description copied from interface: RExpirableAsync
      Specified by:
      expireAtAsync in interface RExpirableAsync
      Parameters:
      timestamp - - expire date
      Returns:
      true if the timeout was set and false if not
    • expireIfSet

      public boolean expireIfSet(Duration duration)
      Description copied from interface: RExpirable
      Sets a timeout for this object only if it has been already set. After the timeout has expired, the key will automatically be deleted.

      Requires Redis 7.0.0 and higher.

      Specified by:
      expireIfSet in interface RExpirable
      Parameters:
      duration - timeout before object will be deleted
      Returns:
      true if the timeout was set and false if not
    • expireIfSetAsync

      public RFuture<Boolean> expireIfSetAsync(Duration duration)
      Description copied from interface: RExpirableAsync
      Sets a timeout for this object only if it has been already set. After the timeout has expired, the key will automatically be deleted.

      Requires Redis 7.0.0 and higher.

      Specified by:
      expireIfSetAsync in interface RExpirableAsync
      Parameters:
      duration - timeout before object will be deleted
      Returns:
      true if the timeout was set and false if not
    • expireIfNotSet

      public boolean expireIfNotSet(Duration duration)
      Description copied from interface: RExpirable
      Sets a timeout for this object only if it hasn't been set before. After the timeout has expired, the key will automatically be deleted.

      Requires Redis 7.0.0 and higher.

      Specified by:
      expireIfNotSet in interface RExpirable
      Parameters:
      duration - timeout before object will be deleted
      Returns:
      true if the timeout was set and false if not
    • expireIfNotSetAsync

      public RFuture<Boolean> expireIfNotSetAsync(Duration duration)
      Description copied from interface: RExpirableAsync
      Sets a timeout for this object only if it hasn't been set before. After the timeout has expired, the key will automatically be deleted.

      Requires Redis 7.0.0 and higher.

      Specified by:
      expireIfNotSetAsync in interface RExpirableAsync
      Parameters:
      duration - timeout before object will be deleted
      Returns:
      true if the timeout was set and false if not
    • expireIfGreater

      public boolean expireIfGreater(Duration duration)
      Description copied from interface: RExpirable
      Sets a timeout for this object only if it's greater than timeout set before. After the timeout has expired, the key will automatically be deleted.

      Requires Redis 7.0.0 and higher.

      Specified by:
      expireIfGreater in interface RExpirable
      Parameters:
      duration - timeout before object will be deleted
      Returns:
      true if the timeout was set and false if not
    • expireIfGreaterAsync

      public RFuture<Boolean> expireIfGreaterAsync(Duration duration)
      Description copied from interface: RExpirableAsync
      Sets a timeout for this object only if it's greater than timeout set before. After the timeout has expired, the key will automatically be deleted.

      Requires Redis 7.0.0 and higher.

      Specified by:
      expireIfGreaterAsync in interface RExpirableAsync
      Parameters:
      duration - timeout before object will be deleted
      Returns:
      true if the timeout was set and false if not
    • expireIfLess

      public boolean expireIfLess(Duration duration)
      Description copied from interface: RExpirable
      Sets a timeout for this object only if it's less than timeout set before. After the timeout has expired, the key will automatically be deleted.

      Requires Redis 7.0.0 and higher.

      Specified by:
      expireIfLess in interface RExpirable
      Parameters:
      duration - timeout before object will be deleted
      Returns:
      true if the timeout was set and false if not
    • expireIfLessAsync

      public RFuture<Boolean> expireIfLessAsync(Duration duration)
      Description copied from interface: RExpirableAsync
      Sets a timeout for this object only if it's less than timeout set before. After the timeout has expired, the key will automatically be deleted.

      Requires Redis 7.0.0 and higher.

      Specified by:
      expireIfLessAsync in interface RExpirableAsync
      Parameters:
      duration - timeout before object will be deleted
      Returns:
      true if the timeout was set and false if not
    • clearExpire

      public boolean clearExpire()
      Description copied from interface: RExpirable
      Clear an expire timeout or expire date for object.
      Specified by:
      clearExpire in interface RExpirable
      Returns:
      true if timeout was removed false if object does not exist or does not have an associated timeout
    • remainTimeToLive

      public long remainTimeToLive()
      Description copied from interface: RExpirable
      Remaining time to live of Redisson object that has a timeout
      Specified by:
      remainTimeToLive in interface RExpirable
      Returns:
      time in milliseconds -2 if the key does not exist. -1 if the key exists but has no associated expire.
    • remainTimeToLiveAsync

      public RFuture<Long> remainTimeToLiveAsync()
      Description copied from interface: RExpirableAsync
      Remaining time to live of Redisson object that has a timeout
      Specified by:
      remainTimeToLiveAsync in interface RExpirableAsync
      Returns:
      time in milliseconds -2 if the key does not exist. -1 if the key exists but has no associated expire.
    • getExpireTime

      public long getExpireTime()
      Description copied from interface: RExpirable
      Expiration time of Redisson object that has a timeout

      Requires Redis 7.0.0 and higher.

      Specified by:
      getExpireTime in interface RExpirable
      Returns:
      expiration time
    • getExpireTimeAsync

      public RFuture<Long> getExpireTimeAsync()
      Description copied from interface: RExpirableAsync
      Expiration time of Redisson object that has a timeout

      Requires Redis 7.0.0 and higher.

      Specified by:
      getExpireTimeAsync in interface RExpirableAsync
      Returns:
      expiration time
    • clearExpireAsync

      protected RFuture<Boolean> clearExpireAsync(String... keys)