Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support Server-assisted Client-side Caching #3757

Merged
merged 71 commits into from
Sep 27, 2024
Merged

Support Server-assisted Client-side Caching #3757

merged 71 commits into from
Sep 27, 2024

Commits on Dec 28, 2023

  1. Configuration menu
    Copy the full SHA
    da9c463 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    0ca0dd1 View commit details
    Browse the repository at this point in the history

Commits on Jan 1, 2024

  1. Configuration menu
    Copy the full SHA
    5fa2c80 View commit details
    Browse the repository at this point in the history

Commits on Jan 8, 2024

  1. Support for client-side caching - phase 2 (#3673)

    * Code re-use?
    
    * Stop forcing to read push notifications before checking cache and remove BCAST
    
    * Rename variable
    
    * Remove ensureFillSafe()
    
    * Refactor peeking and reading push notifications
    
    * Cleanup comments
    sazzad16 authored Jan 8, 2024
    Configuration menu
    Copy the full SHA
    89617c9 View commit details
    Browse the repository at this point in the history

Commits on Jan 10, 2024

  1. Configuration menu
    Copy the full SHA
    6d4930f View commit details
    Browse the repository at this point in the history

Commits on Jan 11, 2024

  1. Fix transaction failure tests using mock (#3683)

    Now we have to mock Protocol#read(RedisInputStream, ClientSideCache) instead of Protocol#read(RedisInputStream).
    sazzad16 authored Jan 11, 2024
    Configuration menu
    Copy the full SHA
    fca975f View commit details
    Browse the repository at this point in the history

Commits on Jan 17, 2024

  1. Configuration menu
    Copy the full SHA
    d87fc6e View commit details
    Browse the repository at this point in the history
  2. Support client-side caching from UnifiedJedis (#3691)

    * Support client side caching from UnifiedJedis
    
    * Support client side caching as a separate parameter
    
    * format imports
    
    * Support CSC in sentinel mode
    
    * undo change
    sazzad16 authored Jan 17, 2024
    Configuration menu
    Copy the full SHA
    3ab6bdc View commit details
    Browse the repository at this point in the history

Commits on Feb 15, 2024

  1. Client-side caching by hashing command arguments (#3700)

    * Support TTL in client side caching (using Caffeine library)
    
    * Also Guava cache
    
    * format pom.xml
    
    * Client-side caching by command arguments
    
    TODO: Compute hash code.
    
    * send keys
    
    * todo comment for clean-up
    
    * rename method to invalidate
    
    * Client-side caching by hashing command arguments
    
    * Hash command arguments for CaffeineCSC using OpenHFT hashing
    
    * Clean-up keyHashes map
    
    * added javadoc
    
    * rename method
    
    * remove lock
    
    * descriptive name
    
    * descriptive names and fix
    
    * common default values in base class
    sazzad16 authored Feb 15, 2024
    Configuration menu
    Copy the full SHA
    5f1d8c6 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    4cada22 View commit details
    Browse the repository at this point in the history
  3. Support Client-side caching through URI/URL (#3703)

    * Support Client-side caching through URI/URL
    
    * check idx of '=' sign
    
    * nicer exception
    
    * edit/fix condition
    
    * rename param
    
    * Throw IllegalArgumentException at all such cases
    sazzad16 authored Feb 15, 2024
    Configuration menu
    Copy the full SHA
    2480b02 View commit details
    Browse the repository at this point in the history

Commits on Feb 28, 2024

  1. Configuration menu
    Copy the full SHA
    26606b9 View commit details
    Browse the repository at this point in the history

Commits on Mar 6, 2024

  1. Support white-list and black-list commands and keys (#3755)

    * Create csc package
    
    * Create csc.util package
    
    * Create a config interface for client-side caching
    
    * Default isCacheable
    
    * Config to WhiteList/BlackList commands and String keys
    
    * Create csc test package(s)
    
    * Test white-list/black-list commands and keys
    
    * Merge fix
    
    * Remove csc.util package
    
    * Fix javadoc links
    
    * Added ClientSideCacheable interface and removed ClientSideCacheConfig interface
    
    * Format imports
    
    * Re-create csc.util package
    
    * Rename to allow/deny instead of white/black
    sazzad16 authored Mar 6, 2024
    Configuration menu
    Copy the full SHA
    333dcd7 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    e66f498 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    c02e5be View commit details
    Browse the repository at this point in the history

Commits on Mar 10, 2024

  1. Client-side cache related naming changes (#3758)

    Changes:
    1. CommandLongHashing is renamed to CommandLongHasher.
    2. Expanded the names of GuavaCSC (GuavaClientSideCache) and CaffeineCSC (CaffeineClientSideCache).
    sazzad16 authored Mar 10, 2024
    Configuration menu
    Copy the full SHA
    1651b26 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    b897094 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    dc35d45 View commit details
    Browse the repository at this point in the history

Commits on Mar 21, 2024

  1. Format tabs in pom.xml

    sazzad16 authored Mar 21, 2024
    Configuration menu
    Copy the full SHA
    a2f5d16 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    39fc618 View commit details
    Browse the repository at this point in the history

Commits on Mar 27, 2024

  1. Configuration menu
    Copy the full SHA
    6a488b6 View commit details
    Browse the repository at this point in the history
  2. Use Experimental annotation

    sazzad16 committed Mar 27, 2024
    Configuration menu
    Copy the full SHA
    a4737e0 View commit details
    Browse the repository at this point in the history

Commits on Apr 3, 2024

  1. Configuration menu
    Copy the full SHA
    b7881ac View commit details
    Browse the repository at this point in the history

Commits on Apr 4, 2024

  1. Fix client side cache tests (#3799)

    Due to redis/redis#13167 
    
    * Fix JedisClusterClientSideCacheTest
    
    * Fix JedisSentineledClientSideCacheTest
    sazzad16 authored Apr 4, 2024
    Configuration menu
    Copy the full SHA
    767fc01 View commit details
    Browse the repository at this point in the history

Commits on Apr 5, 2024

  1. Configuration menu
    Copy the full SHA
    3bd45a4 View commit details
    Browse the repository at this point in the history

Commits on Apr 29, 2024

  1. Configuration menu
    Copy the full SHA
    bb99c16 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    82c0226 View commit details
    Browse the repository at this point in the history

Commits on May 6, 2024

  1. Configuration menu
    Copy the full SHA
    6a1dfc8 View commit details
    Browse the repository at this point in the history

Commits on May 7, 2024

  1. Configuration menu
    Copy the full SHA
    27e1553 View commit details
    Browse the repository at this point in the history

Commits on Jun 6, 2024

  1. Configuration menu
    Copy the full SHA
    e45e4a7 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    103575d View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    a347d7c View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    11ce88e View commit details
    Browse the repository at this point in the history
  5. Fix incompatibilities with the latest RedisStack (#3855)

    * Fix tests
    
    - Skip Graph tests
    - Fix JSON RESP3 test
    
    * JSON.GET behaves identically on RESP2 and RESP3
    uglide authored Jun 6, 2024
    Configuration menu
    Copy the full SHA
    6b9d338 View commit details
    Browse the repository at this point in the history

Commits on Jun 7, 2024

  1. Configuration menu
    Copy the full SHA
    a0b0c59 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    8310408 View commit details
    Browse the repository at this point in the history

Commits on Jun 10, 2024

  1. Configuration menu
    Copy the full SHA
    dbc6e4f View commit details
    Browse the repository at this point in the history

Commits on Jun 13, 2024

  1. Configuration menu
    Copy the full SHA
    92c09f3 View commit details
    Browse the repository at this point in the history
  2. Support RediSearch DIALECT 5 (#3831)

    - [x] Avoid escaping at query time
    - [ ] Alias for tag fields (EXACT)
    - [x] Avoid repeating for numeral equality
    - [x] New dialect (5)
    sazzad16 authored Jun 13, 2024
    Configuration menu
    Copy the full SHA
    33d4771 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    7c898b8 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    ef79d54 View commit details
    Browse the repository at this point in the history

Commits on Jun 14, 2024

  1. Support IGNORE and other optional arguments for timeseries commands (#…

    …3860)
    
    * Re-implement TS.ADD command with optional arguments
    * Implement TS.INCRBY and TS.DECRBY commands with optional arguments
    * Support IGNORE argument for TS.[ CREATE | ALTER | ADD | INCRBY | DECRBY] commands
    
    ---
    
    * Cover optional arguments for timeseries commands
       - Re-implement TS.ADD command with optional arguments
       - Implement TS.INCRBY and TS.DECRBY commands with optional arguments
    
    * Introduce EncodingFormat enum for <COMPRESSED|UNCOMPRESSED>
    
    * Support IGNORE option
       and rename to TSIncrOrDecrByParams
    sazzad16 committed Jun 14, 2024
    Configuration menu
    Copy the full SHA
    ac18fd0 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    5cba18c View commit details
    Browse the repository at this point in the history

Commits on Jun 15, 2024

  1. Configuration menu
    Copy the full SHA
    f136c6f View commit details
    Browse the repository at this point in the history

Commits on Jun 30, 2024

  1. Configuration menu
    Copy the full SHA
    3534996 View commit details
    Browse the repository at this point in the history

Commits on Jul 4, 2024

  1. Configuration menu
    Copy the full SHA
    819447c View commit details
    Browse the repository at this point in the history
  2. Use CommandObject(s) as cache-key (#3875)

    and remove hashing of CommandObject(s).
    sazzad16 authored Jul 4, 2024
    Configuration menu
    Copy the full SHA
    a89b2a9 View commit details
    Browse the repository at this point in the history

Commits on Jul 15, 2024

  1. Configuration menu
    Copy the full SHA
    fb75443 View commit details
    Browse the repository at this point in the history
  2. #3886 merge fix

    sazzad16 committed Jul 15, 2024
    Configuration menu
    Copy the full SHA
    3d9c09e View commit details
    Browse the repository at this point in the history
  3. Revert "[TEMPORARY] [TEST] Use redis-stack-server:7.4.0-rc1 image for…

    … testing"
    
    This reverts commit 92c09f3.
    sazzad16 committed Jul 15, 2024
    Configuration menu
    Copy the full SHA
    1c12fdd View commit details
    Browse the repository at this point in the history
  4. More tweak maximumSize test in CaffeineClientSideCacheTest

    This reverts and modifies commit 3534996.
    sazzad16 committed Jul 15, 2024
    Configuration menu
    Copy the full SHA
    fed9aaf View commit details
    Browse the repository at this point in the history
  5. Remove client side cache support through uri/url (#3892)

    This partially reverts #3703 and #3835
    sazzad16 authored Jul 15, 2024
    Configuration menu
    Copy the full SHA
    94a2523 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    25ca055 View commit details
    Browse the repository at this point in the history

Commits on Jul 17, 2024

  1. Configuration menu
    Copy the full SHA
    148d4bb View commit details
    Browse the repository at this point in the history

Commits on Jul 25, 2024

  1. Prepare client side caching - design 2 (#3889)

    * Separate CacheConnection
    
    * Introduce CacheKey and CacheEntry
    
    * Little tweak maximumSize test in CaffeineClientSideCacheTest
    
    * Remove resetting timeout; we'll PING instead
    sazzad16 authored Jul 25, 2024
    Configuration menu
    Copy the full SHA
    8b83218 View commit details
    Browse the repository at this point in the history

Commits on Aug 13, 2024

  1. Refactor Client-Side Caching implementation (#3900)

    * adding a DataProvider to access connection from cache
    
    * resolve keys from commandarguments
    
    * clean up in unifiiedjedis and add csc test with ssl
    
    * - fix readtimeout exception with sockets for consuming invalidations pending in buffer
    - apply a default list of cacheable commands to DefaultClientSideCacheable
    - fix failing unit tests with cacheable / non-cacheable keys
    - remove formatting changes
    
    * - add serialization for cache instances
    - add unit test with UnifiedJedis
    - add benchmark for CSC execution
    - clean unused imports
    
    * - added 'Cache' interface and 'DefaultCache' implementation in regard to design doc
    - added 'EvictionPolicy' interface and LRU implementation
    - move cache object validation and cache control stuf from 'ClientSideCache' into 'CacheConnection'
    - make guava and caffeine caches experimental
    
    * - added SSLSocketWrapper and plug it to use 'available'
    - handle exceptions properly
    - fix some issues with unit tests
    
    * implementing thread safety
    
    * - fix eviction issue and add related test
    - fix consuming invalidation messages on a response read
    - introduce cachestats
    - fix potential issue with cacheKeysRelatedtoRedisKey cleanup
    - tests for sequential access, concurrent acces and maxsize
    
    * - renmae abstract cache class
    - add test case for returning new instance of cache object
    
    * - change order of execution in sequential acces test
    
    * -  flush the cache on any disconnect
    - replace LRU policy references with EvictionPolicy interface
    -  add some constructor overloads to enable custom eviction policies on cache
    
    * fix testcache
    
    * fix javadoc issue
    
    * - fix multithreaded eviction policy issue
    - update guava and caffeine implementations according to abstract cache
    atakavci authored Aug 13, 2024
    Configuration menu
    Copy the full SHA
    229399f View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    f78fc08 View commit details
    Browse the repository at this point in the history

Commits on Aug 15, 2024

  1. Jedis test plan coverage for CSC (#3918)

    * initial changes
    
    * cover tests for JedisPooled and functionality
    
    * fix javadoc
    
    * cover new tests for JedisCluster and JedisSentineled
    
    * Fix CSC allow-and-deny-list and rename Cacheable interface
    
    * Tag CommandArguments#getKeys() as Internal
    
    * cover lruEvictionTest
    
    * Address code reviews and more updates
    
    * fix format and more minor changes
    
    * format Connection
    
    * modify WeakReference usage
    sazzad16 authored Aug 15, 2024
    Configuration menu
    Copy the full SHA
    9bddabd View commit details
    Browse the repository at this point in the history
  2. Use ExecutorService.shutdownNow() in tests (#3922)

    * Use ExecutorService.shutdownNow()
    
    * More ExecutorService.shutdownNow() and other changes
    sazzad16 authored Aug 15, 2024
    Configuration menu
    Copy the full SHA
    6707327 View commit details
    Browse the repository at this point in the history

Commits on Aug 21, 2024

  1. Configuration menu
    Copy the full SHA
    6ffdcba View commit details
    Browse the repository at this point in the history

Commits on Aug 25, 2024

  1. Configuration menu
    Copy the full SHA
    eb7e9fe View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    747e391 View commit details
    Browse the repository at this point in the history

Commits on Aug 28, 2024

  1. Support caching null values (#3939)

    * caching null results
    
    * add more assertion
    atakavci authored Aug 28, 2024
    Configuration menu
    Copy the full SHA
    e96e2e3 View commit details
    Browse the repository at this point in the history
  2. Adding CacheConfig (#3919)

    * add cacheconfig
    
    * remove empty file
    
    * -modify constructors with cache as public
    - trim guava caffeine
    
    * remove cachetype
    
    * - add getCache to UnifiedJedis
    - add builder method to CacheConfig
    
    * add evictionpolicy to cacheconfig
    
    * - unifiedjedis constructor with cacheconfig
    -  wrap IOException on protocol read error
    
    * fix merge issue
    
    ---------
    
    Co-authored-by: M Sazzadul Hoque <7600764+sazzad16@users.noreply.github.com>
    atakavci and sazzad16 authored Aug 28, 2024
    Configuration menu
    Copy the full SHA
    88cf9bc View commit details
    Browse the repository at this point in the history
  3. Polish "Adding CacheConfig"

    Polish #3919 - address some pending change requests
    
    - Swap contructor placements
    - Fix grammar in exception message
    sazzad16 committed Aug 28, 2024
    Configuration menu
    Copy the full SHA
    1d213bb View commit details
    Browse the repository at this point in the history

Commits on Aug 29, 2024

  1. Adding Cache class to CacheConfig (#3942)

    * adding cacheclass to cacheconfig
    
    * - add cachefactory test
    
    * - revert connection ctors to public
    - udpate some tests with UnifiedJedis.getCache
    - add ping to flaky tests
    
    * remove unnecessary anonymous types
    
    * change ctor access modifiers
    
    * fix test name
    
    * make cachefactory methods static
    
    * removing pings  due to still flaky with inv messages
    
    * - drop CustomCache in tests and use TestCache
    - check null cacheable issue with defaultcache
    - support both ctors in custom cache classes regarding to value of cacheconfig.cacheable
    
    * remove unncessary maxsize
    
    * - remove inline anonymious
    atakavci authored Aug 29, 2024
    Configuration menu
    Copy the full SHA
    ce210ea View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    d369cf6 View commit details
    Browse the repository at this point in the history

Commits on Sep 18, 2024

  1. Server version check for CSC activation (#3954)

    * checking server version for CSC
    
    * fix format change
    
    * fix noauth hello exception in integration tests
    
    * fix version check
    
    * remove redundant check
    
    * remove unused imports
    
    * 'toString' for Version
    
    * rename to RedisVersion
    
    * moving RedisVersion package
    atakavci authored Sep 18, 2024
    Configuration menu
    Copy the full SHA
    b94fdf2 View commit details
    Browse the repository at this point in the history

Commits on Sep 23, 2024

  1. Configuration menu
    Copy the full SHA
    da236cf View commit details
    Browse the repository at this point in the history

Commits on Sep 27, 2024

  1. Configuration menu
    Copy the full SHA
    fcde2ff View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    ec6ca7b View commit details
    Browse the repository at this point in the history