{"id":20049579,"url":"https://github.com/iwanbk/rimcu","last_synced_at":"2025-10-10T12:10:33.762Z","repository":{"id":36228940,"uuid":"217322325","full_name":"iwanbk/rimcu","owner":"iwanbk","description":"Redis server-assisted client side caching Go library","archived":false,"fork":false,"pushed_at":"2022-12-02T11:04:35.000Z","size":178,"stargazers_count":12,"open_issues_count":6,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-08T21:41:39.353Z","etag":null,"topics":["client-side-caching","go","golang","in-memory-caching","redis","redis-client","resp3","resp3-client"],"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/iwanbk.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":"2019-10-24T14:41:57.000Z","updated_at":"2022-11-09T08:42:33.000Z","dependencies_parsed_at":"2023-01-16T23:37:15.894Z","dependency_job_id":null,"html_url":"https://github.com/iwanbk/rimcu","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iwanbk%2Frimcu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iwanbk%2Frimcu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iwanbk%2Frimcu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iwanbk%2Frimcu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iwanbk","download_url":"https://codeload.github.com/iwanbk/rimcu/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252488918,"owners_count":21756236,"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":["client-side-caching","go","golang","in-memory-caching","redis","redis-client","resp3","resp3-client"],"created_at":"2024-11-13T11:51:08.378Z","updated_at":"2025-10-10T12:10:33.673Z","avatar_url":"https://github.com/iwanbk.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# rimcu - Redis server-assisted client side caching Go library\n\n![build workflow](https://github.com/iwanbk/rimcu/actions/workflows/test_lint.yml/badge.svg)\n[![PkgGoDev](https://pkg.go.dev/badge/github.com/iwanbk/rimcu)](https://pkg.go.dev/github.com/iwanbk/rimcu)\n[![codecov](https://codecov.io/gh/iwanbk/rimcu/branch/master/graph/badge.svg)](https://codecov.io/gh/iwanbk/rimcu)\n[![Maintainability](https://api.codeclimate.com/v1/badges/edbfa2013d2a8d2b74ce/maintainability)](https://codeclimate.com/github/iwanbk/rimcu/maintainability)\n\nRimcu is Go library for Redis server-assisted client side caching.\nIn other words, it is a combination of Redis cient library and in memory cache library.\n\n## System Requirements\n\nRedis 6 or newer, with it's client side caching feature\n\n## How it works\n\nIt caches the Redis data in your server's RAM and sync it to Redis server when the data changed.\nSo you don't need to always ask the Redis server to get your cache data.\n\nIt supports three modes:\n- RESP2: single node Redis with RESP2 protocol, it is the default one\n- RESP2ClusterProxy: Redis cluster with RESP2 protocol and front proxy\n- RESP3: single node Redis with RESP3 protocol, not fully tested yet\n\n## Examples\n\n```go\n\n```\n## Features\n\n| Features         | Status       | Description                 |\n|------------------|--------------|-----------------------------|\n| Metrics Client   | :x: :wrench: | Configurable metrics client |\n| Password Support | :x: :wrench: |                             |\n| Strings          | :x: :wrench: | redis strings data type     |\n| list             | :x: :wrench: | redis list data type        |\n| hash             | :x: :wrench: | redis hash data type        |\n\n\n\nConnection Pool\n\n| Features                            | Status | Description                          |\n|-------------------------------------|--- |--------------------------------------|\n| Single Pool                         | :x: :wrench: | Single conn pool for all cache types |\n| Vanilla Redigo Pool                 | :x: :wrench: | Reuse vanilla redigo pool  |\n| Max Number of Connections           | :white_check_mark: |                                      |\n| Waiting for connection with timeout | :white_check_mark: |                                      |\n| Idle connection checking            |  :x: :wrench: |                                      | \n| Healthcheck                         | :x: :wrench: |                                      |\n\n## Caches\nWe categorize the cache based on the Redis data types mention in https://redis.io/docs/manual/data-types/.\nWe need to do this because each type of cache will be stored differently.\n\n\n### StringsCache\n\nStringsCache is cache for redis [`strings`](https://redis.io/topics/data-types#strings) data type.\n\n### Implemented Commands\n\n- [x] Setex\n- [x] Get\n- [x] Del\n- [ ] MSet (waiting support at RESP2)\n- [ ] MGet (waiting support at RESP2)\n- [ ] Append\n\n## ListCache (RESP2)\n\n**IT IS UNDER REWORK**\n\nOld implementation can be found at https://github.com/iwanbk/rimcu/blob/v0.01/resp2/listcache.go#L33\n\n```\nListCache is cache for Redis list data type which uses RESP2 protocol. It is still in very early development phase. See the godoc page for more explanation.\n \nImplemented commands:\n- [x]LPOP\n- [x]RPUSH\n- [x]GET (it is Rimcu specific command)\n- [ ]...\n```\n\n\n# Development\nLocal Test\n```bash\nexport TEST_REDIS_ADDRESS=127.0.0.1:6379 # replace with your redis 6 server\ngo test ./...\n```\n\nTODO\n\n| Features          | Status       | Description                                        |\n|-------------------|--------------|----------------------------------------------------|\n| Unify inmem cache | :x: :wrench: | resp2 \u0026 resp3 currently using two different memcache lib |\n\n\n\n# CREDITS\n\n- [redigo](https://github.com/gomodule/redigo) redis package is copied and modified to this repo. It is used to provide RESP2 support.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiwanbk%2Frimcu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiwanbk%2Frimcu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiwanbk%2Frimcu/lists"}