https://github.com/pomerium/autocache
Distributed cache with gossip peer membership enrollment.
https://github.com/pomerium/autocache
cache go golang gossip groupcache memberlist pomerium
Last synced: 3 months ago
JSON representation
Distributed cache with gossip peer membership enrollment.
- Host: GitHub
- URL: https://github.com/pomerium/autocache
- Owner: pomerium
- License: apache-2.0
- Created: 2020-01-04T06:23:54.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2024-07-16T17:59:50.000Z (12 months ago)
- Last Synced: 2025-04-02T05:09:09.716Z (4 months ago)
- Topics: cache, go, golang, gossip, groupcache, memberlist, pomerium
- Language: Go
- Homepage: https://www.pomerium.io/
- Size: 183 KB
- Stars: 111
- Watchers: 8
- Forks: 13
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
[](https://github.com/pomerium/autocache/actions?workflow=build)
[](https://codecov.io/gh/pomerium/autocache)
[](https://goreportcard.com/report/github.com/pomerium/autocache)
[](https://godoc.org/github.com/pomerium/autocache)
[](https://github.com/pomerium/autocache/blob/master/LICENSE)
[](https://discuss.pomerium.com/)# Autocache
[Groupcache](https://github.com/golang/groupcache) enhanced with [memberlist](https://github.com/hashicorp/memberlist) for distributed peer discovery.
## TL;DR
See `/_example/` for usage.
### Run
`docker-compose -f _example/docker-compose.yaml up --scale autocache=5`
### Client
```bash
for i in`seq 10`; do curl "http://autocache.localhost/get/?key=hunter2";echo; done```
```
$2a$14$1CCq.8WOxEmLY3jdkwZKIeR1bN/B0jnWwwSKc1VTf60A57VOXKblC
$2a$14$1CCq.8WOxEmLY3jdkwZKIeR1bN/B0jnWwwSKc1VTf60A57VOXKblC
$2a$14$1CCq.8WOxEmLY3jdkwZKIeR1bN/B0jnWwwSKc1VTf60A57VOXKblC
$2a$14$1CCq.8WOxEmLY3jdkwZKIeR1bN/B0jnWwwSKc1VTf60A57VOXKblC
$2a$14$1CCq.8WOxEmLY3jdkwZKIeR1bN/B0jnWwwSKc1VTf60A57VOXKblC
$2a$14$1CCq.8WOxEmLY3jdkwZKIeR1bN/B0jnWwwSKc1VTf60A57VOXKblC
$2a$14$1CCq.8WOxEmLY3jdkwZKIeR1bN/B0jnWwwSKc1VTf60A57VOXKblC
$2a$14$1CCq.8WOxEmLY3jdkwZKIeR1bN/B0jnWwwSKc1VTf60A57VOXKblC
$2a$14$1CCq.8WOxEmLY3jdkwZKIeR1bN/B0jnWwwSKc1VTf60A57VOXKblC
$2a$14$1CCq.8WOxEmLY3jdkwZKIeR1bN/B0jnWwwSKc1VTf60A57VOXKblC
```### Server
```
autocache_2 | 2020/01/06 06:10:51 bcryptKey/key:"hunter2" time:969.8645ms
autocache_2 | 2020/01/06 06:10:51 cacheHandler: group[bcrypt] key["hunter2"] time[969.9474ms]
autocache_1 | 2020/01/06 06:10:51 cacheHandler: group[bcrypt] key["hunter2"] time[1.3559ms]
autocache_3 | 2020/01/06 06:10:51 cacheHandler: group[bcrypt] key["hunter2"] time[1.1236ms]
autocache_4 | 2020/01/06 06:10:51 cacheHandler: group[bcrypt] key["hunter2"] time[1.2935ms]
autocache_5 | 2020/01/06 06:10:51 cacheHandler: group[bcrypt] key["hunter2"] time[985.2µs]
autocache_6 | 2020/01/06 06:10:51 cacheHandler: group[bcrypt] key["hunter2"] time[1.2163ms]
autocache_2 | 2020/01/06 06:10:51 cacheHandler: group[bcrypt] key["hunter2"] time[23.3µs]
autocache_1 | 2020/01/06 06:10:51 cacheHandler: group[bcrypt] key["hunter2"] time[495.3µs]
autocache_3 | 2020/01/06 06:10:51 cacheHandler: group[bcrypt] key["hunter2"] time[497.3µs]
autocache_4 | 2020/01/06 06:10:52 cacheHandler: group[bcrypt] key["hunter2"] time[770.5µs]
```