All Projects → ahmdrz → simorgh

ahmdrz / simorgh

Licence: BSD-3-Clause license
Simorgh is a simple server/client and key/value database using radix tree

Programming Languages

go
31211 projects - #10 most used programming language
shell
77523 projects
Makefile
30231 projects

Projects that are alternatives of or similar to simorgh

Netelf
Run executables from memory, over the network, on Windows, Linux, OpenVMS... routers... spaceships... toasters etc.
Stars: ✭ 220 (+1057.89%)
Mutual labels:  in-memory
DataTanker
Embedded persistent key-value store for .NET. Pure C# code.
Stars: ✭ 53 (+178.95%)
Mutual labels:  radix-tree
insightedge
InsightEdge Core
Stars: ✭ 22 (+15.79%)
Mutual labels:  in-memory
Tarantool
Get your data in RAM. Get compute close to data. Enjoy the performance.
Stars: ✭ 2,787 (+14568.42%)
Mutual labels:  in-memory
memshared
Redis-like in-memory database for NodeJS clustered applications
Stars: ✭ 27 (+42.11%)
Mutual labels:  in-memory
dxram
A distributed in-memory key-value storage for billions of small objects.
Stars: ✭ 25 (+31.58%)
Mutual labels:  in-memory
Saldl
A lightweight well-featured CLI downloader optimized for speed and early preview.
Stars: ✭ 203 (+968.42%)
Mutual labels:  in-memory
gocache
High performance and lightweight in-memory cache library with LRU and FIFO support as well as memory-usage-based-eviction
Stars: ✭ 15 (-21.05%)
Mutual labels:  in-memory
distrox
A fast thread-safe in-memory cache library and server that supports a big number of entries in Go
Stars: ✭ 37 (+94.74%)
Mutual labels:  in-memory
sgo
A simple, light and fast Web framework written in Go.
Stars: ✭ 75 (+294.74%)
Mutual labels:  radix-tree
Task Easy
A simple, customizable, and lightweight priority queue for promises.
Stars: ✭ 244 (+1184.21%)
Mutual labels:  in-memory
go-time-series
Time series implementation in Go
Stars: ✭ 27 (+42.11%)
Mutual labels:  in-memory
torrentit
Telegram bot for downloading torrents without storage
Stars: ✭ 33 (+73.68%)
Mutual labels:  in-memory
Swaydb
Non-blocking persistent & in-memory key-value storage engine for JVM.
Stars: ✭ 221 (+1063.16%)
Mutual labels:  in-memory
keshi
A better in-memory cache for Node and the browser
Stars: ✭ 76 (+300%)
Mutual labels:  in-memory
Mongo Java Server
Fake implementation of MongoDB in Java that speaks the wire protocol.
Stars: ✭ 211 (+1010.53%)
Mutual labels:  in-memory
hazelcast-csharp-client
Hazelcast .NET Client
Stars: ✭ 98 (+415.79%)
Mutual labels:  in-memory
zlmdb
Object-relational in-memory database layer based on LMDB
Stars: ✭ 22 (+15.79%)
Mutual labels:  in-memory
quickstep
Quickstep project
Stars: ✭ 22 (+15.79%)
Mutual labels:  in-memory
Ming
MongoDB ODM (Object Document Mapper) with Unit of Works, IdentityMap, Relations and Mongo-In-Memory implementation
Stars: ✭ 19 (+0%)
Mutual labels:  in-memory

Simorgh

It was my very very old golang-codes. So it maybe has a lot of bugs or bad written codes!

Under Construction :)

Simorgh (Phoenix in Persian) is a simple in-memory key/value database using radix tree. Protected by SRP authentication algorithm.

Image of Simorgh from Wikipedia

Simorgh image from wikipedia


In-Memory Key/Value database based on radix tree with Get Set Del Clr commands.

Download

git clone https://github.com/ahmdrz/simorgh
cd simorgh
make

And for install simrogh

sudo make install

Running server

simrogh-server

Note that default port is 8080 and default protocol is tcp , you can pass -port and -protocol to simorgh-server

For more information :

simrogh-server --help

Client

simorgh-client

For more information :

simrogh-client --help

Default Username is : simorgh Default Password is : simorgh

Client program :

Username > simorgh
Password > 
< set a=b
> OK OK
< get a
> OK b
< get b=c
> ERROR ! UNDEFINED
< get b
> ERROR ! UNDEFINED
< set b=c
> OK OK
< get b
> OK c
< del b
> OK OK
< clr
> OK MEMORY CLEARED (1)
< \q
bye

API

You can use simorgh in your Golang program. After installation you can do some code like :

package main

import (
    "fmt"
    "github.com/ahmdrz/simorgh/driver"    
)

func main() {
    si, err := simorgh.New("localhost:8080","simorgh","simorgh","tcp")
	if err != nil {
		panic(err)
	}
	defer si.Close()

    fmt.Println(si.Set("a","b"))
    fmt.Println(si.Get("a"))
    fmt.Println(si.Clr())
}

TODO

  • Password authentication.
  • Save configuration file in encrypted text file.
  • Improve Simorgh Cli.
  • Build Simorgh Golang library.
  • Test with heavy dataset.
  • Improve Simorgh base architecture.
  • Make some test files and pass it to Travis CI.

Contribute

Radix Tree is forked from armon.

I'm not good in data structures , So I will happy if anyone give me suggestions and improve my code.


Build with ❤️ in Iran.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].