Skip to content

Releases: cachewerk/relay

v0.6.0

27 Jan 17:09
74b2d28

Choose a tag to compare

Added

  • Added Relay::OPT_TCP_KEEPALIVE option
  • Added timeout(), getTimeout() and getPersistentID() methods
  • Added addIgnorePatterns() and addAllowPatterns() methods
  • Added ACL support
  • Added XADD, XACK, XREAD, XREADGROUP, XINFO, XGROUP and XDEL support
  • Added XCLAIM, XAUTOCLAIM, XRANGE, XREVRANGE, XLEN, XTRIM and XPENDING support
  • Added GEOADD, GEOHASH, GEODIST, GEOSEARCH and GEOSEARCHSTORE support
  • Added GEORADIUS, GEORADIUS_RO, GEORADIUSBYMEMBER and GEORADIUSBYMEMBER_RO support
  • Added PFADD, PFMERGE, and PFCOUNT support
  • Added FUNCTION, FCALL and FCALL_RO support

Changed

  • Reworked memory allocation and heartbeats to be more robust
  • More robust error handling and diagnostics
  • Implemented retry logic for background metadata
  • Various minor bug fixes and optimizations

Fixed

  • Fixed a leak when calling connect() more than once
  • Fixed a rare bug where that caused stale data
  • Fixed BITCOUNT against a NIL key

v0.5.1

09 Dec 03:14
0b8788e

Choose a tag to compare

Added

  • Added Relay\KeyType enum
  • Added Relay\Attributes\{Local, Server, Http, RedisCommand, Cached} method attributes
  • Added BITOP support
  • Added SORT and SORT_RO support
  • Added WAIT, MIGRATE, REPLICAOF and SLOWLOG support

Changed

  • Log key invalidations at debug level
  • Minor refactoring and optimizations

Fixed

  • Fixed INFO reply handler when given an invalid section

v0.5.0

24 Nov 02:38
24a9abd

Choose a tag to compare

Added

  • Added Relay::VERSION constant
  • Added Relay\Sentinel implementation
  • Added LMPOP, ZMPOP, BLMPOP and BZMPOP support
  • Added ZRANGESTORE, TOUCH, EVAL_RO and EVALSHA_RO support
  • Added network I/O statistics
  • Added getBytes() and clearBytes() methods
  • Added _compress() and _uncompress() methods
  • Support multiple INFO segments
  • Support BIT|BYTE modifier for BITPOS
  • Support all EXPIRE options

Changed

  • Various performance improvements
  • Switched to single key invalidation
  • Renamed RELAY_SCAN_* class constants to SCAN_*
  • Renamed memory() to maxMemory()

Fixed

  • Added #[\SensitiveParameter] to stubs
  • Fixed non-zero terminated JSON encoding issue
  • Support negative Zstandard compression levels

v0.4.6

10 Oct 17:55
22669ab

Choose a tag to compare

⚠️ If you're not using one of the official Relay packages, be sure to switch to the new Nil UUID injection.

Added

  • Added PUBLISH, CONFIG and COMMAND support
  • Added HRANDFIELD, BITCOUNT, LPOS, EXPIRETIME and MOVE support
  • Allow the in-memory cache to be disabled per Relay instance
  • Allow the in-memory cache to be disabled globally by setting relay.maxmemory = 0
  • Added memory() that returns the total allocated cache size
  • Reintroduce socketId() method

Changed

  • Several internal changes to prepare for PHP 8.2
  • Switched to UUID v7 for runtimes and Nil UUID as placeholder

Fixed

  • Fixed a bug in EXISTS where the first key was accidentally skipped internally
  • Fixed LRANGE bug that was erroneously changing the end range if we already had the length cached locally
  • Fixed a bug when forked child would erroneously free data owned by its parent

v0.4.5

07 Sep 19:56
26a6308

Choose a tag to compare

Changed

  • Configured Relay to use link time optimization
  • Optimized various internals including RESP command construction and cache lookups

Fixed

  • Fixed logic that keeps track of concurrently running requests

v0.4.4

05 Aug 19:13
3d348f4

Choose a tag to compare

Added

  • Added basic support for exponential backoff
  • Added OPT_BACKOFF_ALGORITHM, OPT_BACKOFF_BASE and OPT_BACKOFF_CAP support

Changed

  • Made error handling more robust and useful
  • Improved warm cache read performance by ~5% percent by avoiding setjmp overhead
  • Made memory allocator slightly faster with designated tree node initializer struct

Fixed

  • Fixed database recycling logic
  • Fixed edge-case error conditions
  • Prevented a rare bug in Redis' PUSH messages when flushing in transactions
  • Prevent setting TCP_KEEPALIVE on unix sockets
  • Various stub fixes and improvements

Removed

  • Removed legacy password handling

v0.4.3

02 Jul 16:33
c292f0a

Choose a tag to compare

Fixed

  • Fixed more libanl links for some builds

v0.4.2

29 Jun 21:28
639e587

Choose a tag to compare

Added

  • Added Relay::client() method
  • Added Relay::OPT_ALLOW_PATTERNS option
  • Added class constants to stubs
  • Added ZTS and OpenSSL 3.0 builds for Debian/Ubuntu

Changed

  • Speed up Zstandard operations
  • Throw exception for NOPERM errors
  • Made interaction with shared endpoints more efficient when using ACLs

Fixed

  • Fixed TLS connection issue
  • Fixed rare memory leak

v0.4.1

10 Jun 14:47
5dcabcb

Choose a tag to compare

Fixed

  • Fixed passing through compression level
  • Fixed libanl links for some builds
  • Wait for getaddrinfo_a on shutdown

v0.4.0

08 Jun 23:47
dd86e9c

Choose a tag to compare

This release is a massive architectural rewrite with hundreds of internal changes. To make Relay more resilient and even faster, the server-side worker thread was removed in favor of serverless approach and per-connection invalidations with partially-shared in-memory caches. Additionally, unlicensed binaries will now run at full memory capacity for an hour before gracefully scaling down to the default limit.

Added

  • Added pexpire() and pexpireat() methods
  • Added _pack() and _unpack() helpers
  • Added pconnect(), close() and pclose()

Changed

  • Updated relay.ini stub to match new architecture
  • Added $connectionId parameter to flushMemory()
  • socketKey() is now called endpointId()
  • Switched to xxHash rather than dbj2 and fnv1a
  • Use asynchronous DNS resolution

Removed

  • Removed socketId() method
  • libev dependency is no longer required