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

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

Go to download

Easy Redis Java client and Real-Time Data Platform. Valkey compatible. Sync/Async/RxJava3/Reactive API. Client side caching. Over 50 Redis based Java objects and services: JCache API, Apache Tomcat, Hibernate, Spring, Set, Multimap, SortedSet, Map, List, Queue, Deque, Semaphore, Lock, AtomicLong, Map Reduce, Bloom filter, Scheduler, RPC

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 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 RMapCacheNativeAsync extends RMapAsync { /** * 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 */ RFuture putAsync(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 #putAsync(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. */ RFuture fastPutAsync(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 */ RFuture putIfAbsentAsync(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 #putIfAbsentAsync(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 */ RFuture fastPutIfAbsentAsync(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. */ RFuture remainTimeToLiveAsync(K key); RFuture> remainTimeToLiveAsync(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. */ RFuture putAllAsync(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 */ RFuture clearExpireAsync(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 */ RFuture> clearExpireAsync(Set keys); /** * Updates time to live and max idle time 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 maxIdleTime and ttl params are equal to 0 * then entry stores infinitely. * * @return returns false if entry already expired or doesn't exist, * otherwise returns true. */ RFuture expireEntryAsync(K key, Duration ttl); /** * Sets time to live and max idle time 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 maxIdleTime and 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. */ RFuture expireEntryIfNotSetAsync(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. */ RFuture expireEntryIfGreaterAsync(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. */ RFuture expireEntryIfLessAsync(K key, Duration ttl); /** * Updates time to live and max idle time 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. */ RFuture expireEntriesAsync(Set keys, Duration ttl); /** * Sets time to live and max idle time 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. */ RFuture expireEntriesIfNotSetAsync(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. */ RFuture expireEntriesIfGreaterAsync(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. */ RFuture expireEntriesIfLessAsync(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 */ RFuture addListenerAsync(ObjectListener listener); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy