{"id":17158227,"url":"https://github.com/msoap/raphanus","last_synced_at":"2025-04-13T13:30:41.214Z","repository":{"id":57481296,"uuid":"65225675","full_name":"msoap/raphanus","owner":"msoap","description":"Simple in-memory cache (run as server or embedding Go-library)","archived":false,"fork":false,"pushed_at":"2024-09-29T21:47:19.000Z","size":156,"stargazers_count":7,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-27T04:33:22.905Z","etag":null,"topics":["cache","docker","go","golang","memcache","redis","server"],"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/msoap.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":"2016-08-08T17:42:36.000Z","updated_at":"2024-09-29T21:47:22.000Z","dependencies_parsed_at":"2024-02-11T15:28:12.238Z","dependency_job_id":"980b3042-79c9-4fc8-9563-2ee4333346d7","html_url":"https://github.com/msoap/raphanus","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msoap%2Fraphanus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msoap%2Fraphanus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msoap%2Fraphanus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msoap%2Fraphanus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/msoap","download_url":"https://codeload.github.com/msoap/raphanus/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248720946,"owners_count":21151016,"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","docker","go","golang","memcache","redis","server"],"created_at":"2024-10-14T22:10:53.290Z","updated_at":"2025-04-13T13:30:41.181Z","avatar_url":"https://github.com/msoap.png","language":"Go","readme":"Raphanus - simple in-memory cache\n---------------------------------\n\n[![Go Reference](https://pkg.go.dev/badge/github.com/msoap/raphanus/.svg)](https://pkg.go.dev/github.com/msoap/raphanus/)\n[![Go](https://github.com/msoap/raphanus/actions/workflows/go.yml/badge.svg)](https://github.com/msoap/raphanus/actions/workflows/go.yml)\n[![Coverage Status](https://coveralls.io/repos/github/msoap/raphanus/badge.svg?branch=master)](https://coveralls.io/github/msoap/raphanus?branch=master)\n[![Docker Pulls](https://img.shields.io/docker/pulls/msoap/raphanus.svg?maxAge=3600)](https://hub.docker.com/r/msoap/raphanus/)\n[![Sourcegraph](https://sourcegraph.com/github.com/msoap/raphanus/-/badge.svg)](https://sourcegraph.com/github.com/msoap/raphanus?badge)\n[![Report Card](https://goreportcard.com/badge/github.com/msoap/raphanus)](https://goreportcard.com/report/github.com/msoap/raphanus)\n\n## Install\n\nFrom source:\n\n    go get -u github.com/msoap/raphanus\n    # build server \u0026 cli\n    cd $GOPATH/src/github.com/msoap/raphanus/server \u0026\u0026 go build -o $GOPATH/bin/raphanus-server\n    # cli client not implement now\n    cd $GOPATH/src/github.com/msoap/raphanus/cli \u0026\u0026 go build -o $GOPATH/bin/raphanus-cli\n\nFrom Docker hub:\n\n    docker pull msoap/raphanus\n\n## Run server\n\n    raphanus-server [options]\n    options:\n      -address string\n           \taddress for bind server (default \"localhost:8771\")\n      -auth string\n           \tuser:password for enable HTTP basic authentication\n      -filename string\n           \tfile name for storage on disk, '' - for work in-memory only\n      -sync-time int\n           \ttime in seconds between sync on disk\n      -version\n           \tget version\n\nin Docker container:\n\n    docker run --name raphanus --publish 8771:8771 --detach msoap/raphanus\n\n## Examples: get calls to server by curl\n\n * get count of keys: `curl -s 'http://localhost:8771/v1/length'`\n * get keys: `curl -s 'http://localhost:8771/v1/keys'`\n * get stat with authentication: `curl -s -u user:pass 'http://localhost:8771/v1/stat'`\n * set integer key `k1` with ttl (100 sec): `curl -s -X POST -d 123 'http://localhost:8771/v1/int/k1?ttl=100'`\n * get integer key `k1`: `curl -s 'http://localhost:8771/v1/int/k1'`\n * set string key `k2` without ttl: `curl -s -X POST -d 'str value' 'http://localhost:8771/v1/str/k2'`\n * get string key `k2`: `curl -s 'http://localhost:8771/v1/str/k2'`\n * set list value: `curl -s -X POST -H 'Content-Type: application/json' -d '[\"v1\", \"v2\"]' http://localhost:8771/v1/list/k3`\n * get list value: `curl -s 'http://localhost:8771/v1/list/k3'`\n * set dict value: `curl -s -X POST -H 'Content-Type: application/json' -d '{\"dk1\": \"v1\", \"dk2\": \"v2\"}' http://localhost:8771/v1/dict/k4`\n * get dict value: `curl -s 'http://localhost:8771/v1/dict/k4'`\n * delete key `k1`: `curl -s -X DELETE http://localhost:8771/v1/remove/k1`\n * see other in [handlers.go](https://github.com/msoap/raphanus/blob/master/server/handlers.go)\n\n## Use as embed DB\n\n```Go\nimport (\n    \"github.com/msoap/raphanus\"\n    \"github.com/msoap/raphanus/common\"\n)\n\nfunc main() {\n    raph := raphanus.New()\n    // or with storage, with sync every 300 seconds\n    // raph := raphanus.New().SetStorage(\"filename.db\", 300)\n    raph.SetStr(\"key\", \"value\")\n    v, err := raph.GetStr(\"key\")\n    if err == raphanuscommon.ErrKeyNotExists {\n        ...\n    }\n\n    raph.UnderLock(func () {\n        v, err := raph.GetStr(\"k1\")\n        if err != nil {\n            return\n        }\n        raph.SetStr(\"k1\", v + \" updated\", 0)\n    })\n}\n```\n\n## Use client library for connect with server\n[![GoDoc](https://godoc.org/github.com/msoap/raphanus/client?status.svg)](https://godoc.org/github.com/msoap/raphanus/client)\n\n```Go\nimport (\n    \"github.com/msoap/raphanus/client\"\n    \"github.com/msoap/raphanus/common\"\n)\n\nfunc main() {\n\t// with default address:\n\traph := raphanusclient.New()\n\t// or with another address:\n\t// raph := raphanusclient.New(raphanusclient.Cfg{Address: \"http://localhost:8771\"})\n\t// or with authentication:\n\t// raph := raphanusclient.New(raphanusclient.Cfg{User: \"uname\", Password: \"pass\"})\n\n    raph.SetStr(\"key\", \"value\", 3600)\n    v, err := raph.GetStr(\"key\")\n    if err == raphanuscommon.ErrKeyNotExists {\n        ...\n    }\n}\n```\n\nAn example of using the library: [simple.go](https://github.com/msoap/raphanus/blob/master/client/examples/simple.go)\n\n## Bencmarks:\n### with servers in Docker\n\n    $ docker run --name raphanus --publish 8771:8771 --rm msoap/raphanus\n    $ docker run --name redis --rm --publish 6379:6379 redis\n    $ docker run --name memcache --rm --publish 11211:11211 memcached\n    $ make run-benchmark\n    \n    Benchmark_raphanusServer-4      \t    5000\t   1196515 ns/op\t    9432 B/op\t     128 allocs/op\n    Benchmark_raphanusEmbed-4       \t 5000000\t      1633 ns/op\t     184 B/op\t       4 allocs/op\n    Benchmark_redis-4               \t   10000\t    636079 ns/op\t     343 B/op\t      19 allocs/op\n    Benchmark_memcache-4            \t   10000\t    689439 ns/op\t    2744 B/op\t      63 allocs/op\n    Benchmark_raphanusServerTTL-4   \t    5000\t   1178499 ns/op\t    9459 B/op\t     130 allocs/op\n    Benchmark_raphanusEmbedTTL-4    \t 5000000\t      2554 ns/op\t     194 B/op\t       6 allocs/op\n    Benchmark_redisTTL-4            \t   10000\t    791056 ns/op\t     417 B/op\t      21 allocs/op\n    Benchmark_memcacheTTL-4         \t   10000\t    733611 ns/op\t    2744 B/op\t      63 allocs/op\n\n### local raphanus and redis servers (on MacOS)\n\nRedis 3.2.7\n\nmemcached 1.4.34\n\n    $ make run-benchmark\n    Benchmark_raphanusServer-4      \t   20000\t    349394 ns/op\t    9465 B/op\t     131 allocs/op\n    Benchmark_raphanusEmbed-4       \t 3000000\t      1919 ns/op\t     213 B/op\t       7 allocs/op\n    Benchmark_boltdb-4              \t   30000\t    258030 ns/op\t   34320 B/op\t      69 allocs/op\n    Benchmark_redis-4               \t   50000\t    128278 ns/op\t     411 B/op\t      23 allocs/op\n    Benchmark_memcache-4            \t   50000\t    135533 ns/op\t    2752 B/op\t      63 allocs/op\n    Benchmark_raphanusServerTTL-4   \t   20000\t    356989 ns/op\t    9499 B/op\t     133 allocs/op\n    Benchmark_raphanusEmbedTTL-4    \t 2000000\t      3347 ns/op\t     244 B/op\t       9 allocs/op\n    Benchmark_redisTTL-4            \t   50000\t    127851 ns/op\t     473 B/op\t      25 allocs/op\n    Benchmark_memcacheTTL-4         \t   50000\t    135326 ns/op\t    2811 B/op\t      67 allocs/op\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmsoap%2Fraphanus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmsoap%2Fraphanus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmsoap%2Fraphanus/lists"}