libCacheSim
ristretto
libCacheSim | ristretto | |
---|---|---|
2 | 19 | |
125 | 5,355 | |
- | 1.6% | |
8.3 | 6.1 | |
15 days ago | 2 months ago | |
C | Go | |
GNU General Public License v3.0 only | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
libCacheSim
-
Sieve is simpler than LRU
https://github.com/1a1a11a/libCacheSim/blob/develop/libCache...
-
Otter, Fastest Go in-memory cache based on S3-FIFO algorithm
/u/someplaceguy,
Those LIRS traces, along with many others, available at this page [1]. I did a cursory review using their traces using Caffeine's and the author's simulators to avoid bias or a mistaken implementation. In their target workloads Caffeine was on par or better [2]. I have not seen anything novel in this or their previous works and find their claims to be easily disproven, so I have not implement this policy in Caffeine simulator yet.
[1]: https://github.com/ben-manes/caffeine/wiki/Simulator
[2]: https://github.com/1a1a11a/libCacheSim/discussions/20
ristretto
-
Otter, Fastest Go in-memory cache based on S3-FIFO algorithm
1. Unfortunately, ristretto has been showing hit ratio around 0 on almost all traces for a very long time now and the authors don't respond to this in any way. Vitess for example has already changed it to another cache. Here are two issues about it: https://github.com/dgraph-io/ristretto/issues/346 and https://github.com/dgraph-io/ristretto/issues/336. That is, ristretto shows such results even on its own benchmarks. You can see it just by running hit ratio benchmarks on a very simple zipf distribution from the ristretto repository: https://github.com/dgraph-io/ristretto/blob/main/stress_test.... On this test I got the following:
-
S3 Express Is All You Need
That's exactly how Userify[0] used to work. (when it was Python; now that it's a Go app, we do the caching in memory using Ristretto[1]).
0. https://userify.com (team ssh key management/sudo authz)
1. https://github.com/dgraph-io/ristretto
-
Theine - High performance in-memory cache
I also do some hit ratio benchmarks and Theine's results are much better than Ristretto. See results in README: https://github.com/Yiling-J/theine-go#hit-ratios
-
Python deserves a good in-memory cache library!
If you know Caffeine(Java)/Ristretto(Go)/Moka(Rust), you know what Theine is. Python deserves a good in-memory cache library.
-
VCache: A Simple In-Memory Cache Library
Thanks for sharing. There are a lot of options for embedded in-memory caches: https://github.com/dgraph-io/ristretto https://awesome-go.com/caches/ Do you have any comparisons or details on how your project has a different approach?
-
Cacheme: Asyncio cache framework with multiple storages and thundering herd protection
I made Cacheme years ago, which support redis and synchronous API only. Then I switch to Go and found that there are some awesome cache projects in Go(ristretto, gocache...), I also made my own Cacheme go version: cacheme-go. After trying asyncio and type hint, I think it's time to rewrite my old Cacheme.
-
Show HN: Zcached, in-memory key-value cache wire-compatible with memcached
zcached is an in-memory key-value cache exposing a memcached ASCII protocol-compatible interface, built on pluggable cache engines like Ristretto and freecache [0].
It's not performance-competitive with memcached, especially at higher thread counts. That said, it achieves about 1.1M ops/s, but at significantly higher P99 and P999 latency (as measured by memtier). See [1] and [2] for benchmark results from my 7950x-based workstation.
Disclaimer: This is a hobby project created for fun while hacking over the holidays. zcached is not a commercial product and never will be. Don't use it in production; consider this a technology demo more than anything.
I don't expect the source code to build outside of my environment, but for those interested in playing with it, binary artifacts are available at [3]. Try `zcached --address tcp:localhost:11211`.
[0] https://github.com/dgraph-io/ristretto, https://github.com/coocood/freecache
- What is the coolest Go open source projects you have seen?
-
Quitting Dgraph Labs
While I never used dgraph, I do use badger and ristretto and am similarly in a bind over their long-term survival (moreso badger than ristretto)...
-
Recommendation for Key/Value storage
There are also different packages used as a wrapper on top of the Go map based on what your requirements are (storing a lot of data) https://github.com/allegro/bigcache or (need performance) https://github.com/dgraph-io/ristretto. For basic use-cases, the standard Go map should be enough. Just keep in mind whether you need concurrent access to your data structure, in which case you should guard your map with a mutex .
What are some alternatives?
Caffeine - A high performance caching library for Java
go-cache-benchmark - Cache benchmark for Golang
xsync - Concurrent data structures for Go
BigCache - Efficient cache for gigabytes of data written in Go.
maphash
stretto - Stretto is a Rust implementation for Dgraph's ristretto (https://github.com/dgraph-io/ristretto). A high performance memory-bound Rust cache.
sosp23-s3fifo - The repo for SOSP23 paper: FIFO queues are all you need for cache evictions
moka - A high performance concurrent caching library for Rust
golang-fifo - Modern efficient cache design with simple FIFO queue only in Golang
parquet-go - Go library to read/write Parquet files
otter - A high performance lockless cache for Go.
IceFireDB - @IceFireLabs -> IceFireDB is a database built for web3.0 It strives to fill the gap between web2 and web3.0 with a friendly database experience, making web3 application data storage more convenient, and making it easier for web2 applications to achieve decentralization and data immutability.