Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for Redis 6.2 #978

Open
rhymes opened this issue Feb 24, 2021 · 8 comments
Open

Add support for Redis 6.2 #978

rhymes opened this issue Feb 24, 2021 · 8 comments

Comments

@rhymes
Copy link
Contributor

rhymes commented Feb 24, 2021

Redis 6.2 has officially been released, its release notes contain quite a few new commands, improvements and some changes in behavior.

I'm new to this library but I'm willing to help. I'd imagine the first step is to add Redis 6.2 to the GitHub test actions and have the existing tests pass before starting to tackle new things.

I opened a "general" issue, but I guess this should be then split into separate issues/PRs for new commands and features.

This for example is list of new commands:

Here is a comprehensive list of changes in this release compared to 6.0.9,
each one includes the PR number that added it, so you can get more details
at https://github.com/redis/redis/pull/<number>

New commands / args:
* Add SMISMEMBER command that checks multiple members (#7615)
* Add ZMSCORE command that returns an array of scores (#7593)
* Add LMOVE and BLMOVE commands that pop and push arbitrarily (#6929)
* Add RESET command that resets client connection state (#7982)
* Add COPY command that copies keys (#7953)
* Add ZDIFF and ZDIFFSTORE commands (#7961)
* Add ZINTER and ZUNION commands (#7794)
* Add GEOSEARCH/GEOSEARCHSTORE commands for bounding box spatial queries (#8094)
* Add GET parameter to SET command, for more powerful GETSET (#7852)
* Add exclusive range query to XPENDING (#8130)
* Add exclusive range query to X[REV]RANGE (#8072)
* Add GT and LT options to ZADD for conditional score updates (#7818)
* Add CLIENT INFO and CLIENT LIST for specific ids (#8113)
* Add IDLE argument to XPENDING command (#7972)
* Add local address to CLIENT LIST, and a CLIENT KILL filter. (#7913)
* Add NOMKSTREAM option to XADD command (#7910)
* Add command introspection to Sentinel (#7940)
* Add SENTINEL MYID subcommand (#7858)
* Add the REV, BYLEX and BYSCORE arguments to ZRANGE, and the ZRANGESTORE command (#7844)
* Add the XAUTOCLAIM command (#7973)
* Add the MINID trimming strategy and the LIMIT argument to XADD and XTRIM (#8169)
* Add the ANY argument to GEOSEARCH and GEORADIUS (#8259)
* Add the CH, NX, XX arguments to GEOADD (#8227)
* Add the COUNT argument to LPOP and RPOP (#8179)
* Add the WRITE argument to CLIENT PAUSE for pausing write commands exclusively (#8170)
* Change the proto-ver argument of HELLO to optional (#7377)
* Add the CLIENT TRACKINGINFO subcommand (#7309)
* Add HRANDFIELD and ZRANDMEMBER commands (#8297)
* Add FAILOVER command (#8315)
* Add GETEX, GETDEL commands (#8327)
* Add PXAT/EXAT arguments to SET command (#8327)
* Add SYNC arg to FLUSHALL and FLUSHDB, and ASYNC/SYNC arg to SCRIPT FLUSH (#8258)

The list of new features:

New features:

* Dump payload sanitization: prevent corrupt payload causing crashes (#7807)
  Has flags to enable full O(N) validation (disabled by default).
* ACL patterns for Pub/Sub channels (#7993)
* Support ACL for Sentinel mode (#7888)
* Support getting configuration from both stdin and file at the same time (#7893)
  Lets you avoid storing secrets on the disk.

There's much more, detailed in the long release notes.

I'll begin by sending a PR to add 6.2 to the test matrix

@rhymes
Copy link
Contributor Author

rhymes commented Mar 21, 2021

Adding this list so it's easier to keep track of what's done and what is missing:

New commands / args:

  • Add SMISMEMBER command that checks multiple members
  • Add ZMSCORE command that returns an array of scores
  • Add LMOVE and BLMOVE commands that pop and push arbitrarily
  • Add RESET command that resets client connection state
  • Add COPY command that copies keys
  • Add ZDIFF and ZDIFFSTORE commands
  • Add ZINTER
  • Add ZUNION commands
  • Add GEOSEARCH/GEOSEARCHSTORE commands for bounding box spatial queries
  • Add GET parameter to SET command, for more powerful GETSET
  • Add exclusive range query to XPENDING
  • Add exclusive range query to X[REV]RANGE
  • Add GT and LT options to ZADD for conditional score updates
  • Add CLIENT INFO and CLIENT LIST for specific ids
  • Add IDLE argument to XPENDING command
  • Add local address to CLIENT LIST, and a CLIENT KILL filter.
  • Add NOMKSTREAM option to XADD command
  • Add command introspection to Sentinel
  • Add SENTINEL MYID subcommand
  • Add the REV, BYLEX and BYSCORE arguments to ZRANGE, and the ZRANGESTORE command
  • Add the XAUTOCLAIM command
  • Add the MINID trimming strategy and the LIMIT argument to XADD and XTRIM
  • Add the ANY argument to GEOSEARCH and GEORADIUS
  • Add the CH, NX, XX arguments to GEOADD
  • Add the COUNT argument to LPOP and RPOP
  • Add the WRITE argument to CLIENT PAUSE for pausing write commands exclusively
  • Change the proto-ver argument of HELLO to optional
  • Add the CLIENT TRACKINGINFO subcommand
  • Add HRANDFIELD command
  • Add ZRANDMEMBER command
  • Add FAILOVER command
  • Add GETEX, GETDEL commands
  • Add PXAT/EXAT arguments to SET command
  • Add SYNC arg to FLUSHALL and FLUSHDB, and ASYNC/SYNC arg to SCRIPT FLUSH

New features:

  • Dump payload sanitization: prevent corrupt payload causing crashes
    Has flags to enable full O(N) validation (disabled by default).
  • ACL patterns for Pub/Sub channels
  • Support ACL for Sentinel mode
  • Support getting configuration from both stdin and file at the same time
    Lets you avoid storing secrets on the disk.

@alexmreis
Copy link
Contributor

@rhymes You can check off XAUTOCLAIM #1018 .

So are we waiting until all of these have been implemented before releasing a new version of the gem? Does the gem version follow the Redis version it supports?

@rhymes
Copy link
Contributor Author

rhymes commented Jul 13, 2021

@alexmreis checked! For the rest, I am not sure :) I'm not a maintainer, I just opened this issue ticket to keep track of all the new changes

@byroot
Copy link
Collaborator

byroot commented Jul 13, 2021

So are we waiting until all of these have been implemented before releasing a new version of the gem?

No. Releases happens when there's enough features to justify it, or when there's an important bugfix.

Other Redis 6.2 commands will be supported when someone submit a PR for them, or if I somehow I get time to do it myself.

Does the gem version follow the Redis version it supports?

Nope.

@combrs
Copy link

combrs commented Jun 1, 2022

Are there support for "Support ACL for Sentinel mode" ?
In doc I see "If you want to authenticate Sentinel itself, you must specify the password option per instance." - but it uses only "password" field, and do not support "user-password" login as configured by ACL ?

@byroot
Copy link
Collaborator

byroot commented Jun 1, 2022

do not support "user-password" login as configured by ACL ?

It does, it's not shown in the readme, but it accepts it as username:

username: sentinel[:username] || sentinel["username"],

@combrs
Copy link

combrs commented Jun 1, 2022

It does, it's not shown in the readme, but it accepts it as username:

Thanks. it works. Could you mention it in readme?

@byroot
Copy link
Collaborator

byroot commented Jun 1, 2022

Could you mention it in readme?

PR welcome.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants