{"id":25706539,"url":"https://github.com/poabob/go-redis","last_synced_at":"2026-06-13T12:31:38.742Z","repository":{"id":278543123,"uuid":"935965999","full_name":"POABOB/go-redis","owner":"POABOB","description":null,"archived":false,"fork":false,"pushed_at":"2025-03-04T09:13:31.000Z","size":150,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-19T12:03:20.253Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/POABOB.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-02-20T10:06:46.000Z","updated_at":"2025-03-04T09:13:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"a601a2cc-f0eb-4369-ad3b-aa9b419ad2f9","html_url":"https://github.com/POABOB/go-redis","commit_stats":null,"previous_names":["poabob/go-redis"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/POABOB/go-redis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/POABOB%2Fgo-redis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/POABOB%2Fgo-redis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/POABOB%2Fgo-redis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/POABOB%2Fgo-redis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/POABOB","download_url":"https://codeload.github.com/POABOB/go-redis/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/POABOB%2Fgo-redis/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34285190,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-13T02:00:06.617Z","response_time":62,"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":[],"created_at":"2025-02-25T07:35:16.882Z","updated_at":"2026-06-13T12:31:38.713Z","avatar_url":"https://github.com/POABOB.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# go-redis\n\ngo-redis is a Go-based Redis implementation based on RESP (Redis Serialization Protocol) parsing. It is designed to provide a Redis-like experience with key features, including support for `string keys`, `graceful shutdown`, `AOF (Append-Only File) persistence`.\n\n## Features\n\n- `RESP Protocol Parsing`: Implements RESP protocol to allow Redis-like communication with clients.\n- `String Keys`: Supports Redis-like string key storage and retrieval.\n- `Graceful Shutdown`: Handles proper shutdown of Redis instances with in-progress requests managed.\n- `AOF (Append-Only File)`: Implements AOF persistence for durability, logging all write operations.\n  1. `Command Logging`: Every write operation is appended to the AOF file in RESP format.\n  2. `Fsync Policy`:\n     * **always**: Flushes data to disk after every command.\n     * **everysec**: Flushes data every second asynchronously.\n     * **no**: Relies on the operating system to decide when to flush.\n  3. `AOF Buffering`: Commands are first written to an internal buffer before being flushed to the file.\n  4. `AOF Rewrite Mechanism`: AOF rewrite is triggered under the following conditions:\n     * The AOF file size exceeds a configured threshold (auto-aof-rewrite-min-size).\n     * The file has grown by a defined percentage since the last rewrite (auto-aof-rewrite-percentage).\n     * Manually triggered by the user (BGREWRITEAOF command).\n\n## TODO\n\n- [ ] `AOF Rewrite Incremental Fsync`: Implement incremental fsync while AOF rewrite.\n- [x] `Authentication`: Support for authentication with password-based access control.\n- [ ] `System Info Command`: Add the `system info` command to provide information about Redis server and its configuration.\n- [ ] `RDB (Redis Database Persistence)`: Implement RDB persistence for saving snapshots of the database.\n- [ ] `Redis Cluster`: Implement Redis Cluster to manage sharded data across multiple Redis nodes.\n- [ ] `Redis Sentinel`: Implement Redis Sentinel for automatic fail-over and high availability.\n- [ ] `Unit Tests`: Write unit tests to ensure correctness and reliability.\n- [ ] `GitHub Actions`: Set up GitHub Actions for continuous integration and deployment.\n- [ ] `All Redis Data Structures`: Implement all Redis data types, including Lists, Sets, Hashes, Sorted Sets, etc.\n- [ ] `Pub/Sub Mechanism`: Implement the Publish/Subscribe (Pub/Sub) messaging system.\n\n## Getting Started\n\n1. `Clone the repository`:\n    ```bash\n    git clone https://github.com/POABOB/go-redis.git\n    ```\n2. `Install dependencies`: Follow the Go installation instructions if you haven’t set up Go yet: [Go Install](https://go.dev/doc/install).\n3. `Run the server`: Once cloned, you can build and run the Redis server implementation with the following:\n    ```bash\n    go run main.go\n    ```\n4. `Client interactions`: You can interact with the server using a Redis client, using the RESP protocol to send commands to the server.\n\n## Contributing\nContributions are welcome! If you want to help with the development of Redis Sentinel, Redis Cluster, or any other features, feel free to fork the repository, create a new branch, and submit a pull request.\n\n## License\nDistributed under the [MIT License](https://github.com/POABOB/go-redis/blob/main/LICENSE).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpoabob%2Fgo-redis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpoabob%2Fgo-redis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpoabob%2Fgo-redis/lists"}