Releases: phpredis/phpredis
6.3.0
[6.3.0] - 2025-11-06 (Github, PECL)
This release introduces support for dozens of new commands, including has field expiration, Valkeyβs DELIFEQ, and Redis vector set commands. It also includes many bug fixeaand performance improvements.
Sponsors π
- A-VISION
- Avtandil Kikabidze
- Geoffrey Hoffman
- Object Cache Pro for WordPress
- Open LMS
- Relay
- Salvatore Sanfilippo
- Ty Karok
Fixed since 6.3.0RC1
- Cloning our objects should not segfault 770034cc (michael-grunder)
- Fix return type for
RedisClustervgetattrandvsetattr834d2b37 (michael-grunder)
6.3.0RC1
This release introduces support for dozens of new commands, including hash field expiration, Valkeyβs DELIFEQ, and Redis vector set operations. It also delivers numerous bug fixes and performance improvements.
Sponsors π
- A-VISION
- Avtandil Kikabidze
- Geoffrey Hoffman
- Object Cache Pro for WordPress
- Open LMS
- Relay
- Salvatore Sanfilippo
- Ty Karok
Fixed
- Fix possible hash field name truncation 834d2b37 (michael-grunder)
- Fix a possible segfault during failover 5ebb853e (rlerdorf)
- Bump version and fix XGROUP test f5db01b7, 4517d5f9 (remicollet)
- Fix an overflow bug in ZADD on Windows 35df8ad7 (michael-grunder)
- Fix errors and a warning b8de91c9 (michael-grunder)
- Fix
RedisClustersegfault f61e8cd7 (michael-grunder) - Fix passing NULL for hash expiry argument ca80ee0e (michael-grunder)
- Fix an off-by-one length calculation error 340f23b0 (michael-grunder)
- Fix hset fields handling 6b2f088d (yatsukhnenko)
- Fix HSetEx expiry argument handling 7805da75 (yatsukhnenko)
- Fix the echo liveness check when in sentinel mode 2acab399 (michael-grunder)
- Fix double -> int truncation warning 152fdda9 (michael-grunder)
- Fix
SIGABRTin PHP 8.4 with RedisArray 3c64b33f (Novynn) - Fixing segfault in cluster_update_slot b0ba827b (JacobBrownAustin)
- Fix typo d0b0c5cf (michael-grunder)
- Fix compiling with PHP 8.5.0 alpha3 and newer 1e6f5477 (wyattoday)
- Fix error length calculation + UB sanity check e73130fe (michael-grunder)
- Fix arguments order for
SETcommand f73f5fcc (yatsukhnenko)
Added
- Add
hgetwithmetamethod 7d3b2e4d (Pavlo Yatsukhnenko) - Add
maxRetriestoredis_sock_configuree9e9e495 (michael-grunder) - Implement vectorset commands 92dd256f, d80b7258, 7f9b1f41, 92716ed0, dc91631b, 1deca628, 96378b70, 0fda9f29, 0ed0fc05, d1d69005, 286fa630, 38115dec, c4b2ea6c, 6ce3bd53 (michael-grunder)
- Implement
GEOSEARCH[STORE]BYPOLYGON8d369f4d, f24814a4 (michael-grunder) - Implement Valkey's
DELIFEQcommand b1b0c191 (michael-grunder) - Add an INI setting returning 5.x legacy behavior -- readonly session on lock failure 8dada174 (arokettu)
- Implement several hash expiration commands 7350768c (michael-grunder)
- Introduce
Redis::serverNameandRedis::serverVersionmethods 056c2dbe cbaf095f
fa3eb006 (yatsukhnenko) (michael-grunder) - New option 'database' for Redis class constructor 4f6a3ed1 (JakubOnderka)
- Implement
HGETEX,HSETEX,HGETDEL, and refactorHMGETce5b0fac (michael-grunder) - Implement
GETDELforRedisClusterd342e4ac (michael-grunder)
Changed
- Check for
dragonfly_versioninHELLOresponse 593ba012 (michael-grunder) - Simplify redis_unpack method calling 0a85bd82 (JakubOnderka)
- Refactor
getWithMetalogic 0445e683 (michael-grunder) - cleanup session temp file 3828c929 (remicollet)
- Make execHello protected 300c5fb2 (michael-grunder)
Documentation
- Update Relay sponsorship 7a69d73 (tillkruss)
- Fix markdown headlines 1d662f56 (tillkruss)
- document PECL configure options 2066cfad (tillkruss)
- Improve wording in README about project support 0ac01476 (tillkruss)
- Improve install instructions c0076036 (remicollet)
- Clean up README.md: fix typos, spelling, and grammar errors 09cd4c54 (Copilot)
- Refine parameter descriptions and examples in README f9f609e1 ([joshtrichards](https://github....
6.2.0
Sponsors π
-
Special thanks to Jakub Onderka for nearly two dozen performance improvements in this release!
Fixed
- Fix arguments order for
SETcommand f73f5fc (Pavlo Yatsukhnenko) - Fix error length calculation and UB sanity check e73130fe (michael-grunder)
- Invalidate slot cache on failed cluster connections c7b87843 (James Kennedy)
- Don't cast a uint64_t to a long faa4bc20 (michael-grunder)
- Fix potential NULL dereference 43e6cab8 (peter15914)
- Print cursor as unsigned 64 bit integer 138d07b6 (Bentley O'Kane-Chase)
- Fix XAUTOCLAIM argc when sending COUNT 0fe45d24 (michael-grunder)
Added
- Added
serverName()andserverVersion()introspection methods 056c2dbe cbaf095f fa3eb006 (Pavlo Yatsukhnenko) (michael-grunder) - Added
getWithMetamethod 9036ffca (Pavlo Yatsukhnenko) - Implement
GETDELcommand for RedisCluster d342e4ac (michael-grunder) - Introduce
Redis::OPT_PACK_IGNORE_NUMBERSoption f9ce9429 29e5cf0d (michael-grunder) - Implement Valkey >= 8.1
IFEQSEToption a2eef77f (michael-grunder) - Implement KeyDB's EXPIREMEMBER[AT] commands 4cd3f593 (michael-grunder)
- Set priority to 60 (for PIE installations) 9e504ede (Pavlo Yatsukhnenko)
Documentation
- Fix phpdoc type of
$pattern5cad2076 (OHZEKI Naoki) - Better documentation for the
$tlsOptionsparameter of RedisCluster 8144db37 (Jacob Brown)
Tests/CI
- Reorganize tests 807f806f (Pavlo Yatsukhnenko)
- Add details to the option doc block abb0f6cc (michael-grunder)
- Update CodeQL to v3 41e11417 a10bca35 (Pavlo Yatsukhnenko)
- Add PHP 8.4 to CI 6097e7ba (Pavlo Yatsukhnenko)
- Pin ubuntu version for KeyDB eb66fc9e 985b0313 (michael-grunder)
- Windows CI: update setup-php-sdk to v0.10 and enable caching f89d4d8f (Christoph M. Becker)
Internal/Performance
- Reduce buffer size for signed integer 044b3038 35c59880 (Bentley O'Kane-Chase)
- Create a strncmp wrapper 085d61ec (michael-grunder)
- Refactor and avoid allocation in rawcommand method f68544f7 (JakubOnderka)
- Switch from linked list to growing array for reply callbacks a551fdc9 42a42769 (JakubOnderka) (michael-grunder)
- Reuse redis_sock_append_auth method be388562 (JakubOnderka)
- Switch pipeline_cmd from smart_str to smart_string 571ffbc8 (JakubOnderka)
- Remove unused redis_debug_response method from library.c 7895636a (JakubOnderka)
- Optimise HMGET method 2434ba29 (JakubOnderka)
- Avoid unnecessary allocation in redis_hset_cmd aba09933 (JakubOnderka)
- Avoid unnecessary allocation in redis_hdel_cmd 4082dd07 (JakubOnderka)
- Avoid unnecessary allocation in redis_key_varval_cmd 99650e15 (JakubOnderka)
- Use zval_get_tmp_string method that is faster when provided zval is string f6906470 (JakubOnderka)
- Optimise constructing Redis command string 2a2f908f (JakubOnderka)
- If no command is issued in multi mode, return immutable empty array 5156e032 (JakubOnderka)
- Test for empty pipeline and multi 426de2bb (JakubOnderka)
- Optimise method array_zip_values_and_scores 400503b8 (JakubOnderka)
- Faster parameter parsing in redis_key_cmd and redis_key_long_val_cmd 83a19656 (JakubOnderka)
- Use immutable empty array in Redis::hKeys 3a2f3f45 (JakubOnderka)
- Use immutable empty array in Redis::exec 60b5a886 (JakubOnderka)
- Do not allocate empty string or string with one character 64da891e (JakubOnderka)
- Initialize arrays with known size 99beb922 (JakubOnderka)
- Use smart str for constructing pipeline cmd b665925e ([JakubOnderka](https://github.com/Ja...
6.1.0
Sponsors
Audiomack - https://audiomack.com
Open LMS - https://openlms.net
Avtandil Kikabidze - https://github.com/akalongman
Ty Karok - https://github.com/karock
Object Cache Pro for WordPress - https://objectcache.pro
--- 6.1.0 ---
NOTE: There were no changes to C code between 6.1.0RC2 and 6.1.0
Documentation:
- Update package.xml to make it clearer that we support many key-value stores
[52e69ed] (Remi Collet) - Fix redis.io urls [0bae4bb] (Vincent Langlet)
Tests/CI:
- Fix 2 tests with redis 6.2 [cc1be32] (Remi Collet)
--- 6.1.0RC2 ---
Fixed:
- Fixed a
SIGABRTerror in PHP 8.4 [a75a7e5] (Michael Grunder) - Clean up code for unsupported versions of PHP [37cebdd] (Remi Collet)
- Add
SessionHelpers.phptopackage.xml[e9474b8] (Remi Collet) - 8.4 implicit null fix, bump version [bff3a22, 30c8f90] [Remi Collet]
Changed:
- Raised minimum supported PHP version to 7.4 [8b51942] (Michael Grunder)
Removed:
- Removed erroneously duplicated changelog entries [40c8973] (Michael Grunder)
Tests/CI:
- Move to upload artifacts v4 [9d38050] (Michael Grunder)
Added:
- Added
composer.jsonto support PIE (PHP Installer for Extensions) [b59e35a]
(James Titcumb)
--- 6.1.0RC1 ---
Fixed:
- Fix random connection timeouts with Redis Cluster. [eb7f31e] (Jozsef Koszo)
- Fix argument count issue in HSET with associative array [6ea5b3e]
(Viktor Djupsjobacka) - SRANDMEMBER can return any type because of serialization. [6673b5b]
(Michael Grunder) - Fix HRANDFIELD command when WITHVALUES is used. [99f9fd8] (Michael Grunder)
- Allow context array to be nullable [50529f5] (Michael Grunder)
- Fix a macOS (M1) compiler warning. [7de29d5] (Michael Grunder)
GETEXdocumentation/updates and implentation inRedisCluster[981c693]
(Michael Grunder)- Refactor redis_script_cmd and fix to
flushsubcommand. [7c55142]
(Pavlo Yatsukhnenko) - Update liveness check and fix PHP 8.4 compilation error. [c139de3]
(Michael Grunder) - Rework how we declare ZSTD min/max constants. [34b5bd8] (Michael Grunder)
- Fix memory leak if we fail in ps_open_redis. [0e92616] (Michael Grunder)
- Fix segfault and remove redundant macros [a9e53fd] (Pavlo Yatsukhnenko)
- Fix PHP 8.4 includes [a51215c] (Michael Grunder)
- Handle arbitrarily large
SCANcursors properly. [2612d44, e52f0af]
(Michael Grunder) - Improve warning when we encounter an invalid EXPIRY in SET [732e466]
(Michael Grunder) - Fix Arginfo / zpp mismatch for DUMP command [50e5405] (Pavlo Yatsukhnenko)
- RedisCluster::publish returns a cluster_long_resp [14f9333] (Alexandre Choura)
- Fix segfault when passing just false to auth. [6dc0a0b] (Michael Grunder)
- the VALUE argument type for hSetNx must be the same as for hSet [df074db]
(Uladzimir Tsykun) - Other fixes [e18f6c6, 3d7be35, 2b555c8, fa1a283, 37c5f8d] (Michael Grunder, Viktor Szepe)
Added:
- Compression support for PHP sessions. [da4ab0a] (bitactive)
- Support for early_refresh in Redis sessions to match cluster behavior
[b698901] (Bitactive) - Implement WAITAOF command. [ed7c9f6] (Michael Grunder)
Removed:
Changed:
- Fix the time unit of retry_interval [3fdd52b] (woodong)
Documentation:
- Many documentation fixes. [eeb5109] (Michael Dwyer)
- fix missing code tags [f865d5b] (divinity76)
- Mention Valkey support [5f1eecf] (PlavorSeol)
- Mention KeyDB support in README.md [37fa359] (Tim Starling)
- Remove mention of pickle [c7a73ab] (David Baker)
- Add session.save_path examples [8a39cae] (Martin Vancl)
- Tighter return types for Redis::(keys|hKeys|hVals|hGetAll) [77ab62b]
(Benjamin Morel) - Update stubs [4d23397, ff30534, 12966a7, a4a283a, 8f8ff72]
(Michael Grunder, Takayasu Oyama, Pavlo Yatsukhnenko) - Fix config.m4 when using custom dep paths [ece3f7b] (Michael Grunder)
- Fix retry_internal documentation [142c1f4] (SplotyCode)
- Fix anchor link [9b5cad3] (Git'Fellow)
- Fix typo in link [bfd379f] (deiga)
- Fix Fedora package url [60b1ba1, 717713e] (Dmitrii Kotov)
- Update Redis Sentinel documentation to reflect changes to constructor in 6.0
release [dc05d65] (Pavlo Yatsukhnenko)
Tests/CI:
- Avoid fatal error in test execution. [5730497] (Michael Grunder)
- Refactor unit test framework. [b1771de] (Michael Grunder)
- Get unit tests working in
php-cgi. [b808cc6] (Michael Grunder) - Switch to
ZEND_STRLin more places. [7050c98, f8c762e] (Michael Grunder) - Workaround weird PHP compiler crash. [d3b2d87] (Michael Grunder)
- Refactor tests (formatting, modernization, etc). [dab6a62, c6cd665, 78b70ca,
3c125b0, 18b0da7, b88e72b, 0f94d9c, 5996597, 3dbc2bd, 9b90c03, c0d6f04]
(Michael Grunder) - Spelling fixes [0d89e92] (Michael Grunder)
- Added Valkey support. [f350dc3] (Michael Grunder)
- Add a test for session compression. [9f3ca98] (Michael Grunder)
- Test against valkey [a819a44] (Michael Grunder)
- sessionSaveHandler injection. [9f8f80c] (Pavlo Yatsukhnenko)
- KeyDB addiions [54d62c7, d9c48b7] (Michael Grunder)
- Add PHP 8.3 to CI [78d1514, e051a5d] (Robert Kelcak, Pavlo Yatsukhnenko)
- Use newInstance in RedisClusterTest [954fbab] (Pavlo Yatsukhnenko)
- Use actions/checkout@v4 [f4c2ac2] (Pavlo Yatsukhnenko)
- Cluster nodes from ENV [eda3995, 0672703] (Pavlo Yatsukhnenko)
- Ensure we're talking to redis-server in our high ports test. [7825efb]
(Michael Grunder) - Add missing option to installation example [2bddd84] (Pavlo Yatsukhnenko)
- Fix typo in link [8f6bc98] (Timo Sand)
- Update tests to allow users to use a custom class. [5f6ce41] (Michael Grunder)
6.1.0RC1
PhpRedis 6.1.0RC1
See CHANGELOG.md or package.xml for full release notes.
6.0.2
- Fix deprecation error when passing null to match_type parameter. [b835aaa] (Pavlo Yatsukhnenko)
- Fix flaky test and OBJECT in a pipeline. [a7f51f7] (Michael Grunder)
- Find our callback by pattern with PSUBSCRIBE [2f276dc] (Michael Grunder)
Full Changelog: 6.0.1...6.0.2
PhpRedis 5.3.7
phpredis 5.3.7
- Fix RedisArray::[hsz]scan and tests [08a9d5d, 0264de1] (Pavlo Yatsukhnenko, Michael Grunder)
- Fix RedisArray::scan [8689ab1] (Pavlo Yatsukhnenko)
- Fix LZF decompression logic [0719c1e] (Michael Grunder)
Full Changelog: 5.3.6...5.3.7