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

[META] Module API V1 #8157

Open
13 of 52 tasks
yossigo opened this issue Dec 8, 2020 · 3 comments
Open
13 of 52 tasks

[META] Module API V1 #8157

yossigo opened this issue Dec 8, 2020 · 3 comments

Comments

@yossigo
Copy link
Member

yossigo commented Dec 8, 2020

Module API V1

This is an attempt to scope out all missing or broken Redis Module API capabilities, and create an exahustive list that defines a stable V1 interface.

The Module API was in continuous state of development since Redis 4. Although it maintains ABI backwards compatibility, this does make things more difficult for module developers to mange.

General

Better documentation is desparately needed. Things that come in mind:

  1. A step by step / tutorial-like stuff.
  2. Better organize the growing reference for better navigation, etc.
  3. Some real world examples.

Big Topics

  • New, significant capabilities.
  • Need work to define the concept or reach a solid API design.
  • Potentially have a system-wide effect.

Native Key Access

  • Provide better coverage for accessing native Redis data types.
  • We should not try to cover all commands and just provide the necessary primitives.
  • Streams support as a native type (Stream API in Module #5760)
  • Missing hash functions:
    • RM_HashDel (using RM_HashSet with REDISMODULE_HASH_DELETE).
    • RM_HashLen (using RM_ValueLength).
    • Field iteration API, similar to the one provided by sorted sets.
  • Missing list functions (see Modules: Add remaining list API functions #8439):
    • RM_ListGet
    • RM_ListInsert
    • RM_ListLen (using RM_ValueLength).
    • RM_ListRemove
    • RM_ListSet
    • Iteration API
  • Missing set functions:
    • RM_SetAdd
    • RM_SetCard
    • RM_SetIsMember
    • RM_SetRemove
    • Iteration API
  • Optimize the API to provide zero-copy (but safe) access to elements. see [NEW] Avoid allocations for RedisModuleString #8473

Minor Improvements / Fixes

  • Need some level of API design or decision making.
  • Impact has a limited scope.

Trivial

Module API V2 and beyond

Big things beyond the current Module API V1 effort.

@zuiderkwast
Copy link
Contributor

zuiderkwast commented Feb 19, 2021

@yossigo Please mark as done above:

@hwware
Copy link
Collaborator

hwware commented Aug 5, 2021

Is there anyone working on the missing list and set functions? If not then we'd like to take a look at it and contribute.

@zuiderkwast
Copy link
Contributor

zuiderkwast commented Aug 5, 2021

I started working on the list functions, but it was unclear what they (Oran and Yossi) want from the API, so it was paused. I think agreeing on the API is more difficult than the implementation. If you @hwware start working on set and list functions, I will help review and discuss it.

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

No branches or pull requests

3 participants