Escanor is a high performance database with sled as the persistence layer and implement the redis 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.
-
High Performance
-
Non Blocking Key-Value
-
Asynchronous Server
-
Support for Json Document Manipulations
-
Works with Redis Clients and Libraries
-
Client Cli included.
Download the latest release from the release page, binaries are available for Windows, Mac and Linux.
Installation instructions are available in the wiki page
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
git clone https://github.com/mambisi/escanor.git
cd escanor
cargo run --bin escanor-server
cargo run --bin escanor-cli
New cli with pretty formatted json and colored json output
- RANDOMKEY
- INFO
- DBSIZE
- AUTH
- LASTSAVE
- PERSIST
- EXPIRE
- EXPIREAT
- GETSET
- TTL
- JINCRBY
- JSETR
JSETR now set raw json
JSETR user.0 `{"name" : "escanor"}`
JSET is used for builder style json creation making it easier to create json form the command line
Example :
{
"name" : "escanor",
"todos" : [
{ "item" : "Wash",
"completed" : false
},
{ "item" : "Code",
"completed" : false
}
]
}
Can dynamical be built with JSET
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
JSET user todos.1.completed true
JGET
JGET user
outputs
{
"name" : "escanor",
"todos" : [
{ "item" : "Wash",
"completed" : false
},
{ "item" : "Code",
"completed" : true
}
]
}
JGET can be used to select specific part of a json object
JGET user todos
outputs
[
{ "item" : "Wash",
"completed" : false
},
{ "item" : "Code",
"completed" : true
}
]