- 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 (Yipit#57)
- Fix bug with big replies and
socket.send
(Yipit#56)
- Fix bug with stop clause of HSCAN and ZSCAN (Yipit#53)
- Add support to NX and XX parameters of ZADD (Yipit#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 (Yipit#49)
- Add support to HSCAN (Yipit#47)
- Add support to ZSCAN (Yipit#43)
- Add static version of TTL and no-op version of EXPIRE (Yipit#44)
- Add contrib/snapshot_lmdb.py and remove contrib/dredis-snapshot (Yipit#40)
- Add AUTH support (Yipit#37)
- Add RENAME command (Yipit#36)
- Fix negative score order in sorted sets (backward incompatible change: Yipit#35)
- Add more storage backends (Yipit#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 (Yipit#31) - Add
DUMP
andRESTORE
commands (Yipit#27 and Yipit#28)- Based on the RDB version 7 implementation
- Add
SAVE
command and--rdb
CLI option (Yipit#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 (Yipit#33)
- Set TCP_NODELAY flag to client sockets (Yipit#16)
- Improve TCP communication (Yipit#15)
- Change storage to use LevelDB instead of our own directory structure and file formats (Yipit#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)