5 ms·
Show HN: A simple zero-dependency in-memory key-value store for Golang
There are plenty of other caches and KV stores out there, but this one aims to minimise the surface a bit more:
- There's less error handling required due to some code simplifications made
- It stores only strings so no type-casting is required
- There are no mutexes involved so we're not locking writes at any point
This is one of my first OSS contributions so I'd love some feedback :)
- geoah 4y agoHave you benchmarked this against using a sync.Map based version by any chance? It would be really interesting to see what’s the performance difference.
- tomaszsobota 4y agoThat's a great idea, I'll try and do that! Also, thanks for dawning on me the existence of `sync.Map`, I tried looking for something native but somehow I missed this. I guess tbkv won't match the native code performance, but it's a great exercise nonetheless! :)
- tomaszsobota 4y agoThe difference is even more than I expected. On my hardware, a simple Set->Get scenario takes TBKV 1500 ns/op where sync.Map takes only ~80 ns/op to perform the same task. That's a 20x difference in duration :( The benchmark code is already in master.
- Ajnasz 4y agoI like the idea of using channels. Maybe it would be good to be able to pass a context for the store, so the loop stops when the context cancelled.