{"id":29125768,"url":"https://github.com/dscmatter/myredis","last_synced_at":"2026-04-16T03:33:17.543Z","repository":{"id":300455655,"uuid":"1006223092","full_name":"DSCmatter/MyRedis","owner":"DSCmatter","description":"Your own miniature redis written in Go.","archived":false,"fork":false,"pushed_at":"2025-06-28T19:15:44.000Z","size":10,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-28T20:28:39.670Z","etag":null,"topics":["database","golang","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/DSCmatter.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,"zenodo":null}},"created_at":"2025-06-21T19:09:56.000Z","updated_at":"2025-06-28T19:15:47.000Z","dependencies_parsed_at":"2025-06-21T20:24:39.480Z","dependency_job_id":"35b6e1fa-2e60-4438-b820-c95ea620ff8a","html_url":"https://github.com/DSCmatter/MyRedis","commit_stats":null,"previous_names":["dscmatter/myredis"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/DSCmatter/MyRedis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DSCmatter%2FMyRedis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DSCmatter%2FMyRedis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DSCmatter%2FMyRedis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DSCmatter%2FMyRedis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DSCmatter","download_url":"https://codeload.github.com/DSCmatter/MyRedis/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DSCmatter%2FMyRedis/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31870510,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T15:24:51.572Z","status":"online","status_checked_at":"2026-04-16T02:00:06.042Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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","golang","redis"],"created_at":"2025-06-29T22:03:33.204Z","updated_at":"2026-04-16T03:33:17.528Z","avatar_url":"https://github.com/DSCmatter.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MyRedis\n\nYour own miniature redis written in Go.\n\n---\n\n## About\n\n**MyRedis** is a minimal yet functional in-memory key-value store inspired by [Redis](https://redis.io/). Designed for learning and experimentation, MyRedis demonstrates the core concepts of Redis, including its protocol, data structures, and command parsing, all implemented from scratch.\n\n---\n\n## Features\n\n- A Redis clone that lets you store and retrieve strings and hashes and delete them.\n- Parse RESP (Redis Serialization Protocol) to handle commands and send responses.\n- Handle multiple client connections simultaneously using goroutines.\n- Persist data to disk using an Append Only File (AOF) so the server can recover after crashes or restarts.\n- Accept and manage client connections with simple networking.\n- Easily extendable design for adding new commands or features.\n\n---\n\n## Getting Started\n\n### Prerequisites\n\n- Go (Latest) \n- redis-cli (`sudo apt install redis-tools`)\n\n### Installation\n\nClone this repository:\n\n```bash\ngit clone https://github.com/DSCmatter/MyRedis.git\ncd MyRedis\ncd src/\n```\n\n### Running MyRedis\n\nYou can run the server manually or use the provided shell script.\n\n#### Manually\n\n```bash\nsudo snap stop redis \ngo run *.go // runs all files in the directory \nredis-cli ping // will output with PONG\n```\n\nBy default, the server runs on `6379`.\n\n#### Using Shell Script\n\nA shell script `runMyRedis.sh` is included to simplify running and testing:\n\n```bash\nchmod +x runMyRedis.sh\n./runMyRedis.sh\n\nOR\n\nbash runMyRedis.sh\n```\nThis script stops any existing Redis instance, runs MyRedis, waits briefly, then connects with `redis-cli`.\n\n---\n\n## Usage\n\nYou can interact with MyRedis using the `redis-cli` tool or any compatible Redis client:\n\n```bash\nredis-cli \n```\n\nTry basic commands:\n\n```\nset name leon\nget name\ndel name\n```\n\n```bash\nhset names v1 ada\nhset names v2 leon \nhgetall names\n\nResponse:\n1) \"v1\"\n2) \"Ada\"\n3) \"v2\"\n4) \"leon\n```\n---\n\n## Project Structure - /src\n\n```bash\nmain.go           # Initializer\nresp.go           # RESP parser\nhandler.go        # handles basic commands \naof.go            # data persistence \n```\n\n---\n\n## Contributing\n\nPull requests are welcome! For major changes, please open an issue first to discuss what you would like to change.\n\n---\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n---\n\nThanks for checking out MyRedis! ⭐ Star the repo if you find it useful or inspiring.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdscmatter%2Fmyredis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdscmatter%2Fmyredis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdscmatter%2Fmyredis/lists"}