Redis re-implemented with SQLite
Go to file
2024-06-29 00:14:13 +05:00
.github doc: granular docs 2024-06-10 09:09:50 +05:00
cmd refactor: use vfs=memdb instead of mode=memory&cache=shared 2024-06-10 21:55:49 +05:00
docs doc: readme - v0.5.2 2024-06-29 00:14:13 +05:00
example build: example - bump ncruces/go-sqlite3 to 0.16.2 2024-06-12 13:43:57 +05:00
internal refactor: use vfs=memdb instead of mode=memory&cache=shared 2024-06-10 21:55:49 +05:00
.gitignore initial commit 2024-04-07 00:12:54 +05:00
Dockerfile refactor: docker - use valkey-cli for smaller image 2024-05-05 15:30:27 +05:00
go.mod initial commit 2024-04-07 00:12:54 +05:00
go.sum initial commit 2024-04-07 00:12:54 +05:00
LICENSE initial commit 2024-04-07 00:12:54 +05:00
logo.svg doc: logo 2024-04-07 23:06:28 +05:00
Makefile build: cli in docker 2024-04-14 16:57:46 +05:00
README.md doc: readme - performance 2024-06-10 10:13:25 +05:00
redka_test.go refactor: use vfs=memdb instead of mode=memory&cache=shared 2024-06-10 21:55:49 +05:00
redka.go fix: db - set pragmas in connection string (#28) 2024-06-09 01:37:00 +05:00

Redka

Redka aims to reimplement the core parts of Redis with SQLite, while remaining compatible with Redis API.

Notable features:

  • Data does not have to fit in RAM.
  • ACID transactions.
  • SQL views for better introspection and reporting.
  • Both in-process (Go API) and standalone (RESP) servers.
  • Redis-compatible commands and wire protocol.

Redka is functionally ready for 1.0. Feel free to try it in non-critical production scenarios and provide feedback in the issues.

Commands

Redka supports five core Redis data types:

  • Strings are the most basic Redis type, representing a sequence of bytes.
  • Lists are sequences of strings sorted by insertion order.
  • Sets are unordered collections of unique strings.
  • Hashes are field-value (hash)maps.
  • Sorted sets (zsets) are collections of unique strings ordered by each string's associated score.

Redka also provides commands for key management, server/connection management, and transactions.

Installation and usage

Redka comes in two flavors:

Performance

According to the benchmarks, Redka is several times slower than Redis. Still, it can do up to 100K op/sec on a Macbook Air, which is pretty good if you ask me (and probably 10x more than most applications will ever need).

Redka stores data in a SQLite database with a simple schema and provides views for better introspection.

Contributing

Contributions are welcome. For anything other than bugfixes, please first open an issue to discuss what you want to change.

Be sure to add or update tests as appropriate.

Acknowledgements

Redka would not be possible without these great projects and their creators:

Logo font by Ek Type.

Funding

Redka is mostly a one-man project, not backed by a VC fund or anything.

If you find Redka useful, please consider sponsoring it on GitHub. It really helps to move the project forward.

Become a sponsor to support Redka.

Subscribe to stay on top of new features.