Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mambisi/escanor
High performance key value database with useful json document indexing and manipulations.
https://github.com/mambisi/escanor
database key-value memory-database redis rust rust-lang
Last synced: 3 months ago
JSON representation
High performance key value database with useful json document indexing and manipulations.
- Host: GitHub
- URL: https://github.com/mambisi/escanor
- Owner: mambisi
- License: mit
- Created: 2020-04-11T00:32:48.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2020-12-05T21:12:46.000Z (almost 4 years ago)
- Last Synced: 2024-07-18T04:39:29.061Z (4 months ago)
- Topics: database, key-value, memory-database, redis, rust, rust-lang
- Language: Rust
- Homepage:
- Size: 994 KB
- Stars: 52
- Watchers: 2
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
![logo](https://raw.githubusercontent.com/mambisi/escanor/master/static/logo.png)
## Welcome to the Escanor
Escanor is a high performance database with [sled](https://github.com/spacejam/sled) as the persistence layer and implement the [redis protocol](https://redis.io/topics/protocol) with useful additions for json data manipulations. This is a side project with the vision of making it into a major project any contributors are welcome.
## Features
- High Performance
- Non Blocking Key-Value
- Asynchronous Server
- Support for Json Document Manipulations
- Works with Redis Clients and Libraries
- Client Cli included.
## [Download](https://github.com/mambisi/escanor/releases)
Download the latest release from the [release page](https://github.com/mambisi/escanor/releases), binaries are available for Windows, Mac and Linux.## [Install](https://github.com/mambisi/escanor/wiki/Installation)
Installation instructions are available in the [wiki page](https://github.com/mambisi/escanor/wiki/Installation)## [Commands](https://github.com/mambisi/escanor/wiki)
Supported commands:
``randomkey``,``info``,``dbsize``,``bgsave``,``auth``,``lastsave``,``persist``,``expire``,``expireat``,``set``,``get``,``getset``,``del``,``get``,``ttl``,``geoadd``,``geodel``,``georem``,``georadius``,``georadiusbymember``
,``geohash``,``geojson``,``jsetr``,``jset``,``jget``,``jpath``,``jmerge``,``jincrby``
checkout the wiki page on how to use these commands
[WIKI PAGE](https://github.com/mambisi/escanor/wiki)## Run
```shell script
git clone https://github.com/mambisi/escanor.git
```
```shell script
cd escanor
```
```shell script
cargo run --bin escanor-server
```
```shell script
cargo run --bin escanor-cli
```## 0.1.5 Features
New cli with pretty formatted json and colored json output
![logo](https://raw.githubusercontent.com/mambisi/escanor/master/static/escanor-cli.png)
#### New Commands
- RANDOMKEY
- INFO
- DBSIZE
- AUTH
- LASTSAVE
- PERSIST
- EXPIRE
- EXPIREAT
- GETSET
- TTL
- JINCRBY
- JSETR#### Changes
JSETR now set raw json
```bash
JSETR user.0 `{"name" : "escanor"}`
```
JSET is used for builder style json creation making it easier to create json form the command lineExample :
```json
{
"name" : "escanor",
"todos" : [
{ "item" : "Wash",
"completed" : false
},
{ "item" : "Code",
"completed" : false
}
]
}
```
Can dynamical be built with JSET
```bash
JSET user name "escanor" todos.+.item "Wash" todos.>.completed false todos.+.item "Code" todos.>.completed false
```
JSET can be used to change json even inner array
```bash
JSET user todos.1.completed true
```JGET
```bash
JGET user
```
outputs
```json
{
"name" : "escanor",
"todos" : [
{ "item" : "Wash",
"completed" : false
},
{ "item" : "Code",
"completed" : true
}
]
}
```JGET can be used to select specific part of a json object
```bash
JGET user todos
```
outputs
```json
[
{ "item" : "Wash",
"completed" : false
},
{ "item" : "Code",
"completed" : true
}
]
```