Commit 5442642
Support Server-assisted Client-side Caching (#3757)
* Initial support for client-side caching (#3658)
* 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
* Fix transaction failure tests using mock (#3683)
Now we have to mock Protocol#read(RedisInputStream, ClientSideCache) instead of Protocol#read(RedisInputStream).
* 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
* 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
* Cover Redis commands for client side caching (#3702)
* 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
* Test GuavaCSC and CaffeineCSC (#3742)
* 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
* Introduce interface(s) for hashing CommandObject (#3743)
* Client-side cache related naming changes (#3758)
Changes:
1. CommandLongHashing is renamed to CommandLongHasher.
2. Expanded the names of GuavaCSC (GuavaClientSideCache) and CaffeineCSC (CaffeineClientSideCache).
* Reformat clientSideCache variable names (#3761)
* Format tabs in pom.xml
* Use Experimental annotation
* Fix client side cache tests (#3799)
Due to redis/redis#13167
* Fix JedisClusterClientSideCacheTest
* Fix JedisSentineledClientSideCacheTest
* Remove openhft hashing from source dependency (#3800)
* Test different functionalities of client side cache (#3828)
* Test JedisURIHelper#getClientSideCache(URI) (#3835)
* Merge fix: after introducing EndpointConfig in #3836
* Tweak maximumSize test in CaffeineClientSideCacheTest
* Little more tweak maximumSize test in CaffeineClientSideCacheTest
* Fix incompatibilities with the latest RedisStack (#3855)
* Fix tests
- Skip Graph tests
- Fix JSON RESP3 test
* JSON.GET behaves identically on RESP2 and RESP3
* Revert "Fix incompatibilities with the latest RedisStack (#3855)"
This reverts commit 6b9d338.
* [TEMPORARY] [TEST] Use redis-stack-server:7.4.0-rc1 image for testing
* 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)
* Support FLOAT16 and BFLOAT16 VecSim storage types (#3849)
* Test: INTERSECTS and DIJOINT conditions support in GeoSearch (#3862)
* 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
* Polish #3860: Separate params for TS.INCRBY and TS.DECRBY (#3863)
* Support indexing of MISSING and EMPTY values (#3866)
* Little tweak maximumSize test in CaffeineClientSideCacheTest
* Inject ClientSideCacheable via set method (#3882)
* Use CommandObject(s) as cache-key (#3875)
and remove hashing of CommandObject(s).
* #3886 merge fix
* Revert "[TEMPORARY] [TEST] Use redis-stack-server:7.4.0-rc1 image for testing"
This reverts commit 92c09f3.
* More tweak maximumSize test in CaffeineClientSideCacheTest
This reverts and modifies commit 3534996.
* Remove client side cache support through uri/url (#3892)
This partially reverts #3703 and #3835
* Bump com.google.guava:guava from 33.0.0-jre to 33.2.1-jre (#3893)
* 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
* 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
* 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
* Use ExecutorService.shutdownNow() in tests (#3922)
* Use ExecutorService.shutdownNow()
* More ExecutorService.shutdownNow() and other changes
* [minor change] Avoid creating same CacheKey twice
* Support caching null values (#3939)
* caching null results
* add more assertion
* 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 <[email protected]>
* Polish "Adding CacheConfig"
Polish #3919 - address some pending change requests
- Swap contructor placements
- Fix grammar in exception message
* 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
* 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
---------
Co-authored-by: Igor Malinovskiy <[email protected]>
Co-authored-by: atakavci <[email protected]>1 parent d22df4b commit 5442642
File tree
59 files changed
+3491
-170
lines changed- src
- main/java/redis/clients/jedis
- annots
- args
- csc
- util
- exceptions
- mcf
- providers
- util
- test/java/redis/clients/jedis
- benchmark
- commands/jedis
- csc
- modules/search
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
59 files changed
+3491
-170
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
75 | 75 | | |
76 | 76 | | |
77 | 77 | | |
| 78 | + | |
| 79 | + | |
78 | 80 | | |
79 | 81 | | |
80 | 82 | | |
| |||
90 | 92 | | |
91 | 93 | | |
92 | 94 | | |
| 95 | + | |
93 | 96 | | |
94 | 97 | | |
95 | 98 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| 6 | + | |
6 | 7 | | |
| 8 | + | |
7 | 9 | | |
8 | 10 | | |
| 11 | + | |
9 | 12 | | |
10 | 13 | | |
11 | 14 | | |
| |||
17 | 20 | | |
18 | 21 | | |
19 | 22 | | |
| 23 | + | |
| 24 | + | |
20 | 25 | | |
21 | 26 | | |
22 | 27 | | |
| |||
26 | 31 | | |
27 | 32 | | |
28 | 33 | | |
| 34 | + | |
| 35 | + | |
29 | 36 | | |
30 | 37 | | |
31 | 38 | | |
| |||
127 | 134 | | |
128 | 135 | | |
129 | 136 | | |
| 137 | + | |
| 138 | + | |
130 | 139 | | |
131 | 140 | | |
132 | 141 | | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
133 | 155 | | |
134 | 156 | | |
135 | 157 | | |
| |||
178 | 200 | | |
179 | 201 | | |
180 | 202 | | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
181 | 208 | | |
182 | 209 | | |
183 | 210 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
3 | 6 | | |
4 | 7 | | |
5 | 8 | | |
| |||
17 | 20 | | |
18 | 21 | | |
19 | 22 | | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
20 | 58 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| 15 | + | |
15 | 16 | | |
16 | 17 | | |
17 | 18 | | |
| |||
31 | 32 | | |
32 | 33 | | |
33 | 34 | | |
34 | | - | |
| 35 | + | |
35 | 36 | | |
36 | 37 | | |
37 | 38 | | |
| |||
41 | 42 | | |
42 | 43 | | |
43 | 44 | | |
| 45 | + | |
| 46 | + | |
44 | 47 | | |
45 | 48 | | |
46 | 49 | | |
| |||
55 | 58 | | |
56 | 59 | | |
57 | 60 | | |
58 | | - | |
59 | | - | |
60 | | - | |
| 61 | + | |
61 | 62 | | |
62 | 63 | | |
63 | 64 | | |
| |||
373 | 374 | | |
374 | 375 | | |
375 | 376 | | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
376 | 386 | | |
377 | 387 | | |
378 | 388 | | |
379 | 389 | | |
380 | 390 | | |
381 | 391 | | |
382 | | - | |
383 | | - | |
384 | | - | |
385 | | - | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
386 | 411 | | |
387 | 412 | | |
388 | 413 | | |
| |||
404 | 429 | | |
405 | 430 | | |
406 | 431 | | |
| 432 | + | |
407 | 433 | | |
408 | 434 | | |
409 | 435 | | |
| |||
419 | 445 | | |
420 | 446 | | |
421 | 447 | | |
422 | | - | |
| 448 | + | |
423 | 449 | | |
424 | 450 | | |
425 | 451 | | |
| |||
430 | 456 | | |
431 | 457 | | |
432 | 458 | | |
433 | | - | |
| 459 | + | |
434 | 460 | | |
435 | 461 | | |
436 | 462 | | |
437 | 463 | | |
438 | | - | |
| 464 | + | |
439 | 465 | | |
440 | 466 | | |
441 | 467 | | |
| |||
447 | 473 | | |
448 | 474 | | |
449 | 475 | | |
450 | | - | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
451 | 479 | | |
452 | 480 | | |
453 | 481 | | |
| |||
492 | 520 | | |
493 | 521 | | |
494 | 522 | | |
495 | | - | |
496 | | - | |
497 | | - | |
498 | | - | |
499 | | - | |
500 | | - | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
501 | 531 | | |
502 | | - | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
503 | 539 | | |
504 | 540 | | |
505 | | - | |
506 | | - | |
507 | | - | |
508 | | - | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
509 | 544 | | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
510 | 550 | | |
511 | | - | |
512 | | - | |
513 | | - | |
514 | | - | |
515 | | - | |
516 | | - | |
517 | | - | |
518 | | - | |
519 | | - | |
520 | | - | |
521 | | - | |
522 | | - | |
523 | | - | |
524 | | - | |
525 | | - | |
526 | | - | |
527 | | - | |
528 | | - | |
529 | | - | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
530 | 555 | | |
531 | | - | |
532 | 556 | | |
533 | | - | |
534 | 557 | | |
535 | 558 | | |
| 559 | + | |
| 560 | + | |
536 | 561 | | |
537 | | - | |
538 | | - | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
539 | 573 | | |
540 | 574 | | |
541 | 575 | | |
| |||
0 commit comments