All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.redisson.api.RMapCacheNativeRx Maven / Gradle / Ivy

There is a newer version: 3.40.2
Show newest version
/**
 * Copyright (c) 2013-2024 Nikita Koksharov
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.redisson.api;

import io.reactivex.rxjava3.core.Completable;
import io.reactivex.rxjava3.core.Maybe;
import io.reactivex.rxjava3.core.Single;
import org.redisson.api.map.MapWriter;

import java.time.Duration;
import java.util.Map;
import java.util.Set;

/**
 * Map-based cache with ability to set TTL per entry.
 * Uses Redis native commands for entry expiration and not a scheduled eviction task.
 * 

* Requires Redis 7.4.0 and higher. * * @author Nikita Koksharov * * @param key * @param value */ public interface RMapCacheNativeRx extends RMapRx, RDestroyable { /** * Stores value mapped by key with specified time to live. * Entry expires after specified time to live. *

* If the map previously contained a mapping for * the key, the old value is replaced by the specified value. * * @param key - map key * @param value - map value * @param ttl - time to live for key\value entry. * If 0 then stores infinitely. * @return previous associated value */ Maybe put(K key, V value, Duration ttl); /** * Stores value mapped by key with specified time to live. * Entry expires after specified time to live. *

* If the map previously contained a mapping for * the key, the old value is replaced by the specified value. *

* Works faster than usual {@link #put(Object, Object, Duration)} * as it not returns previous value. * * @param key - map key * @param value - map value * @param ttl - time to live for key\value entry. * If 0 then stores infinitely. * * @return true if key is a new key in the hash and value was set. * false if key already exists in the hash and the value was updated. */ Single fastPut(K key, V value, Duration ttl); /** * If the specified key is not already associated * with a value, associate it with the given value. *

* Stores value mapped by key with specified time to live. * Entry expires after specified time to live. * * @param key - map key * @param value - map value * @param ttl - time to live for key\value entry. * If 0 then stores infinitely. * * @return current associated value */ Maybe putIfAbsent(K key, V value, Duration ttl); /** * If the specified key is not already associated * with a value, associate it with the given value. *

* Stores value mapped by key with specified time to live. * Entry expires after specified time to live. *

* Works faster than usual {@link #putIfAbsent(Object, Object, Duration)} * as it not returns previous value. * * @param key - map key * @param value - map value * @param ttl - time to live for key\value entry. * If 0 then stores infinitely. * * @return true if key is a new key in the hash and value was set. * false if key already exists in the hash */ Single fastPutIfAbsent(K key, V value, Duration ttl); /** * Remaining time to live of map entry associated with a key. * * @param key map key * @return time in milliseconds * -2 if the key does not exist. * -1 if the key exists but has no associated expire. */ Single remainTimeToLive(K key); /** * Remaining time to live of map entries associated with keys. * * @param keys map keys * @return Time to live mapped by key. * Time in milliseconds * -2 if the key does not exist. * -1 if the key exists but has no associated expire. */ Single> remainTimeToLive(Set keys); /** * Associates the specified value with the specified key * in batch. *

* If {@link MapWriter} is defined then new map entries will be stored in write-through mode. * * @param map - mappings to be stored in this map * @param ttl - time to live for all key\value entries. * If 0 then stores infinitely. */ Completable putAll(java.util.Map map, Duration ttl); /** * Clears an expiration timeout or date of specified entry by key. * * @param key map key * @return true if timeout was removed * false if entry does not have an associated timeout * null if entry does not exist */ Maybe clearExpire(K key); /** * Clears an expiration timeout or date of specified entries by keys. * * @param keys map keys * @return Boolean mapped by key. * true if timeout was removed * false if entry does not have an associated timeout * null if entry does not exist */ Single> clearExpire(Set keys); /** * Updates time to live of specified entry by key. * Entry expires when specified time to live was reached. *

* Returns false if entry already expired or doesn't exist, * otherwise returns true. * * @param key map key * @param ttl time to live for key\value entry. * If 0 then time to live doesn't affect entry expiration. *

* if ttl params are equal to 0 * then entry stores infinitely. * * @return returns false if entry already expired or doesn't exist, * otherwise returns true. */ Single expireEntry(K key, Duration ttl); /** * Sets time to live of specified entry by key. * If these parameters weren't set before. * Entry expires when specified time to live was reached. *

* Returns false if entry already has expiration time or doesn't exist, * otherwise returns true. * * @param key map key * @param ttl time to live for key\value entry. * If 0 then time to live doesn't affect entry expiration. *

* if ttl params are equal to 0 * then entry stores infinitely. * * @return returns false if entry already has expiration time or doesn't exist, * otherwise returns true. */ Single expireEntryIfNotSet(K key, Duration ttl); /** * Sets time to live of specified entry by key only if it's greater than timeout set before. * Entry expires when specified time to live was reached. *

* Returns false if entry already has expiration time or doesn't exist, * otherwise returns true. * * @param key map key * @param ttl time to live for key\value entry. * If 0 then time to live doesn't affect entry expiration. *

* if ttl params are equal to 0 * then entry stores infinitely. * * @return returns false if entry already has expiration time or doesn't exist, * otherwise returns true. */ Single expireEntryIfGreater(K key, Duration ttl); /** * Sets time to live of specified entry by key only if it's less than timeout set before. * Entry expires when specified time to live was reached. *

* Returns false if entry already has expiration time or doesn't exist, * otherwise returns true. * * @param key map key * @param ttl time to live for key\value entry. * If 0 then time to live doesn't affect entry expiration. *

* if ttl params are equal to 0 * then entry stores infinitely. * * @return returns false if entry already has expiration time or doesn't exist, * otherwise returns true. */ Single expireEntryIfLess(K key, Duration ttl); /** * Updates time to live of specified entries by keys. * Entries expires when specified time to live was reached. *

* Returns amount of updated entries. * * @param keys map keys * @param ttl time to live for key\value entries. * If 0 then time to live doesn't affect entry expiration. *

* if ttl params are equal to 0 * then entries are stored infinitely. * * @return amount of updated entries. */ Single expireEntries(Set keys, Duration ttl); /** * Sets time to live of specified entries by keys only if it's greater than timeout set before. * Entries expire when specified time to live was reached. *

* Returns amount of updated entries. * * @param keys map keys * @param ttl time to live for key\value entry. * If 0 then time to live doesn't affect entry expiration. *

* if ttl params are equal to 0 * then entry stores infinitely. * * @return amount of updated entries. */ Single expireEntriesIfGreater(Set keys, Duration ttl); /** * Sets time to live of specified entries by keys only if it's less than timeout set before. * Entries expire when specified time to live was reached. *

* Returns amount of updated entries. * * @param keys map keys * @param ttl time to live for key\value entry. * If 0 then time to live doesn't affect entry expiration. *

* if ttl params are equal to 0 * then entry stores infinitely. * * @return amount of updated entries. */ Single expireEntriesIfLess(Set keys, Duration ttl); /** * Sets time to live of specified entries by keys. * If these parameters weren't set before. * Entries expire when specified time to live was reached. *

* Returns amount of updated entries. * * @param keys map keys * @param ttl time to live for key\value entry. * If 0 then time to live doesn't affect entry expiration. *

* if ttl params are equal to 0 * then entry stores infinitely. * * @return amount of updated entries. */ Single expireEntriesIfNotSet(Set keys, Duration ttl); /** * Adds object event listener * * @see org.redisson.api.listener.TrackingListener * @see org.redisson.api.listener.MapPutListener * @see org.redisson.api.listener.MapRemoveListener * @see org.redisson.api.listener.MapExpiredListener * @see org.redisson.api.ExpiredObjectListener * @see org.redisson.api.DeletedObjectListener * * @param listener object event listener * @return listener id */ Single addListener(ObjectListener listener); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy