- Change zset, set, and hash implementation to use pointers to allow asynchronous deletion
- Add a key garbage collector as a background thread to delete keys marked for deletion
- Fix hash length bug introduced in commit 53db515d6271784399a38256e08eb290eab153ef
- Improve parser performance significantly for large commands (#57)
- Fix bug with big replies and
socket.send
(#56)
- Fix bug with stop clause of HSCAN and ZSCAN (#53)
- Add support to NX and XX parameters of ZADD (#52)
- Fix log levels when changing configuration
- Fix duplicated logs due to multiple logger handlers
- Fix bug where INFO messages weren't being displayed
- Add support to CONFIG GET and CONFIG SET (#49)
- Add support to HSCAN (#47)
- Add support to ZSCAN (#43)
- Add static version of TTL and no-op version of EXPIRE (#44)
- Add contrib/snapshot_lmdb.py and remove contrib/dredis-snapshot (#40)
- Add AUTH support (#37)
- Add RENAME command (#36)
- Fix negative score order in sorted sets (backward incompatible change: #35)
- Add more storage backends (#23)
- New CLI arguments:
--backend
and--backend-option
- Add LMDB as a backend (performed better than LevelDB on Linux with the ext4 filesystem)
- Add memory backend (for tests & development)
- New CLI arguments:
- Make
KEYS
faster by looking at fewer backend keys (#31) - Add
DUMP
andRESTORE
commands (#27 and #28)- Based on the RDB version 7 implementation
- Add
SAVE
command and--rdb
CLI option (#32)SAVE
creates an RDB dump (e.g.,dump_2019-06-21T15:55:09.rdb
)--rdb
seeds dredis with a redis RDB file- Only RDB version 7 and older are supported
- Add
--read-only
CLI option to accept read-only commands (#33)
- Set TCP_NODELAY flag to client sockets (#16)
- Improve TCP communication (#15)
- Change storage to use LevelDB instead of our own directory structure and file formats (#12)
- Minimize send() calls
- Add dredis-snapshot script
- Optimize Lua initialization
Change ZREM to check for scores_path emptiness
- Minimize
write()
calls - Remove score file when there are no lines left
- Fix mismatching ZADD reply of existing elements
- Performance improvements by using select.poll
- Use generator when parsing instructions instead of list (should yield faster)
- Use asyncore.dispatcher without buffering output
- Rewrite file in place when removing lines
- Re-upload 0.0.1 with README as Markdown
- Implement many commands and Lua scripting
- Data is stored on the filesystem using different directory structures for each data structure (string, set, hash, sorted set)