{"id":13692459,"url":"https://github.com/kasvith/kache","last_synced_at":"2025-05-02T19:32:04.348Z","repository":{"id":57500910,"uuid":"142177330","full_name":"kasvith/kache","owner":"kasvith","description":"A simple in memory cache written using go","archived":true,"fork":false,"pushed_at":"2019-04-08T16:09:05.000Z","size":303,"stargazers_count":351,"open_issues_count":11,"forks_count":26,"subscribers_count":19,"default_branch":"master","last_synced_at":"2024-11-22T03:09:42.535Z","etag":null,"topics":["cache","cache-storage","database","flexible","from-scratch","go","golang","inmemory-db","kache","kache-cli","nosql","nosql-database","redis","resp","socket-programming","sockets","tcp"],"latest_commit_sha":null,"homepage":"https://kasvith.github.io/kache","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/kasvith.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}},"created_at":"2018-07-24T15:22:01.000Z","updated_at":"2024-07-09T09:50:55.000Z","dependencies_parsed_at":"2022-08-31T03:53:52.798Z","dependency_job_id":null,"html_url":"https://github.com/kasvith/kache","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kasvith%2Fkache","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kasvith%2Fkache/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kasvith%2Fkache/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kasvith%2Fkache/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kasvith","download_url":"https://codeload.github.com/kasvith/kache/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252095337,"owners_count":21693899,"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":["cache","cache-storage","database","flexible","from-scratch","go","golang","inmemory-db","kache","kache-cli","nosql","nosql-database","redis","resp","socket-programming","sockets","tcp"],"created_at":"2024-08-02T17:00:58.229Z","updated_at":"2025-05-02T19:32:04.047Z","avatar_url":"https://github.com/kasvith.png","language":"Go","funding_links":[],"categories":["Uncategorized","Go"],"sub_categories":["Uncategorized"],"readme":"# kache\nA simple and a flexible in memory cache\n\n[![Build Status](https://travis-ci.org/kasvith/kache.svg?branch=master)](https://travis-ci.org/kasvith/kache)\n[![Build Status](https://cloud.drone.io/api/badges/kasvith/kache/status.svg)](https://cloud.drone.io/kasvith/kache)\n[![Build status](https://ci.appveyor.com/api/projects/status/40cr0460vgqyyor8/branch/master?svg=true)](https://ci.appveyor.com/project/kasvith/kache/branch/master)\n[![Go Report Card](https://goreportcard.com/badge/github.com/kasvith/kache)](https://goreportcard.com/report/github.com/kasvith/kache)\n[![HitCount](http://hits.dwyl.io/kasvith/kache.svg)](http://hits.dwyl.io/kasvith/kache)\n[![codecov](https://codecov.io/gh/kasvith/kache/branch/master/graph/badge.svg)](https://codecov.io/gh/kasvith/kache)\n[![GitHub](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/kasvith/kache/blob/master/LICENSE)\n\n![gopher is looking at kache](https://user-images.githubusercontent.com/13379595/44355952-a3e7e480-a4cb-11e8-901f-aed77cfd63db.png)\n\n# What is kache\n**kache** aims to develop a *redis compatible in memory db* with [golang](https://golang.org/ \"go\"). Currently kache is powered up with **[RESP Protocol](https://redis.io/topics/protocol \"RESP\")**.\n**kache** also supports simple text protocol so you can issue commands to kache using netcat or telnet as you please. kache has powered with many features managing a simple codebase with golang.\n\n# Roadmap\n- [x] Kache Server\n- [x] Basic Commands as a POC\n- [ ] Cluster Mode\n- [ ] Pub/Sub Pattern\n- [ ] Snapshots of data\n- [ ] Kache CLI\n- [ ] Client Libraries for popular languages\n- [ ] Documentation\n- [ ] Security\n- [ ] Improved data Structures\n- [ ] Website\n\n# [Running kache](#command-line-opts)\n\nkache is a compiled program, download the one for your platform and extract the package to a directory you wish.\n\nGo to that directory, open a command prompt and run the kache executable like\n\n- `./kache` if you are on **linux** or **mac**\n- `.\\kache` if you are on **windows**\n\nThis will start the application and port **7088** will be open by default.\n\nTry to open **telnet** or **netcat** then\n```\n$: nc localhost 7088\nping\n```\n\nIf you get the `+PONG` kache is working as expected.\n\nDefault configuration file can be found in `config/kache-default.toml`\n\nkache can produce logs as you wish, in addition to default format it supports\n - json\n - logfmt\n\nTo run with a custom config file do\n\n`./kache --config=path/to/config/file.toml`\n\n### Synopsis\n\nA fast and a flexible in memory database built with go\n\n```\nkache [flags]\n```\n\n### Options\n\n```\n      --config string    configuration file\n  -d, --debug            output debug information\n  -h, --help             help for kache\n      --host string      host for running application (default \"127.0.0.1\")\n      --logfile string   application log file\n      --logging          set application logs (default true)\n      --logtype string   kache can output logs in different formats like json or logfmt. The default one is custom to kache. (default \"default\")\n      --maxClients int   max connections can be handled (default 10000)\n      --maxTimeout int   max timeout for clients(in seconds) (default 120)\n  -p, --port int         port for running application (default 7088)\n  -v, --verbose          verbose output\n```\n\n# Development\n\n## Prerequisites\n - Go 1.10.+\n\n### Installing `mage`\n`mage` is the build tool we use for build kache. To install `mage` \n - Run `go get -u github.com/magefile/mage`\n - For a proper installation refer [official documentation](https://github.com/magefile/mage \"official documentation\")\n\n## Setting up workspace\n - Fork the repo\n - Go to your **GOPATH** if you don't know about it learn from [here](https://github.com/golang/go/wiki/SettingGOPATH \"here\")\n - Create a directory github.com/kasvith\n - Clone the repo into that directory and cd to it\n\n\u003e Make sure you have an active internet connection as for the first time it will download some depedencies.\n\n## Build the kache\n - `mage vendor` will install all the dependencies of the project(will take some time)\n - `mage kache` will produce the binary of the kache in `bin` directory\n - `mage kachecli` will produce the binary of the kache-cli in `bin` directory\n \n### Other options\n - `mage check` will run `gofmt`, `goimports`, `go vet` and all tests with 32 bit platform including\n - `mage fmt` will run only `gofmt` on the code, will warn you when code has format errors\n - `mage vet` will reports suspicious constructs\n - `mage imports` will check import errors\n - `mage test` will run a unit test with defaults\n - `mage test386` will run a test in 32-bit mode\n - `mage testrace` will run a test with `race` conditions enabled\n - `mage -l` for list all commands\n\nSpecial note : According to your environment executable will be built, for windows users it will need to add `.exe` to the end of `-o` flag like `go build -o bin/kache.exe ./cmd/kache`\n\n# Contributions\n**kache** is an **opensource** project. Contributions are welcome\n\n- Fork the repo and star it :star:\n- Open issues :boom:\n- Raise PRs for issues :raised_hand:\n- Help on documentation :page_facing_up:\n- [Slack](https://join.slack.com/t/kache-db/shared_invite/enQtNDQ4NzYyNzI2NjQwLTMzNjNiMGIxYTQ1MDRiZjMxOTMwYzRiOTdkOTgyMThlYjM1MDlkZTVkN2Y5MmJjZmQyNGU2MDZlZWE2OTc3OWU \"Slack\")\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkasvith%2Fkache","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkasvith%2Fkache","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkasvith%2Fkache/lists"}