<commit_before>TinyDB
======

TinyDB is a REDIS implementation in Java. At this moment is in the first stage of development
and only implements a small subset of commands. The objetive is implement a full functional
one-to-one replacement for REDIS.

You probably will wonder why I do this, the answer is Just For Fun.

Implemented commands
--------------------

- SET
- GET
- DEL
- GETSET
- EXISTS
- MGET
- MSET
- INCR
- DECR
- INCRBY
- DECRBY
- HGET
- HSET
- HGETALL
- PING
- ECHO
- TIME
- FLUSHDB
- STRLEN
- RENAME
- KEYS
- HEXISTS
- HDEL
- HKEYS
- HLEN
- APPEND
- HVALS
- LPUSH
- LPOP
- RPUSH
- RPOP
- LLEN
- SADD
- SMEMBERS
- SCARD
- SISMEMBER

Design
------

TinyDB is implemented using asynchronous IO with netty, and at this moment 
with no persistence, only works like an on-memory cache.

Concurrency is managed with StampedLocks and optimistic reads.

Performance
-----------

Performance is quite good, not as good as REDIS, but it's good enough for Java.

This is TinyDB

    $ redis-benchmark -t set,get -h localhost -p 7081 -n 100000 -q
    SET: 67704.80 requests per second
    GET: 70821.53 requests per second
    
And this is REDIS

    $ redis-benchmark -t set,get -h localhost -p 6379 -n 100000 -q
    SET: 97751.71 requests per second
    GET: 100000.00 requests per second

CI
--

[![Build Status](https://drone.io/github.com/tonivade/tiny-db/status.png)](https://drone.io/github.com/tonivade/tiny-db/latest)<commit_msg>added license<commit_after>TinyDB
======

TinyDB is a REDIS implementation in Java. At this moment is in the first stage of development
and only implements a small subset of commands. The objetive is implement a full functional
one-to-one replacement for REDIS.

You probably will wonder why I do this, the answer is Just For Fun.

Implemented commands
--------------------

- SET
- GET
- DEL
- GETSET
- EXISTS
- MGET
- MSET
- INCR
- DECR
- INCRBY
- DECRBY
- HGET
- HSET
- HGETALL
- PING
- ECHO
- TIME
- FLUSHDB
- STRLEN
- RENAME
- KEYS
- HEXISTS
- HDEL
- HKEYS
- HLEN
- APPEND
- HVALS
- LPUSH
- LPOP
- RPUSH
- RPOP
- LLEN
- SADD
- SMEMBERS
- SCARD
- SISMEMBER

Design
------

TinyDB is implemented using asynchronous IO with netty, and at this moment 
with no persistence, only works like an on-memory cache.

Concurrency is managed with StampedLocks and optimistic reads.

Performance
-----------

Performance is quite good, not as good as REDIS, but it's good enough for Java.

This is TinyDB

    $ redis-benchmark -t set,get -h localhost -p 7081 -n 100000 -q
    SET: 67704.80 requests per second
    GET: 70821.53 requests per second
    
And this is REDIS

    $ redis-benchmark -t set,get -h localhost -p 6379 -n 100000 -q
    SET: 97751.71 requests per second
    GET: 100000.00 requests per second

CI
--

[![Build Status](https://drone.io/github.com/tonivade/tiny-db/status.png)](https://drone.io/github.com/tonivade/tiny-db/latest)


LICENSE
-------

TinyDB is released under MIT License
{'fraction_non_alphanumeric': 0.1070700203942896, 'fraction_numerical': 0.03331067301155676, 'mean_word_length': 2.669576059850374, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '844422', 'n_tokens_mistral': 1122, 'n_tokens_neox': 987, 'n_words': 377}