1
0
mirror of https://github.com/redis/go-redis.git synced 2025-06-11 03:21:38 +03:00
Commit Graph

260 Commits

Author SHA1 Message Date
b67455e099 xinfo-groups: support nil lag in XINFO GROUPS (#3369)
* xinfo-groups: support nil lag in XINFO GROUPS

* Add test

* docs: clarify XInfoGroup.Lag field behavior with Nil values

* docs: clarify XInfoGroup.Lag field behavior
2025-05-21 13:57:58 +03:00
Hui
4bd5d417ca feat: func isEmptyValue support time.Time (#3273)
* fix:func isEmptyValue support time.Time

* fix: Improve HSet unit tests

* feat: Improve HSet unit tests

* fix: isEmptyValue Struct only support time.Time

* test(hset): add empty custom struct test

---------

Co-authored-by: Guo Hui <gh7396@gmail.com>
Co-authored-by: Nedyalko Dyakov <nedyalko.dyakov@gmail.com>
2025-04-29 00:16:53 +03:00
034a49f88a fix: Fix panic caused when arg is nil (#3353) 2025-04-23 10:47:13 +03:00
132818033b added Do method for raw query by single conn from pool.Conn() (#3182)
* added `Do` method for raw query by single conn from `pool.Conn()`

* added test to cmdble Do method

* fixed test

* moved Do cmd to commands.go

---------

Co-authored-by: Oleg Laktyushkin <oglaktyushkin@avito.ru>
Co-authored-by: Nedyalko Dyakov <nedyalko.dyakov@gmail.com>
2025-03-24 18:36:21 +02:00
15059395a1 Support new hash commands: HGETDEL, HGETEX, HSETEX (#3305) 2025-03-24 14:03:26 +02:00
cd55713972 feat: add hstrlen command for hash (#2843)
* feat: add hstrlen command for hash

Signed-off-by: rfyiamcool <rfyiamcool@163.com>

* feat: add hstrlen command for hash

Signed-off-by: rfyiamcool <rfyiamcool@163.com>

---------

Signed-off-by: rfyiamcool <rfyiamcool@163.com>
Co-authored-by: Nedyalko Dyakov <nedyalko.dyakov@gmail.com>
2025-03-04 13:31:45 +02:00
ebe11d06ca feat: Enable CI for Redis CE 8.0 (#3274)
* chore: extract benchmark tests

* wip

* enable pubsub tests

* enable ring tests

* stop tests with build redis from source

* start all tests

* mix of makefile and action

* add sentinel configs

* fix example test

* stop debug on re

* wip

* enable gears for redis 7.2

* wip

* enable sentinel, they are expected to fail

* fix: linter configuration

* chore: update re versions

* return older redis enterprise version

* add basic codeql

* wip: increase timeout, focus only sentinel tests

* sentinels with docker network host

* enable all tests

* fix flanky test

* enable example tests

* tidy docker compose

* add debug output

* stop shutingdown masters

* don't test sentinel for re

* skip unsuported addscores

* Update README

bump go version in CI

* Update README.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update CONTRIBUTING.md

add information about new test setup

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-02-28 12:49:00 +02:00
acbf4a688f test: add test for info in RCE 8 (#3269) 2025-02-10 14:55:15 +02:00
7f8b5a8167 fix: flaky ClientKillByFilter test (#3268) 2025-02-07 12:56:16 +02:00
0b34b1909a feat(command): add ACL commands, validate module categories exist (#3262)
* add ACL{SetUser,DelUser,List} commands

* test presence of categories in acl cat

* code cleanup

* add basic acl tests

* add acl modules tests

* reset acl log before test

* refactor acl tests

* fix clientkillbyage test
2025-02-05 15:44:09 +02:00
a39be37273 feat(tests): validate that ConfigSet and ConfigGet work with Modules (#3258)
* Add tests for unified config in Redis 8

* WIP: fix reading FT.CONFIG with RESP3

* add more tests

* use search-timeout

* move deprecated warnings on the bottom
2025-02-03 19:10:54 +02:00
1139bc3aa9 fix(tests): enable testing with Redis CE 8.0-M4 in CI (#3247)
* introduce github workflow for ci similar to the one in redis-py

use prerelease for 8.0-M4

* Enable osscluster tests in CI

* Add redis major version env

Enable filtering test per redis major version
Fix test for FT.SEARCH WITHSCORE, the default scorer
has changed.

fix Makefile syntax

remove filter from github action

fix makefile

use the container name in Makefile

* remove 1.20 from doctests

* self review, cleanup, add comments

* add comments, reorder prints, add default value for REDIS_MAJOR_VERSION
2025-01-31 16:14:11 +02:00
75398584cf Support Hash-field expiration commands in Pipeline & Fix HExpire HExpireWithArgs expiration (#3038)
* Support Hash-field expiration commands in Pipeline

* Fix HExpire & HExpireWithArgs expiration

* Fix HExpire & HPExpire Testcase

* Update commands_test.go

---------

Co-authored-by: ofekshenawa <104765379+ofekshenawa@users.noreply.github.com>
Co-authored-by: Monkey <golang@88.com>
2024-07-11 13:08:23 +08:00
6a584c1e2b Support Hash-field expiration for 7.4 CE RC2 (#3040)
Co-authored-by: Monkey <golang@88.com>
Co-authored-by: Vladyslav Vildanov <117659936+vladvildanov@users.noreply.github.com>
2024-07-10 23:30:32 +08:00
3975cd5380 Add support for XREAD last entry (#3005)
* add support for XREAD last entry

* handle reading from multiple streams

* add test to ensure we block for empty stream

* small tweak

* add an option to XReadArgs instead

* modify test comment

* small preallocation optimization

* Changed argument to generic ID, skip tests on Enterprise

* Fix test case

* Updated expiration command

---------

Co-authored-by: Vladyslav Vildanov <117659936+vladvildanov@users.noreply.github.com>
Co-authored-by: vladvildanov <divinez122@outlook.com>
2024-06-20 11:25:51 +03:00
445d2667eb remove tests from RE (#3035) 2024-06-20 02:25:49 +03:00
097cddbeb0 Support NOVALUES parameter for HSCAN (#2925)
* Support NOVALUES parameter for HSCAN

Issue #2919

The NOVALUES parameter instructs HSCAN to only return the hash keys,
without values.

* Update hash_commands.go

---------

Co-authored-by: ofekshenawa <104765379+ofekshenawa@users.noreply.github.com>
2024-06-20 01:24:45 +03:00
0777247baa Added test case for CLIENT KILL with MAXAGE option (#2971)
* Added test case for CLIENT KILL with MAXAGE option

* Fixed sleep value

* Added additional condition to kill specific connection

* Test commit

* Test commit

* Updated test case to handle timeouts

---------

Co-authored-by: ofekshenawa <104765379+ofekshenawa@users.noreply.github.com>
2024-06-20 01:00:09 +03:00
a9b4c5cfe6 Support Hash-field expiration commands (#2991)
* Add HExpire command

* Add HPExpire, HexpireAt, HPExpireAt, HTTL, HPTTL, HPersist,HExpireTime, HPExpireTIme, HGetF, HSetF commands

* add docstring

* add tests and fix commands

* modify commands

* api changes

* fix tests

* remove tests from RE
2024-06-20 00:59:27 +03:00
5da49b1aba bug: Fix SETINFO ensuring it is set-and-forget (#2915)
* Exexcute set-info without validation

* Fix tests

* Remove spaces from runtime.Version

* fix typo

* Send setinfo after auth

* Add pipline

* fix golangci

* revert fixing typo

* support sentinel
2024-02-20 17:34:35 +02:00
35de49a8da Speed up connections by sending SetInfo via a pipeline (#2880)
* Send Client SetInfo via pipe

* Fix ACL test

* Add client set info to acl command rules
2024-02-15 12:48:56 +02:00
8afc2b9314 Remove freq object test from RE tests (#2904) 2024-02-14 23:28:28 +02:00
d383038a0f feat: add object fraq command (#2844)
* feat: add object fraq command

Signed-off-by: rfyiamcool <rfyiamcool@163.com>

* feat: add object fraq command

Signed-off-by: rfyiamcool <rfyiamcool@163.com>

---------

Signed-off-by: rfyiamcool <rfyiamcool@163.com>
Co-authored-by: ofekshenawa <104765379+ofekshenawa@users.noreply.github.com>
2024-02-14 23:05:05 +02:00
21ed15bbed Add helpers to set libinfo without panic (#2724)
* add helpers to set library name and library info without risk of panic if we try to set both

* refactor code to use helpers

* add example

* refactor tests

* fix testable example

* simplify example

* rename exampl

* fix ring.go

* update example

---------

Co-authored-by: ofekshenawa <104765379+ofekshenawa@users.noreply.github.com>
2024-02-14 22:40:20 +02:00
27581fcb43 Change Z Member type to interface (#2861) 2024-01-07 11:57:20 +02:00
a32be3d93d Add Suffix support to default client set info (#2852)
* Add Suffix support to defualt client set info

* Change ClientNameSuffix to IdentitySuffix

* add tests
2024-01-04 14:40:14 +02:00
b762309243 Add RE tests (#2847)
* Add RE tests

* Enable testing on RE

* change db id to 0 - only when RE cluster is set

* label tests

* adding secrets
2024-01-01 22:19:22 +02:00
e535124055 Change Z member to string (#2818) 2023-12-17 15:20:01 +02:00
1d784578df Add BITFIELD_RO Command (#2820)
Co-authored-by: Chayim <chayim@users.noreply.github.com>
2023-12-17 15:19:27 +02:00
343016bf72 add InfoMap command (#2665)
Add an extended version of Info() to parse the results from a call to redis.Info so that it’s simpler to operate on any given item in the result.

Signed-off-by: Nic Gibson <nic.gibson@redis.com>
2023-10-30 18:07:42 +02:00
0637c53f10 Added the support for WAITAOF which is a new command in redis ver7.2.0 (#2629)
* implemented WaitAOF command for the redis ver7.2.0

* updated the test corresponding to WaitAOF

---------

Co-authored-by: Chayim <chayim@users.noreply.github.com>
Co-authored-by: ofekshenawa <104765379+ofekshenawa@users.noreply.github.com>
2023-09-20 14:09:23 +03:00
e8ad794e96 Format code and fix go vet (#2696)
* run go fix ./...

Signed-off-by: Tiago Peczenyj <tpeczenyj@weborama.com>

* run make fmt

Signed-off-by: Tiago Peczenyj <tpeczenyj@weborama.com>

* fix go vet ./... issues

* Update README.md

Reorder imports with the rules defined in the Makefile 

as if we run `make fmt`

* run gofumpt -w .

* update Makefile to use gofumpt instead gofmt

* increment makefile

* format test

* format tests

Signed-off-by: Tiago Peczenyj <tpeczenyj@weborama.com>

---------

Signed-off-by: Tiago Peczenyj <tpeczenyj@weborama.com>
Co-authored-by: ofekshenawa <104765379+ofekshenawa@users.noreply.github.com>
2023-09-20 14:03:44 +03:00
1a7d2f4ad4 upgrade bitfield cmd to add multiple values (#2648)
Co-authored-by: wangzheng1 <wangzheng1@yidian-inc.com>
Co-authored-by: ofekshenawa <104765379+ofekshenawa@users.noreply.github.com>
2023-09-20 10:49:46 +03:00
0b6be62b71 Identify client on connect (#2708)
* Update CLIENT-SETINFO to support suffixes

* Update CLIENT-SETINFO

* fix acl log test

* add setinfo option to cluster

* change to DisableIndentity

* change to DisableIndentity
2023-09-20 10:33:09 +03:00
3b0d10b4ed Support for CLIENT SETINFO (#2659)
* feat: merge master

* feat: revert ring.go

* feat: add ClientSetInfo command

* fix: test and cmd:

* fix: test and cmd

* fix: test and cmd

* fix: test and cmd

* feat: redesigning the API

* fix: panic test

* fix: panic test

---------

Co-authored-by: Anuragkillswitch <70265851+Anuragkillswitch@users.noreply.github.com>
Co-authored-by: ofekshenawa <104765379+ofekshenawa@users.noreply.github.com>
2023-09-14 16:24:23 +03:00
c0ab7815ea chore: fix staticcheck (#2631) 2023-07-02 14:38:52 +03:00
6f0af685cf fix the reading of the "entries-read" field in XInfoStreamFull (#2595)
* fix:  In the response of the XInfoStreamFull command, the "entries-read" field may be nil

Signed-off-by: monkey92t <golang@88.com>

* add XInfoStreamFull test

Signed-off-by: monkey92t <golang@88.com>

* add test XInfoStreamFull entries_read = nil

Signed-off-by: monkey92t <golang@88.com>

---------

Signed-off-by: monkey92t <golang@88.com>
2023-05-29 08:40:45 +03:00
31ba855dde feat: Add ACL LOG (#2536)
* feat: Add ACL LOG

Signed-off-by: monkey92t <golang@88.com>

---------

Signed-off-by: monkey92t <golang@88.com>
Co-authored-by: Anuragkillswitch <70265851+Anuragkillswitch@users.noreply.github.com>
Co-authored-by: ktsivkov <ktsivkov@gmail.com>
Co-authored-by: Elena Kolevska <elena@kolevska.com>
Co-authored-by: monkey92t <golang@88.com>
2023-05-08 22:40:42 +08:00
b8c7317cc6 feat: add client info command (#2483)
* feat: add client info command

Signed-off-by: monkey92t <golang@88.com>

* add lib-name, lib-ver

Signed-off-by: monkey92t <golang@88.com>

---------

Signed-off-by: monkey92t <golang@88.com>
2023-04-24 21:18:33 +08:00
6ecbcf6c90 Add ZRANK, ZREVRANK WITHSCORE (#2531)
* feat: adding zrankwithscore and zrevrankwithscore commands : redis 7.2

* fix: test for non-existing members

* fix: Error check

* fix: string to float

* add ZRankWithScore API for Cmdable interface

Signed-off-by: monkey92t <golang@88.com>

* add notes

Signed-off-by: monkey92t <golang@88.com>

---------

Signed-off-by: monkey92t <golang@88.com>
Co-authored-by: Anuragkillswitch <70265851+Anuragkillswitch@users.noreply.github.com>
Co-authored-by: monkey92t <golang@88.com>
2023-04-19 22:37:41 +08:00
38ca7c1680 Add support for MODULE LOADEX command (#2490)
* Added support for MODULE LOADEX command

Co-authored-by: Anurag Bandyopadhyay <angbpy@gmail.com>
2023-04-18 21:03:47 +08:00
6edb1529ff test: redis-version to 7.2-rc1 (#2532)
* test: redis-version to 7.2-rc1

Signed-off-by: monkey92t <golang@88.com>
2023-04-12 20:17:10 +08:00
37c057b8e5 feat: read the structure to increase the judgment of the omitempty op… (#2529)
* feat: read the structure to increase the judgment of the omitempty option, the same as json

Signed-off-by: monkey92t <golang@88.com>
2023-04-03 15:43:18 +08:00
e96c7b5f58 Function stats, function kill, fcall and fcall_ro (#2486) 2023-03-30 21:52:06 +08:00
386e0f0cd3 Add support for acl dryrun command (#2502)
* add support for acl dryrun command

Co-authored-by: Monkey <golang@88.com>
2023-03-26 22:21:46 +08:00
984bc2810d Add support for COMMAND GETKEYS & COMMAND GETKEYSANDFLAGS (#2500)
* feat: Adding support for CommandsGetKeysAndFlags & CommandGetKeys

Co-authored-by: Anuragkillswitch <70265851+Anuragkillswitch@users.noreply.github.com>
2023-03-25 18:57:12 +08:00
6790337e5d Add support for LCS Command (#2480)
* feat: initial set up for LCSCmd

* feat: adding test for LCS with no additional params

* feat: adding test for LCS with LEN param

* feat: resolving conflicts in command.go

* fix: changing reply and query structure

* feat: commands test for lcs and lcs with len

* fix: using dynamic args length

* fix: read

* fix: Cmd init

* sorting out the LCS commands

Signed-off-by: monkey92t <golang@88.com>

* fix: Adding error case test

* fix: adding correct error message

* fix: removed blank lines

---------

Signed-off-by: monkey92t <golang@88.com>
Co-authored-by: Anuragkillswitch <70265851+Anuragkillswitch@users.noreply.github.com>
Co-authored-by: monkey92t <golang@88.com>
2023-03-24 15:38:11 +08:00
540554043b feat(cmd): support for adding byte,bit parameters to the bitpos command (#2498)
Signed-off-by: monkey92t <golang@88.com>
2023-03-23 00:05:50 +08:00
049d4f9691 Add: Support for COMMAND LIST command (#2491)
* feat: add support and tests for Command list command

Co-authored-by: Anuragkillswitch <70265851+Anuragkillswitch@users.noreply.github.com>
2023-03-19 18:20:42 +08:00
6501a8b15e Implement FUNCTION group of commands (#2475)
* Implements function load, load replace and flush

* Implements `FUNCTIONS LIST`

* Fixes ineffectual assignment to err

* Extends other tests from the `FUNCTION` group

* Changes RdsFunction to Function

* Renames FunctionList command, for consistency

* Small fixes after review

* More fixes after review

* Implements the `LIBRARYNAME` and `WITHCODE` args for `FUNCTION LIST`

* Implements `FUNCTION DUMP`. Solves https://github.com/redis/go-redis/issues/2396

* Use a pointer instead of value for `First()`

* Implements `FUNCTION RESTORE`. Closes #2401.

* chore: tidy code

Signed-off-by: monkey92t <golang@88.com>

---------

Signed-off-by: monkey92t <golang@88.com>
Co-authored-by: monkey92t <golang@88.com>
2023-03-09 23:01:37 +08:00