microsoft / microsoft/garnet

Extend DUMP & RESTORE commands to support Garnet objects

Open
#1,343 5 comments 1 reaction 0 assignees View on GitHub
API enhancement help wanted
Dominant language
C#
Stars
12k
Forks
703
Avg merge
2d 19h
Merged PRs (30d)
36

Description

### Feature request type

enhancement

### Is your feature request related to a problem? Please describe

The [`DUMP`](https://redis.io/docs/latest/commands/dump/) command serializes a value at a specified key and dumps the serialized value to the client. The serialized value can then be deserialized and stored using the [`RESTORE`](https://redis.io/docs/latest/commands/restore/) command.

Currently, Garnet supports the DUMP & RESTORE commands for string values only. We're looking for help implementing this command for all other supported object types (Set, SortedSet, HashSet, List).

### Describe the solution you'd like

Extend implementation of `DUMP` and `RESTORE` command in Garnet to support objects.

**References:**
Serialization format [specification](https://rdb.fnordig.de/file_format.html).
Existing `DUMP` and `RESTORE` code in [KeyAdminCommands.cs](https://github.com/microsoft/garnet/blob/main/libs/server/Resp/KeyAdminCommands.cs) (see: `NetworkDUMP` and `NetworkRESTORE`)

### Describe alternatives you've considered

_No response_

### Additional context

_No response_

Contributor guide

No contributing guide indexed for this repository

Research direction

Start in libs/server/Resp/KeyAdminCommands.cs with NetworkDUMP and NetworkRESTORE, then compare the referenced serialization format specification with the existing string support. Extend the commands for Set, SortedSet, HashSet, and List objects, and verify that each supported object can be dumped and restored using the specified format.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
backend
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.