Skip to content

Releases: cachewerk/relay

v0.20.0

26 Nov 16:31
c6c6f1a

Choose a tag to compare

Added

  • Added stable PHP 8.5 builds
  • Added ZTS builds for some distros
  • Added WAIT command to Relay\Cluster
  • Added DIGEST command
  • Added IFEQ, IFNE, IFDEQ, IFDNE SET options
  • Added DELEX command
  • Added MSETEX command
  • Added support for Dragonfly's ZDIFF WITHSCORES reply

Changed

  • ⚠️ Return Redis map as numeric array for raw commands in PhpRedis compatibility mode
  • ⚠️ Establish connections lazily in PhpRedis compatibility mode
  • Restored PHP 7.4 builds for macOS

Fixed

  • Fixed hGetWithMeta() sometimes returning incorrect value
  • Fixed reply type for VINFO command
  • Fixed a segfault caused by a null pointer dereference in Cluster

v0.12.1

15 Oct 20:43

Choose a tag to compare

Added

  • Added hgetWithMeta() method

Changed

  • Improved PhpRedis compatibility for Relay\Cluster::config()
  • Deprecated pclose() in favor of close()
  • Call SELECT 0 when stashing connections

Fixed

  • Fixed handling arguments of hsetex() method
  • Fixed arity for some vectorset commands
  • Fixed wrong reply format of raw GETEX command
  • Fixed HEXISTS when we have limited cached information about a key
  • Fixed literal reply type for SELECT and WATCH commands

v0.12.0

02 Oct 16:47
de73dc3

Choose a tag to compare

Added

  • Added VADD, VREM, VCARD, VDIM, VINFO and VSIM commands
  • Added VRANGE, VLINKS, VEMB, VISMEMBER and VRANDMEMBER command
  • Added VSETATTR and VGETATTR commands
  • Added XDELEX and XACKDEL commands
  • Added DELIFEQ command
  • Added GEOSEARCH[STORE] BYPOLYGON command option
  • Added vectorset typo constant
  • Added hgetex(), hsetex() and hgetdel() methods to Relay\Cluster

Changed

  • Improved PhpRedis compatibility for HFE commands
  • Enabled persistent connection for Relay\Cluster
  • Reduced size of build artifacts
  • Made heartbeats more resilient
  • Minor performance improvements

Fixed

  • Fixed up some stub issues
  • Fixed a couple of potential crashes

v0.11.1

22 Jul 21:24
e3767b8

Choose a tag to compare

Added

  • Added status property to Relay::$adaptiveCache
  • Added adaptive_cache endpoint information to stats()
  • Added Cluster::lastMemoryFlush() method
  • Added relay.adaptive_cache.min_(events|ratio) ini directives
  • Added isTracked() method to check if a key is tracked in-memory

Changed

  • Changed minEvents to take a negative numbers
  • Improved PHP 8.5 compatibility

Fixed

  • Fixed arity of HGETDEL command
  • Fixed a bug where the adaptive cache would clear on stashed connections
  • Fixed a segfault caused by a null pointer dereference in Cluster
  • Fixed a segfault caused by uint32_t multiplication overflow
  • Fixed handling PERSIST argument of HGETEX command
  • Fixed getWithMeta() sometimes returning incorrect length

v0.11.0

13 Jun 19:51

Choose a tag to compare

This release introduces a new adaptive caching layer to only cache keys that have a minimum read-write ratio, to avoid cache thrashing for some applications.

Added

  • Added adaptive caching layer
  • Added Pub/Sub state restoration on reconnect
  • Added cluster slot caching expiry mechanism
  • Added Valkey AZ based replica selection
  • Added Valkey PRIMARY aliases for sentinel
  • Added Valkey COMMANDLOG and CLIENT CAPA redirect command
  • Added Redis 8 Hash Field Expiration commands
  • Added Redis 8 CMS.* (Count-Min Sketch) commands
  • Added Redis 8 HGETDEL command
  • Added SCRIPT SHOW subcommand
  • Added Cluster::getdel() and Cluster::fullscan() methods
  • Added serverName() and serverVersion() connection introspection methods
  • Added database option to connection array or context argument
  • Added ValkeyCommand and Deprecated attributes to the stubs

