Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nalgeon/redka
Redis re-implemented with SQLite
https://github.com/nalgeon/redka
database key-value redis sqlite
Last synced: about 15 hours ago
JSON representation
Redis re-implemented with SQLite
- Host: GitHub
- URL: https://github.com/nalgeon/redka
- Owner: nalgeon
- License: bsd-3-clause
- Created: 2024-04-06T19:10:02.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2024-10-08T04:34:10.000Z (2 months ago)
- Last Synced: 2024-10-29T15:34:41.260Z (about 1 month ago)
- Topics: database, key-value, redis, sqlite
- Language: Go
- Homepage:
- Size: 562 KB
- Stars: 3,493
- Watchers: 26
- Forks: 101
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Roadmap: docs/roadmap.md
Awesome Lists containing this project
- my-awesome - nalgeon/redka - value,redis,sqlite pushed_at:2024-11 star:3.5k fork:0.1k Redis re-implemented with SQLite (Go)
- awesome-ccamel - nalgeon/redka - Redis re-implemented with SQLite (Go)
- awesome-repositories - nalgeon/redka - Redis re-implemented with SQLite (Go)
- awesome-go - redka - Redis re-implemented with SQLite. Stars:`3.5K`. (Database / Databases Implemented in Go)
README
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](docs/roadmap.md) 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](docs/commands/strings.md) are the most basic Redis type, representing a sequence of bytes.
- [Lists](docs/commands/lists.md) are sequences of strings sorted by insertion order.
- [Sets](docs/commands/sets.md) are unordered collections of unique strings.
- [Hashes](docs/commands/hashes.md) are field-value (hash)maps.
- [Sorted sets](docs/commands/sorted-sets.md) (zsets) are collections of unique strings ordered by each string's associated score.Redka also provides commands for [key management](docs/commands/keys.md), [server/connection management](docs/commands/server.md), and [transactions](docs/commands/transactions.md).
## Installation and usage
Redka comes in two flavors:
- Standalone Redis-compatible server: [installation](docs/install-standalone.md), [usage](docs/usage-standalone.md).
- Go module for in-process use: [installation](docs/install-module.md), [usage](docs/usage-module.md).## Performance
According to the [benchmarks](docs/performance.md), 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](docs/persistence.md) 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:
- [Redis](https://redis.io/) ([Salvatore Sanfilippo](https://github.com/antirez)). It's such an amazing idea to go beyond the get-set paradigm and provide a convenient API for more complex data structures.
- [SQLite](https://sqlite.org/) ([D. Richard Hipp](https://www.sqlite.org/crew.html)). The in-process database powering the world.
- [Redcon](https://github.com/tidwall/redcon) ([Josh Baker](https://github.com/tidwall)). A very clean and convenient implementation of a RESP server.Logo font by [Ek Type](https://ektype.in/).
## Support
Redka is mostly a [one-man](https://antonz.org/) project, not backed by a VC fund or anything.
If you find Redka useful, please star it on GitHub and spread the word among your peers. It really helps to move the project forward.
★ [Subscribe](https://antonz.org/subscribe/) to stay on top of new features.