|
| 1 | +# Release Notes |
| 2 | + |
| 3 | +# 9.8.0 (2025-04-30) |
| 4 | + |
| 5 | +## 🚀 Highlights |
| 6 | +- **Redis 8 Support**: Full compatibility with Redis 8.0, including testing and CI integration |
| 7 | +- **Enhanced Hash Operations**: Added support for new hash commands (`HGETDEL`, `HGETEX`, `HSETEX`) and `HSTRLEN` command |
| 8 | +- **Search Improvements**: Enabled Search DIALECT 2 by default and added `CountOnly` argument for `FT.Search` |
| 9 | + |
| 10 | +## ✨ New Features |
| 11 | +- Added support for new hash commands: `HGETDEL`, `HGETEX`, `HSETEX` ([#3305](https://github.com/redis/go-redis/pull/3305)) |
| 12 | +- Added `HSTRLEN` command for hash operations ([#2843](https://github.com/redis/go-redis/pull/2843)) |
| 13 | +- Added `Do` method for raw query by single connection from `pool.Conn()` ([#3182](https://github.com/redis/go-redis/pull/3182)) |
| 14 | +- Prevent false-positive marshaling by treating zero time.Time as empty in isEmptyValue ([#3273](https://github.com/redis/go-redis/pull/3273)) |
| 15 | +- Added FailoverClusterClient support for Universal client ([#2794](https://github.com/redis/go-redis/pull/2794)) |
| 16 | +- Added support for cluster mode with `IsClusterMode` config parameter ([#3255](https://github.com/redis/go-redis/pull/3255)) |
| 17 | +- Added client name support in `HELLO` RESP handshake ([#3294](https://github.com/redis/go-redis/pull/3294)) |
| 18 | +- **Enabled Search DIALECT 2 by default** ([#3213](https://github.com/redis/go-redis/pull/3213)) |
| 19 | +- Added read-only option for failover configurations ([#3281](https://github.com/redis/go-redis/pull/3281)) |
| 20 | +- Added `CountOnly` argument for `FT.Search` to use `LIMIT 0 0` ([#3338](https://github.com/redis/go-redis/pull/3338)) |
| 21 | +- Added `DB` option support in `NewFailoverClusterClient` ([#3342](https://github.com/redis/go-redis/pull/3342)) |
| 22 | +- Added `nil` check for the options when creating a client ([#3363](https://github.com/redis/go-redis/pull/3363)) |
| 23 | + |
| 24 | +## 🐛 Bug Fixes |
| 25 | +- Fixed `PubSub` concurrency safety issues ([#3360](https://github.com/redis/go-redis/pull/3360)) |
| 26 | +- Fixed panic caused when argument is `nil` ([#3353](https://github.com/redis/go-redis/pull/3353)) |
| 27 | +- Improved error handling when fetching master node from sentinels ([#3349](https://github.com/redis/go-redis/pull/3349)) |
| 28 | +- Fixed connection pool timeout issues and increased retries ([#3298](https://github.com/redis/go-redis/pull/3298)) |
| 29 | +- Fixed context cancellation error leading to connection spikes on Primary instances ([#3190](https://github.com/redis/go-redis/pull/3190)) |
| 30 | +- Fixed RedisCluster client to consider `MASTERDOWN` a retriable error ([#3164](https://github.com/redis/go-redis/pull/3164)) |
| 31 | +- Fixed tracing to show complete commands instead of truncated versions ([#3290](https://github.com/redis/go-redis/pull/3290)) |
| 32 | +- Fixed OpenTelemetry instrumentation to prevent multiple span reporting ([#3168](https://github.com/redis/go-redis/pull/3168)) |
| 33 | +- Fixed `FT.Search` Limit argument and added `CountOnly` argument for limit 0 0 ([#3338](https://github.com/redis/go-redis/pull/3338)) |
| 34 | +- Fixed missing command in interface ([#3344](https://github.com/redis/go-redis/pull/3344)) |
| 35 | +- Fixed slot calculation for `COUNTKEYSINSLOT` command ([#3327](https://github.com/redis/go-redis/pull/3327)) |
| 36 | +- Updated PubSub implementation with correct context ([#3329](https://github.com/redis/go-redis/pull/3329)) |
| 37 | + |
| 38 | +## 📚 Documentation |
| 39 | +- Added hash search examples ([#3357](https://github.com/redis/go-redis/pull/3357)) |
| 40 | +- Fixed documentation comments ([#3351](https://github.com/redis/go-redis/pull/3351)) |
| 41 | +- Added `CountOnly` search example ([#3345](https://github.com/redis/go-redis/pull/3345)) |
| 42 | +- Added examples for list commands: `LLEN`, `LPOP`, `LPUSH`, `LRANGE`, `RPOP`, `RPUSH` ([#3234](https://github.com/redis/go-redis/pull/3234)) |
| 43 | +- Added `SADD` and `SMEMBERS` command examples ([#3242](https://github.com/redis/go-redis/pull/3242)) |
| 44 | +- Updated `README.md` to use Redis Discord guild ([#3331](https://github.com/redis/go-redis/pull/3331)) |
| 45 | +- Updated `HExpire` command documentation ([#3355](https://github.com/redis/go-redis/pull/3355)) |
| 46 | +- Featured OpenTelemetry instrumentation more prominently ([#3316](https://github.com/redis/go-redis/pull/3316)) |
| 47 | +- Updated `README.md` with additional information ([#310ce55](https://github.com/redis/go-redis/commit/310ce55)) |
| 48 | + |
| 49 | +## ⚡ Performance and Reliability |
| 50 | +- Bound connection pool background dials to configured dial timeout ([#3089](https://github.com/redis/go-redis/pull/3089)) |
| 51 | +- Ensured context isn't exhausted via concurrent query ([#3334](https://github.com/redis/go-redis/pull/3334)) |
| 52 | + |
| 53 | +## 🔧 Dependencies and Infrastructure |
| 54 | +- Updated testing image to Redis 8.0-RC2 ([#3361](https://github.com/redis/go-redis/pull/3361)) |
| 55 | +- Enabled CI for Redis CE 8.0 ([#3274](https://github.com/redis/go-redis/pull/3274)) |
| 56 | +- Updated various dependencies: |
| 57 | + - Bumped golangci/golangci-lint-action from 6.5.0 to 7.0.0 ([#3354](https://github.com/redis/go-redis/pull/3354)) |
| 58 | + - Bumped rojopolis/spellcheck-github-actions ([#3336](https://github.com/redis/go-redis/pull/3336)) |
| 59 | + - Bumped golang.org/x/net in example/otel ([#3308](https://github.com/redis/go-redis/pull/3308)) |
| 60 | +- Migrated golangci-lint configuration to v2 format ([#3354](https://github.com/redis/go-redis/pull/3354)) |
| 61 | + |
| 62 | +## ⚠️ Breaking Changes |
| 63 | +- **Enabled Search DIALECT 2 by default** ([#3213](https://github.com/redis/go-redis/pull/3213)) |
| 64 | +- Dropped RedisGears (Triggers and Functions) support ([#3321](https://github.com/redis/go-redis/pull/3321)) |
| 65 | +- Dropped FT.PROFILE command that was never enabled ([#3323](https://github.com/redis/go-redis/pull/3323)) |
| 66 | + |
| 67 | +## 🔒 Security |
| 68 | +- Fixed network error handling on SETINFO (CVE-2025-29923) ([#3295](https://github.com/redis/go-redis/pull/3295)) |
| 69 | + |
| 70 | +## 🧪 Testing |
| 71 | +- Added integration tests for Redis 8 behavior changes in Redis Search ([#3337](https://github.com/redis/go-redis/pull/3337)) |
| 72 | +- Added vector types INT8 and UINT8 tests ([#3299](https://github.com/redis/go-redis/pull/3299)) |
| 73 | +- Added test codes for search_commands.go ([#3285](https://github.com/redis/go-redis/pull/3285)) |
| 74 | +- Fixed example test sorting ([#3292](https://github.com/redis/go-redis/pull/3292)) |
| 75 | + |
| 76 | +## 👥 Contributors |
| 77 | + |
| 78 | +We would like to thank all the contributors who made this release possible: |
| 79 | + |
| 80 | +[@alexander-menshchikov](https://github.com/alexander-menshchikov), [@EXPEbdodla](https://github.com/EXPEbdodla), [@afti](https://github.com/afti), [@dmaier-redislabs](https://github.com/dmaier-redislabs), [@four_leaf_clover](https://github.com/four_leaf_clover), [@alohaglenn](https://github.com/alohaglenn), [@gh73962](https://github.com/gh73962), [@justinmir](https://github.com/justinmir), [@LINKIWI](https://github.com/LINKIWI), [@liushuangbill](https://github.com/liushuangbill), [@golang88](https://github.com/golang88), [@gnpaone](https://github.com/gnpaone), [@ndyakov](https://github.com/ndyakov), [@nikolaydubina](https://github.com/nikolaydubina), [@oleglacto](https://github.com/oleglacto), [@andy-stark-redis](https://github.com/andy-stark-redis), [@rodneyosodo](https://github.com/rodneyosodo), [@dependabot](https://github.com/dependabot), [@rfyiamcool](https://github.com/rfyiamcool), [@frankxjkuang](https://github.com/frankxjkuang), [@fukua95](https://github.com/fukua95), [@soleymani-milad](https://github.com/soleymani-milad), [@ofekshenawa](https://github.com/ofekshenawa), [@khasanovbi](https://github.com/khasanovbi) |
0 commit comments