
Distributed cache and K/V store in Go. Embeddable or independent service - mastabadtomm
https://github.com/buraksezer/olric
======
marcinzm
Didn't Discord have issues when they did caching in Go due to the garbage
collector having to run over all objects ever 2 minutes? Was that resolved in
a newer version of Go or does this project get around that problem in another
way?

~~~
mastabadtomm
I don't know the Discord case but Olric implements an append-only log file
indexed with a built-in map(uint64 > uint64) to store data.

~~~
wlll
It was discussed here
[https://news.ycombinator.com/item?id=22238335](https://news.ycombinator.com/item?id=22238335)

------
continuations
What data structure does it use - LSM tree or hash table or something else?

Also if I'm using it as an embedded library does it do anything to help me to
replicate the data?

------
jrockway
[https://github.com/boltdb/bolt](https://github.com/boltdb/bolt) seems very
similar.

~~~
mastabadtomm
Olric is an in-memory and distributed key/value store. Bolt is an b-tree based
on-disk key/value store and it's not distributed. Olric can be compared with
[https://github.com/golang/groupcache](https://github.com/golang/groupcache)
and it's highly inspired by Amazon DynamoDB paper and Hazelcast.

------
ddorian43
Why not patch/fork redis and include that as a cache that can be used in
different languages and has ~all redis features ?

~~~
mastabadtomm
Olric is not Redis. Redis implements different data structures and has
different persistence options. Olric only provides a key/value store and it's
suitable to be used as a distributed cache. README.md file contains enough
information to compare those tools.

