{"id":19606320,"url":"https://github.com/maniktherana/godbase","last_synced_at":"2026-04-16T18:04:07.210Z","repository":{"id":223329786,"uuid":"745109947","full_name":"Maniktherana/godbase","owner":"Maniktherana","description":"My attempt at writing a Redis™ clone in Go","archived":false,"fork":false,"pushed_at":"2024-09-21T07:45:27.000Z","size":1634,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-26T16:49:40.239Z","etag":null,"topics":["database","go","golang","in-memory","redis"],"latest_commit_sha":null,"homepage":"","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/Maniktherana.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2024-01-18T16:59:10.000Z","updated_at":"2025-02-13T15:26:42.000Z","dependencies_parsed_at":"2024-04-24T16:30:42.112Z","dependency_job_id":"7b9f9319-65f4-4703-b3e1-29e7fdb979d3","html_url":"https://github.com/Maniktherana/godbase","commit_stats":null,"previous_names":["maniktherana/godbase"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Maniktherana/godbase","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Maniktherana%2Fgodbase","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Maniktherana%2Fgodbase/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Maniktherana%2Fgodbase/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Maniktherana%2Fgodbase/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Maniktherana","download_url":"https://codeload.github.com/Maniktherana/godbase/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Maniktherana%2Fgodbase/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263061400,"owners_count":23407605,"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","go","golang","in-memory","redis"],"created_at":"2024-11-11T10:04:41.917Z","updated_at":"2026-04-16T18:04:07.182Z","avatar_url":"https://github.com/Maniktherana.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Go](https://img.shields.io/badge/go-%2300ADD8.svg?style=for-the-badge\u0026logo=go\u0026logoColor=white) \n![Redis](https://img.shields.io/badge/redis-%23DD0031.svg?style=for-the-badge\u0026logo=redis\u0026logoColor=white)\n\n# Godbase\nA drop-in replacement for redis written in Go\n\n## Table of Contents\n- [Introduction](#introduction)\n- [Feature parity](#feature-parity)\n- [Available commands](#available-commands)\n    - [The SET Command](#the-set-command)\n- [Installation](#installation)\n- [Compatibility](#compatibility)\n- [License](#license)\n\n## Introduction\n`Godbase` is a blazingly fast drop-in replacement for redis, built with golang.\n\nIt's a fun project that i started to learn more about redis and golang, taking help from this fantastic [guide](https://www.build-redis-from-scratch.dev/en/introduction) by [ahmedash95](https://github.com/ahmedash95). This project builds upon the concepts in this guide and adds features such as `TTL` options for the `SET` command.\n\nThe project is still in its early stages and is not recommended for production use. It's a fun project to learn more about redis and golang.\n\n## Feature parity\n\n| Feature                   | Redis | Godbase |\n| ------------------------- | ----- | -------- |\n| In-memory key-value store | ✅     | ✅        |\n| Strings                   | ✅     | ✅        |\n| Persistence               | ✅     | ✅        |\n| Hashes                    | ✅     | ✅        |\n| TTL                       | ✅     | ✅        |\n| Lists                     | ✅     | ❌        |\n| Sets                      | ✅     | ❌        |\n| Sorted sets               | ✅     | ❌        |\n| Streams                   | ✅     | ❌        |\n| HyperLogLogs              | ✅     | ❌        |\n| Bitmaps                   | ✅     | ❌        |\n| Pub/Sub                   | ✅     | ❌        |\n| Transactions              | ✅     | ❌        |\n\n## Available commands\n\nThe following commands are supported by Godbase as of now:\n\n#### MISC\n`PING` \n\n#### Strings\n`SET` `GET`\n\n#### Hashes\n`HSET` `HGET` `HGETALL` \n\n### The SET Command\n```\nSET key value [NX | XX] [GET] [EX seconds | PX milliseconds | KEEPTTL]\n```\nThe SET command supports the following options:\n\n - EX seconds -- Set the specified expire time, in seconds (a positive integer).\n - PX milliseconds -- Set the specified expire time, in milliseconds (a positive integer).\n - NX -- Only set the key if it does not already exist.\n - XX -- Only set the key if it already exists.\n - KEEPTTL -- Retain the time to live associated with the key.\n - GET -- Return the old string stored at key, or nil if key did not exist. An error is returned and SET aborted if the value stored at key is not a string.\n\n**Time complexity**: O(1)\n\n## Installation\n\nClone this repository and use the makefile to build or run the binary.\n```\ngit clone https://github.com/Maniktherana/godbase.git\nmake build\n```\n\n## Compatibility\n\nGodbase is compatible with existing redis clients. You can use the redis-cli to interact with godbase for the supported commands.\n\n```\nredis-cli -h localhost -p 6379\nlocalhost:6379\u003e set hello world\nOK\nlocalhost:6379\u003e get hello\nworld\nlocalhost:6379\u003e set god man\nOK\nlocalhost:6379\u003e set god base xx\nOK\nlocalhost:6379\u003e get god\nbase\n```\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaniktherana%2Fgodbase","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaniktherana%2Fgodbase","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaniktherana%2Fgodbase/lists"}