1
0
mirror of https://github.com/redis/node-redis.git synced 2025-08-04 15:02:09 +03:00
Commit Graph

31 Commits

Author SHA1 Message Date
Carl Hopf
e1658ba6ef fix cluster extractFirstKey skip commandOptions() passed to args (#2439)
* cluster extractFirstKey skip commandOptions() passed to args

* cluster with commandOptions unit test

* improve performance

* fix type

* fix type

---------

Co-authored-by: Leibale Eidelman <me@leibale.com>
2023-04-26 12:56:04 -04:00
Mik13
0f28dad2a2 Execute empty MULTI (#2423)
* Fix multi.exec with empty queue and previous watch

When calling exec on a multi instance which you did not use, no command is sent currently.

This is a problem for watched keys, because no EXEC means no unwatch, which might cause hard-to-debug problems.

Proposed Fix: Sending UNWATCH

* execute empty multi command (instead of skipping)

* Update index.ts

* Update index.ts

* Update multi-command.ts

* Update multi-command.ts

* Update multi-command.ts

* Update multi-command.ts

* short circuit empty pipelines

* Update index.ts

---------

Co-authored-by: Leibale <me@leibale.com>
2023-02-24 17:33:16 -05:00
Leibale Eidelman
3bd28a9924 fix #2391 - remove node: prefix from imports 2023-01-25 20:37:00 -05:00
Leibale Eidelman
3b1bad2296 Add support for sharded PubSub (#2373)
* refactor pubsub, add support for sharded pub sub

* run tests in redis 7 only, fix PUBSUB SHARDCHANNELS test

* add some comments and fix some bugs

* PubSubType, not PubSubTypes 🤦‍♂️

* remove test.txt

* fix some bugs, add tests

* add some tests

* fix #2345 - allow PING in PubSub mode (remove client side validation)

* remove .only

* revert changes in cluster/index.ts

* fix tests minimum version

* handle server sunsubscribe

* add 'sharded-channel-moved' event to docs, improve the events section in the main README (fix #2302)

* exit "resubscribe" if pubsub not active

* Update commands-queue.ts

* Release client@1.5.0-rc.0

* WIP

* use `node:util` instead of `node:util/types` (to support node 14)

* run PubSub resharding test with Redis 7+

* fix inconsistency in live resharding test

* add some tests

* fix iterateAllNodes when starting from a replica

* fix iterateAllNodes random

* fix slotNodesIterator

* fix slotNodesIterator

* clear pubSubNode when node in use

* wait for all nodes cluster state to be ok before testing

* `cluster.minimizeConections` tests

* `client.reconnectStrategry = false | 0` tests

* sharded pubsub + cluster 🎉

* add minimum version to sharded pubsub tests

* add cluster sharded pubsub live reshard test, use stable dockers for tests, make sure to close pubsub clients when a node disconnects from the cluster

* fix "ssubscribe & sunsubscribe" test

* lock search docker to 2.4.9

* change numberOfMasters default to 2

* use edge for bloom

* add tests

* add back getMasters and getSlotMaster as deprecated functions

* add some tests

* fix reconnect strategy + docs

* sharded pubsub docs

* Update pub-sub.md

* some jsdoc, docs, cluster topology test

* clean pub-sub docs

Co-authored-by: Simon Prickett <simon@redislabs.com>

* reconnect startegy docs and bug fix

Co-authored-by: Simon Prickett <simon@redislabs.com>

* refine jsdoc and some docs

Co-authored-by: Simon Prickett <simon@redislabs.com>

* I'm stupid

* fix cluster topology test

* fix cluster topology test

* Update README.md

* Update clustering.md

* Update pub-sub.md

Co-authored-by: Simon Prickett <simon@redislabs.com>
2023-01-25 11:00:39 -05:00
Leibale Eidelman
28b9701543 fix #2318 - add MULTI (uppercase) (#2324) 2022-11-24 14:01:43 -05:00
Leibale Eidelman
bf80c163b1 fix #2046 - add support for multi in select (#2133)
* fix #2046 - add support for multi in select

* fix "Argument of type 'symbol | undefined' is not assignable to parameter of type 'number | undefined'"
2022-05-26 09:55:47 -04:00
Leibale Eidelman
429b11e020 fix #1959 - LCS (#2129)
* fix #1959 - LCS

* newlines at end of files
2022-05-11 14:24:07 -04:00
Avital Fine
06c1d2c243 Support all GEORADIUS Commands (#2017)
* Support all GEORADIUS Commands

* move store bool to options

* simplify transformReply for store commands

* clean code

Co-authored-by: leibale <leibale1998@gmail.com>
2022-05-11 09:36:12 -04:00
Leibale Eidelman
0752f143a6 prepare 4.1.0 (#2111)
* increase test coverage

* @node-redis to @redis

* ugprade deps

* fix benchmark

* use 7.0 docker (not rc), update readmes, clean code, fix @-redis import

* update readme

* fix function in cluster

* update docs

Co-authored-by: Chayim <chayim@users.noreply.github.com>

* Update clustering.md

* add subpackages move warning

* drop support for node 12

* upgrade deps

* fix tsconfig.base.json

Co-authored-by: Chayim <chayim@users.noreply.github.com>
2022-05-02 11:48:12 -04:00
Leibale Eidelman
baf67fd87f fix #1976 - XSETID (#2104) 2022-04-26 09:05:44 -04:00
Leibale Eidelman
11c6c24881 Add support for redis functions (#2020)
* fix #1906 - implement BITFIELD_RO

* initial support for redis functions

* fix test utils

* redis functions commands and tests

* upgrade deps

* fix "Property 'uninstall' does not exist on type 'SinonFakeTimers'"

* upgrade dockers version

* Merge branch 'master' of github.com:redis/node-redis into functions

* fix FUNCTION LIST WITHCODE and FUNCTION STATS

* upgrade deps

* set minimum version for FCALL and FCALL_RO

* fix FUNCTION LOAD

* FUNCTION LOAD

* fix FUNCTION LOAD & FUNCTION LIST & FUNCTION LOAD WITHCODE

* fix FUNCTION_LIST_WITHCODE test
2022-04-25 09:09:23 -04:00
Avital Fine
b1a0b48d2c Support new muilti pop commands (#2051)
* Support new muilti pop commands

* remove .only

* clean code

* fix for 4558ec6a31

* fix tests

Co-authored-by: leibale <leibale1998@gmail.com>
2022-04-25 07:50:43 -04:00
Avital Fine
f6f645bdbb Support SORT_RO (#2041)
* Support SORT_RO

* move pushSortReadOnlyArgs and SortReadOnlyOptions to generic-transformers

* clean code

Co-authored-by: leibale <leibale1998@gmail.com>
2022-03-28 18:36:47 -04:00
Avital Fine
515adf1346 Support OBJECT [...] commands (#2014)
* Support OBJECT [...] commands

* move commands to cluster/commands.ts

Co-authored-by: leibale <leibale1998@gmail.com>
2022-03-27 13:35:01 -04:00
Avital Fine
24cd9ba9a4 Support new expire features (#2036)
* Support new expire features

* Update PEXPIRETIME.ts

* Update EXPIRETIME.ts

* fix version skip

* clean code

Co-authored-by: leibale <leibale1998@gmail.com>
2022-03-24 10:17:01 -04:00
Avital Fine
875298e6e3 Support ZINTERCARD and SINTERCARD (#2040)
* Support ZINTERCARD and SINTERCARD

* clean code

* clean code

Co-authored-by: leibale <leibale1998@gmail.com>
2022-03-20 13:40:19 -04:00
Leibale Eidelman
9180b91047 fix #1906 - implement BITFIELD_RO (#1988)
* fix #1906 - implement BITFIELD_RO

* set bitfield_ro min version to 6.2
2022-03-02 05:29:42 -05:00
Leibale Eidelman
0803f4e19c add nodeAddressMap config for cluster (#1827)
* add `nodeAddressMap` config for cluster

* Update cluster-slots.ts

* Update cluster-slots.ts

* update docs

Co-authored-by: Guy Royse <guy@guyroyse.com>

Co-authored-by: Guy Royse <guy@guyroyse.com>
2022-02-14 15:23:35 -05:00
Leibale Eidelman
46b831c922 fix #1864 - cluster.quit (#1886) 2022-01-31 08:35:35 -05:00
Leibale Eidelman
8160fa7d65 fix #1865 - add defaults to RedisModules and RedisScripts (#1885) 2022-01-31 08:35:24 -05:00
leibale
2203be5fbd add test for RootNodesUnavailableError 2021-12-30 18:32:48 -05:00
leibale
8f88eb289b fix ASK and MOVED errors in multi as well 2021-12-30 17:12:13 -05:00
leibale
b97d18b610 fix some types 2021-12-23 17:17:19 -05:00
leibale
a0de7967f9 buffers, buffers everywhere... 2021-12-20 14:47:51 -05:00
leibale
a1bed9a10f add buffer support to a bunch of commands 2021-12-15 17:08:50 -05:00
leibale
42e36dfbb1 enhance cluster reshard handling 2021-11-22 17:42:41 -05:00
Evert Pot
7d2629f083 Support esModuleInterop set to false. (#1717)
* Support esModuleInterop set to false.

When testing the upcoming 4.x release, we got a bunch of typescript
errors emitted from this project.

We quickly realized this is because the library uses the esModuleInterop
flag. This makes some imports _slightly_ easier to write, but it comes
at a cost: it forces any application or library using this library to
*also* have esModuleInterop on.

The `esModuleInterop` flag is a bit of a holdover from an earlier time,
and I would not recommend using it in libraries. The main issue is that
if it's set to true, you are forcing any users of the library to also
have `esModuleInterop`, where if you keep have it set to `false` (the
default), you leave the decision to the user.

This change should have no rammifications to users with
`esModuleInterop` on, but it will enable support for those that have it
off.

This is especially good for library authors such as myself, because I
would also like to keep this flag off to not force *my* users into this
feature.

* All tests now pass!

* Move @types/redis-parser into client sub-package

and removed a comma
2021-11-15 16:52:48 -05:00
leibale
3d009780ee fix live resharding test 2021-11-10 14:42:53 -05:00
leibale
f1f9c7ac24 fix bug in cluster slots, enhance live resharding test 2021-11-10 14:20:46 -05:00
leibale
8b3daad88a uncomment "should handle live resharding" test 2021-11-09 13:38:08 -05:00
leibale
3eb99dbe83 use dockers for tests, use npm workspaces, add rejson & redisearch modules, fix some bugs 2021-11-08 19:21:15 -05:00