Skip to content

Initial version compatibility notes #43

@madolson

Description

@madolson

For our initial compatibility release, I think we want to have a very limited and well defined set of changes. I am proposing we launch a 7.2.4 version, which is clearly compatible with the OSS Redis version 7.2.4. We plan to launch the changes in two tranches RC1 and RC2.

Release candidate 1. 7.2.4-RC1

  1. We will build with the following binaries:
    1. valkey-server
    2. valkey-cli
    3. valkey-benchmark
    4. valkey-check-aof
    5. valkey-check-rdb
    6. valkey-sentinel
    7. For compatibility, we also create symlinks to these files with redis-*names in make install (for the installed binaries only), so valkey can be used as a drop-in replacement for Redis.
    8. ☑️ REDIS_FLAGS will be updated to SERVER_FLAGS. Maybe we should also allow REDIS_FLAGS -> SERVER_FLAGS as well, for an extra layer of compatibility. Done in For additional compatibility this adds REDIS_CFLAGS and REDIS_LDFLAGS support to MAKEFILE #66.
  2. We will introduce 2 new info fields.
    1. valkey_version:7.2.4: This will indicate the valkey_version compatibility.
    2. redis_version:7.2.4: this isn't new, just called out that we will leave it for compatibility.
    3. server_name:valkey: This will provide a way for external clients to determine that this is valkey, if they want.
  3. In RDB format, we will add one new aux field and remove one aux field:
    1. valkey-ver:7.2.4: This will indicate that valkey produced the RDB and what version it was generated from. This is only used for compatibility and logging, so it should be safe to add.
    2. redis-ver:7.2.4: This field will be removed. Since it's only used for logging, it should be safe to remove this.
  4. Logging and other misc wording.
    1. In order to maximize compatibility, we will leave all logging unchanged, as we expect users may have scripts looking for specific log lines.
    2. We will remove the Redis logo from the startup and also include our website address (when we have one).
  5. We need the following LUA compatibility.
    1. We will create a new high level object that maps to the redis object, so that you can do server.call(), etc and other stuff as well as redis.call().
    2. We will update the top level lua version to include the valkey version, server name, while still keeping the redis version for compatibility.
  6. Module API compatibility
    1. Continue to fully support REDISMODULE_* for API compatibility
    2. Introduce a second VALKEYMODULE_* API that is find/replace compatible. This will be a secondary namespace, with the intention of all new APIS going here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions