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 writing / reading binary data to / from 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
  • 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
    • put

      void put(String name, byte[] key, byte[] value, @Nullable Duration ttl)
      Write the given key/value pair to Redis an 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.
    • 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.
    • 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.