{"id":24918183,"url":"https://github.com/dev-siri/gedis","last_synced_at":"2026-05-02T09:31:51.334Z","repository":{"id":173027301,"uuid":"650124126","full_name":"Dev-Siri/gedis","owner":"Dev-Siri","description":"A fast Redis inspired in-memory database made with Go.","archived":false,"fork":false,"pushed_at":"2024-11-02T19:32:53.000Z","size":292,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-02T09:19:00.098Z","etag":null,"topics":["database","fast-database","golang","in-memory-database","redis-like"],"latest_commit_sha":null,"homepage":"https://gedis.vercel.app","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Dev-Siri.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-06-06T11:46:00.000Z","updated_at":"2024-11-02T19:32:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"7e0e5030-7142-4950-a2fa-5b7ed373034e","html_url":"https://github.com/Dev-Siri/gedis","commit_stats":null,"previous_names":["dev-siri/gedis"],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dev-Siri%2Fgedis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dev-Siri%2Fgedis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dev-Siri%2Fgedis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dev-Siri%2Fgedis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Dev-Siri","download_url":"https://codeload.github.com/Dev-Siri/gedis/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245999332,"owners_count":20707554,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["database","fast-database","golang","in-memory-database","redis-like"],"created_at":"2025-02-02T09:18:59.584Z","updated_at":"2026-05-02T09:31:51.318Z","avatar_url":"https://github.com/Dev-Siri.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Gedis\n\nGedis is an in-memory Redis inspired database written in Go.\n\n## Why?\n\nJust wanted to challenge myself to create a Database. + I just wanted to build a Go project since I am very much foreign with the language (not having used it in anything other than backend development)\n\n## How does this work?\n\nIts simple, a `map[string]string` stored in memory, while writing to cache for persistence.\n\nBackups are also supported. Creating a backup will take the map from meory \u0026 spit out a `backup-[TIMESTAMP].(json|csv)` file with the map encoded as JSON or CSV. When loading a backup, the type of the file is inferred based on the file extension. If the name of a backup file is changed to include other stuff like extra \".\", it will fail. After the type is inferred of either JSON or CSV, it decodes it \u0026 then places it in memory + cache.\n\nIt also starts a server by default on port 5000 (If PORT env variable is not set, the default is 5000). This API allows for `GET`, `SET` \u0026 `DELETE` so it can be accessed by an application using a network request.\n\n## Commands\n\nThe database is very simple with 5 commands.\n\nNOTE: The commands are case-insensitive, so doesn't matter if you are a SQL guy or not.\n\n### Open commands\n\nThese commands can be accessed from both the CLI and the Rest API.\n\n### `GET`\n\nGets a value with the given key from memory.\n\n#### Syntax\n\n```sh\nGET \u003ckey\u003e\n\n# example, if the key is \"foo\"\nGET foo\n```\n\n### `SET`\n\nSets a value with a given key. Also written to cache for persistence.\n\n#### Syntax\n\n```sh\nSET \u003ckey\u003e \u003cvalue\u003e\n\n# example with the key=\"foo\" \u0026 value=\"bar\"\nSET foo bar\n```\n\n### `DELETE`\n\nDeletes a value with the given key.\n\n#### Syntax\n\n```sh\nDELETE \u003ckey\u003e\n\n# example, delete the value with key \"foo\"\nDELETE foo\n```\n\n### CLI-only commands\n\n### `create_backup`\n\nCreates a `backup-[TIMESTAMP].(json|csv)` in the `backups` folder.\n\nSupported Backup export type\n\n- JSON\n- CSV\n\n```sh\n# by default, it exports as JSON\ncreate_backup\n\n# export as CSV\ncreate_backup --csv\n\n# any flag not-meaningful to the database is ignored (exported as JSON)\ncreate_backup --never-gonna-give-you-up\n```\n\n### `load_backup`\n\nLoads a backup file.\n\nIt looks for backups in the `backups/` folder so anything else is ignored.\n\n#### Syntax\n\n```sh\nload_backup \u003cbackup-file-name\u003e\n\n# json\nload_backup backup-060623-17:12:51.json\n\n# csv\nload_backup backup-060623-17:12:51.csv\n```\n\n## Using the Rest API\n\nThe database's server only has one endpoint, the root (/)\nHere you can send `GET`, `POST` (`SET`) \u0026 `DELETE` Requests to perform actions on the database. Make sure to also pass `?key=...` \u0026 `\u0026value=...` based on the type of action.\n\n## Getting Started\n\n- Clone the repo\n\n```sh\n$ git clone https://github.com/Dev-Siri/gedis.git\n```\n\n- Compile the project. Make sure you have [Go](https://go.dev) installed on your system. Then run the build.sh file.\n\n```sh\n$ ./build.sh\n```\n\n- Then run the binary according to your CPU architecture \u0026 OS.\n\n```sh\n$ ./bin/gedis-[VERSION]-[OS]-[ARCH]/gedis\n```\n\nThis will start a server on your machine w/ PORT env (default 5000) + a CLI that will allow you to interact with the database.\n\n## Running with Docker\n\n- Pull the image from GitHub's Container Registry.\n\n```sh\n$ docker pull ghcr.io/dev-siri/gedis:latest\n```\n\n- Then pass a PORT \u0026 run the container with the \"-it\" flag\n\n```sh\n$ docker run -p \u003cPORT\u003e:8080 -it ghcr.io/dev-siri/gedis:latest\n```\n\n## License\n\nThis project is MIT licensed, see [LICENSE.md](LICENSE.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdev-siri%2Fgedis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdev-siri%2Fgedis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdev-siri%2Fgedis/lists"}