Interface RedisCacheWriter

All Superinterfaces:
CacheStatisticsProvider

public interface RedisCacheWriter extends CacheStatisticsProvider
RedisCacheWriter provides low-level access to Redis commands (SET, SETNX, GET, EXPIRE,...) used for caching.

The RedisCacheWriter may be shared by multiple cache implementations and is responsible for reading/writing binary data from/to Redis. The implementation honors potential cache lock flags that might be set.

The default RedisCacheWriter implementation can be customized with BatchStrategy to tune performance behavior.

Since:
2.0
Author:
Christoph Strobl, Mark Paluch, John Blum
  • Method Details

    • nonLockingRedisCacheWriter

      static RedisCacheWriter nonLockingRedisCacheWriter(RedisConnectionFactory connectionFactory)
      Create new RedisCacheWriter without locking behavior.
      Parameters:
      connectionFactory - must not be null.
      Returns:
      new instance of DefaultRedisCacheWriter.
    • nonLockingRedisCacheWriter

      static RedisCacheWriter nonLockingRedisCacheWriter(RedisConnectionFactory connectionFactory, BatchStrategy batchStrategy)
      Create new RedisCacheWriter without locking behavior.
      Parameters:
      connectionFactory - must not be null.
      batchStrategy - must not be null.
      Returns:
      new instance of DefaultRedisCacheWriter.
      Since:
      2.6
    • lockingRedisCacheWriter

      static RedisCacheWriter lockingRedisCacheWriter(RedisConnectionFactory connectionFactory)
      Create new RedisCacheWriter with locking behavior.
      Parameters:
      connectionFactory - must not be null.
      Returns:
      new instance of DefaultRedisCacheWriter.
    • lockingRedisCacheWriter

      static RedisCacheWriter lockingRedisCacheWriter(RedisConnectionFactory connectionFactory, BatchStrategy batchStrategy)
      Create new RedisCacheWriter with locking behavior.
      Parameters:
      connectionFactory - must not be null.
      batchStrategy - must not be null.
      Returns:
      new instance of DefaultRedisCacheWriter.
      Since:
      2.6
    • lockingRedisCacheWriter

      static RedisCacheWriter lockingRedisCacheWriter(RedisConnectionFactory connectionFactory, Duration sleepTime, RedisCacheWriter.TtlFunction lockTtlFunction, BatchStrategy batchStrategy)
      Create new RedisCacheWriter with locking behavior.
      Parameters:
      connectionFactory - must not be null.
      sleepTime - sleep time between lock access attempts, must not be null.
      lockTtlFunction - TTL function to compute the Lock TTL. The function is called with contextual keys and values (such as the cache name on cleanup or the actual key/value on put requests). Must not be null.
      batchStrategy - must not be null.
      Returns:
      new instance of DefaultRedisCacheWriter.
      Since:
      3.2
    • get

      @Nullable byte[] get(String name, byte[] key)
      Get the binary value representation from Redis stored for the given key.
      Parameters:
      name - must not be null.
      key - must not be null.
      Returns:
      null if key does not exist.
      See Also:
    • get

      @Nullable default byte[] get(String name, byte[] key, @Nullable Duration ttl)
      Get the binary value representation from Redis stored for the given key and set the given TTL expiration for the cache entry.
      Parameters:
      name - must not be null.
      key - must not be null.
      ttl - Duration specifying the expiration timeout for the cache entry.
      Returns:
      null if key does not exist or has expired.
    • put

      void put(String name, byte[] key, byte[] value, @Nullable Duration ttl)
      Write the given key/value pair to Redis and set the expiration time if defined.
      Parameters:
      name - The cache name must not be null.
      key - The key for the cache entry. Must not be null.
      value - The value stored for the key. Must not be null.
      ttl - Optional expiration time. Can be null.
    • putIfAbsent

      @Nullable byte[] putIfAbsent(String name, byte[] key, byte[] value, @Nullable Duration ttl)
      Write the given value to Redis if the key does not already exist.
      Parameters:
      name - The cache name must not be null.
      key - The key for the cache entry. Must not be null.
      value - The value stored for the key. Must not be null.
      ttl - Optional expiration time. Can be null.
      Returns:
      null if the value has been written, the value stored for the key if it already exists.
    • remove

      void remove(String name, byte[] key)
      Remove the given key from Redis.
      Parameters:
      name - The cache name must not be null.
      key - The key for the cache entry. Must not be null.
    • clean

      void clean(String name, byte[] pattern)
      Remove all keys following the given pattern.
      Parameters:
      name - The cache name must not be null.
      pattern - The pattern for the keys to remove. Must not be null.
    • clearStatistics

      void clearStatistics(String name)
      Reset all statistics counters and gauges for this cache.
      Since:
      2.4
    • withStatisticsCollector

      RedisCacheWriter withStatisticsCollector(CacheStatisticsCollector cacheStatisticsCollector)
      Obtain a RedisCacheWriter using the given CacheStatisticsCollector to collect metrics.
      Parameters:
      cacheStatisticsCollector - must not be null.
      Returns:
      new instance of RedisCacheWriter.