Changed

  • Changed epoch failure from a PHP Warning to a log entry with debug level
  • The optional argument for BGSAVE now takes an arbitrary string
  • Various internal improvements

Fixed

  • Fixed a bug with loading cluster INI directives
  • Fixed relay.cap_endpoint_dbs default value
  • Fixed a bug where that sent duplicate SET expiry arguments
  • Fixed rare segfault while initialize cluster
  • Fixed rare segfault with HRANDFIELD command
  • Fixed an edge case where we weren't trying to reconnect
  • Fixed abort for subclasses with custom properties
  • Fixed using Relay\Cluster client in subscribe callback
  • Fixed relayXAutoClaimFmt to be compatible with KeyDB reply

v0.10.1

14 Feb 17:42
87e62b4

Choose a tag to compare

Added

  • Added getWithMeta() method
  • Added Relay::OPT_PACK_IGNORE_NUMBERS option
  • Added relay.cap_endpoint_dbs directive and default to true

Changed

  • Changed the default lock to adaptive-mutex where available
  • Changed PHP warnings to a debug log entries when keylock or read-tokens can't be acquired

Fixed

  • Fixed core count detection in Docker environments
  • Fixed an infinite loop in random key eviction
  • Fixed a divide by zero bug in random key eviction
  • Fixed a bug where transaction state didn't get cleared in a forked child
  • Fixed a bug with incorrect start/end indexes of cached sorted set
  • Fixed a bug when trying to read from a persistent link that is no longer accessible
  • Fixed a bug where Relay was stashing non-ready connections leading to an assertion failure

v0.10.0

29 Jan 21:38
9cae8e1

Choose a tag to compare

Added

  • Added relay.locks.* configuration directives
  • Added option Relay::OPT_CLIENT_TRACKING option

Changed

  • Switched to mutex locks by default for better performance
  • Several internal improvements and fixes

Fixed

  • Added missed context parameter to Sentinel::__construct()
  • Fixed cleaning up resources when terminated by SIGTERM or SIGQUIT
  • Fixed rare Relay\Cluster memory leaks
  • Fixed a signal reentrancy bug

v0.9.1

11 Dec 00:59
1033bcf

Choose a tag to compare

Added

  • Added PHP 8.5 compatibility and builds

Changed

  • Several internal improvements

Fixed

  • Fixed PHP 8.4 builds
  • Fixed raw ZRANGE command serialization issue
  • Fixed relay.default_pconnect not printing correct value

v0.9.0

19 Nov 18:13
ad8eb5f

Choose a tag to compare

Added

  • Added SWAPDB command
  • Added support for FT commands
  • Added Cluster::keys() method
  • Support caching TYPE command
  • Support caching of ZSET commands

Changed

  • Improved stubs and PhpRedis compatibility
  • Improved performance and reliability invalidation signal handling
  • Many internal improvements
  • Prevent getMode() and getDdNum() from triggering peridic INFO call

Fixed

  • Fixed a dozen segfaults
  • Fixed several of memory leaks
  • Fixed several issues when transactions fail
  • Fixed serialization and compression edge cases for many commands
  • Fixed many edge cases when selecting databases
  • Fixed several reply-types when PhpRedis compatibility is disabled
  • Fixed ZRANGE and PFCOUNT stubs to match PhpRedis
  • Fixed return type validation for GEODIST and GEORADIUS
  • Fixed HRANDFIELD command when WITHVALUES is used

v0.8.1

13 Jul 00:16
7f5e618

Choose a tag to compare

Added

  • Added experimental support JSON commands

Changed

  • Only enable CLIENT TRACKING on links that can secure an in-memory cache
  • Attach to in-memory caches actively not lazily
  • Improved error messages for invalid session.save_path URIs
  • Various performance, allocator and internal improvements

Fixed

  • Fixed a memory leak in the session handler
  • Improved authentication parsing in the session handler
  • Fixed Relay\Cluster command compatibility with PhpRedis
  • Don't deserialize KEYS replies
  • Various improvements for the SUBSCRIBE command-family
  • Fixed stats() array index not matching database number