org.redisson.api.RMapCacheNative Maven / Gradle / Ivy
Show all versions of redisson-all Show documentation
/**
* 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 RMapCacheNative extends RMap, RMapCacheNativeAsync {
/**
* 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
*/
V 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.
*/
boolean 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
*/
V 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
*/
boolean 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.
*/
long 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.
*/
Map 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.
*/
void putAll(java.util.Map extends K, ? extends V> 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
*/
Boolean 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
*/
Map 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
.
*/
boolean 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
.
*/
boolean 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
.
*/
boolean 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
.
*/
boolean 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.
*/
int 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.
*/
int 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.
*/
int 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.
*/
int 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
*/
int addListener(ObjectListener listener);
}