Name | Date | Size | #Lines | LOC | ||
---|---|---|---|---|---|---|
.. | 03-May-2022 | - | ||||
.github/workflows/ | H | 05-May-2020 | - | |||
_example/ | H | 05-May-2020 | - | |||
.codecov.yml | H A D | 05-May-2020 | 393 | |||
.gitignore | H A D | 05-May-2020 | 18 | |||
LICENSE | H A D | 05-May-2020 | 11.1 KiB | |||
Makefile | H A D | 05-May-2020 | 1.5 KiB | |||
README.md | H A D | 05-May-2020 | 2.8 KiB | |||
autocache.go | H A D | 05-May-2020 | 6 KiB | |||
autocache_test.go | H A D | 05-May-2020 | 2.2 KiB | |||
go.mod | H A D | 05-May-2020 | 760 | |||
go.sum | H A D | 05-May-2020 | 12.1 KiB | |||
renovate.json | H A D | 05-May-2020 | 41 |
README.md
1[![Build Status](https://github.com/pomerium/autocache/workflows/build/badge.svg)](https://github.com/pomerium/autocache/actions?workflow=build) 2[![codecov](https://img.shields.io/codecov/c/github/pomerium/autocache.svg?style=flat)](https://codecov.io/gh/pomerium/autocache) 3[![Go Report Card](https://goreportcard.com/badge/github.com/pomerium/autocache)](https://goreportcard.com/report/github.com/pomerium/autocache) 4[![GoDoc](https://godoc.org/github.com/pomerium/autocache?status.svg)](https://godoc.org/github.com/pomerium/autocache) 5[![LICENSE](https://img.shields.io/github/license/pomerium/autocache.svg)](https://github.com/pomerium/autocache/blob/master/LICENSE) 6[![pomerium chat](https://img.shields.io/badge/chat-on%20slack-blue.svg?style=flat&logo=slack)](http://slack.pomerium.io) 7 8# Autocache 9 10[Groupcache](https://github.com/golang/groupcache) enhanced with [memberlist](https://github.com/hashicorp/memberlist) for distributed peer discovery. 11 12## TL;DR 13 14See `/_example/` for usage. 15 16### Run 17 18`docker-compose up -f _example/docker-compose.yaml --scale autocache=5` 19 20### Client 21 22```bash 23for i in`seq 10`; do curl "http://autocache.localhost/get/?key=hunter2";echo; done 24 25``` 26 27``` 28$2a$14$1CCq.8WOxEmLY3jdkwZKIeR1bN/B0jnWwwSKc1VTf60A57VOXKblC 29$2a$14$1CCq.8WOxEmLY3jdkwZKIeR1bN/B0jnWwwSKc1VTf60A57VOXKblC 30$2a$14$1CCq.8WOxEmLY3jdkwZKIeR1bN/B0jnWwwSKc1VTf60A57VOXKblC 31$2a$14$1CCq.8WOxEmLY3jdkwZKIeR1bN/B0jnWwwSKc1VTf60A57VOXKblC 32$2a$14$1CCq.8WOxEmLY3jdkwZKIeR1bN/B0jnWwwSKc1VTf60A57VOXKblC 33$2a$14$1CCq.8WOxEmLY3jdkwZKIeR1bN/B0jnWwwSKc1VTf60A57VOXKblC 34$2a$14$1CCq.8WOxEmLY3jdkwZKIeR1bN/B0jnWwwSKc1VTf60A57VOXKblC 35$2a$14$1CCq.8WOxEmLY3jdkwZKIeR1bN/B0jnWwwSKc1VTf60A57VOXKblC 36$2a$14$1CCq.8WOxEmLY3jdkwZKIeR1bN/B0jnWwwSKc1VTf60A57VOXKblC 37$2a$14$1CCq.8WOxEmLY3jdkwZKIeR1bN/B0jnWwwSKc1VTf60A57VOXKblC 38``` 39 40### Server 41 42``` 43autocache_2 | 2020/01/06 06:10:51 bcryptKey/key:"hunter2" time:969.8645ms 44autocache_2 | 2020/01/06 06:10:51 cacheHandler: group[bcrypt] key["hunter2"] time[969.9474ms] 45autocache_1 | 2020/01/06 06:10:51 cacheHandler: group[bcrypt] key["hunter2"] time[1.3559ms] 46autocache_3 | 2020/01/06 06:10:51 cacheHandler: group[bcrypt] key["hunter2"] time[1.1236ms] 47autocache_4 | 2020/01/06 06:10:51 cacheHandler: group[bcrypt] key["hunter2"] time[1.2935ms] 48autocache_5 | 2020/01/06 06:10:51 cacheHandler: group[bcrypt] key["hunter2"] time[985.2µs] 49autocache_6 | 2020/01/06 06:10:51 cacheHandler: group[bcrypt] key["hunter2"] time[1.2163ms] 50autocache_2 | 2020/01/06 06:10:51 cacheHandler: group[bcrypt] key["hunter2"] time[23.3µs] 51autocache_1 | 2020/01/06 06:10:51 cacheHandler: group[bcrypt] key["hunter2"] time[495.3µs] 52autocache_3 | 2020/01/06 06:10:51 cacheHandler: group[bcrypt] key["hunter2"] time[497.3µs] 53autocache_4 | 2020/01/06 06:10:52 cacheHandler: group[bcrypt] key["hunter2"] time[770.5µs] 54``` 55