Commit Graph

50 Commits

Author SHA1 Message Date
Roman Gershman 65f35f2cac Some improvements to snapshotting algo.
Rename rdb_snapshot.h to snapshot.h since it's not related to the underlying serialization format.
2022-02-24 14:11:51 +02:00
Roman Gershman 3f80b89e19 Implement TYPE and SCAN commands. Update readme with the progress 2022-02-24 14:11:51 +02:00
Roman Gershman ec91b2c026 Add mimalloc as the default allocator for redis structures 2022-02-24 14:11:51 +02:00
Roman Gershman af1fe6e114 Introduce dbslice versioning 2022-02-24 14:11:51 +02:00
Roman Gershman ce46ba7cb1 Introduce snapshot isolation using versioned buckets 2022-02-24 14:11:51 +02:00
Roman Gershman 069ed12c68 Introduce a naive snapshot flow and implement SaveBody for string/list entries 2022-02-24 14:11:51 +02:00
Roman Gershman 7af6aef4c7 Add consumer part of RdbSave flow 2022-02-24 14:11:51 +02:00
Roman Gershman d3ccd5b836 Implement Save of rdb header/epilog 2022-02-24 14:11:51 +02:00
Roman Gershman ba72e70de5 Wire SAVE and LASTSAVE commands
SAVE has a dummy implementation that will be replaced in the next commits.
2022-02-24 14:11:51 +02:00
Roman Gershman 7a839b6081 Fix size() bug in dashtable
add more stats to info command
fix warnings in -O3 mode.
2022-02-24 14:11:51 +02:00
Roman Gershman f4cfce143c Switch PrimeTable to DashTable 2022-02-24 14:11:51 +02:00
Roman Gershman 97fbf69260 Use DashTable for ExpireTable 2022-02-24 14:11:51 +02:00
Roman Gershman 5923c22d99 Expose some connection-level stats 2022-02-24 14:11:50 +02:00
Roman Gershman 0d57b25124 Sync with the latest version of helio 2022-02-24 14:11:50 +02:00
Roman Gershman e88d995618 Fix consistency bug in watched code
CI improvements
2022-02-24 14:11:50 +02:00
Roman Gershman fac4bf0354 Add INCR/DECR commands 2022-02-24 14:11:50 +02:00
Roman Gershman 5715b8ebbb Use compact object as our MainValue type 2022-02-24 14:11:50 +02:00
Roman Gershman ea399e3e5a Identify multi-blpop interaction bug.
Now it fails on missing functionality without deadlocking.
2022-01-13 13:10:34 +02:00
Roman Gershman fc63eec1b6 Add BLPOP support 2022-01-12 08:59:22 +02:00
Roman Gershman 0cf2f57bf2 Fix expiry bug in AddOrFind function
Also add more test coverage.
Fix a bug where iterators might get invalidated between Renamer hops.
Initial work on BLPOP transaction.
2022-01-12 08:48:41 +02:00
Roman Gershman e7071b73b1 Refactor server commands into server_family.
Introduce FlushDb. Minor cleanups and renamings.
2022-01-08 11:07:31 +02:00
Roman Gershman 76286e33bf Add more dragonfly tests 2022-01-07 18:46:57 +02:00
Roman Gershman 35fa69c928 Add EXEC transaction support. Introduce dragonfly_test.cc 2022-01-06 15:48:51 +02:00
Roman Gershman 9e5a5ea2f2 Introduce Rename command 2022-01-05 00:56:58 +02:00
Roman Gershman 29cdcb96ec Add generic_family_test. Minor cleanups 2022-01-04 15:11:37 +02:00
Roman Gershman 5a7a67fbcf Introduce list_family_test 2022-01-04 10:47:49 +02:00
Roman Gershman 6b7ed73753 Implement client side resp parsing to be used in tests 2022-01-04 01:16:24 +02:00
Roman Gershman a4d8ded6ce Add string_family_test.cc unit test
Add unit test helper code that we will leverage for writing more unit tests.
Numerous fixes in the transactional code. Allow controlling of expiration clock
in unit-test environment with configurable task synchronization. The latter is enabled
for prod and disable in the tests.
2022-01-03 11:20:08 +02:00
Roman Gershman d64b4e01ea Implement basic list operations
Fix redis linker dependencies. Bring more redis (BSD-3) code.
Fix bugs related to multi-database redis.
Introduce multiple types for redis values.
2022-01-02 10:40:16 +02:00
Roman Gershman 55ee0563b0 Consolidate generic commands under generic_family. Add Del, Echo, Ttl and select commands 2021-12-26 17:25:49 +02:00
Roman Gershman b1f32e5ebf Add MGet and MSet commands 2021-12-23 15:11:46 +02:00
Roman Gershman ebd404ff5d Introduce VLL transactions 2021-12-22 17:17:52 +02:00
Roman Gershman 7fe07f8e4f Introduce TxQueue and IntentLock for VLL algo 2021-12-20 22:46:51 +02:00
Roman Gershman ac2eb7d45c Adding expiry functionality.
1. Major refactoring
2. LICENSE is updated with commons clause.
3. Server is built as "dragonfly"
2021-12-20 11:42:55 +02:00
Roman Gershman a69c967321 Add debug populate command 2021-12-07 08:27:11 +02:00
Roman Gershman 45294f8c2f Fix reply batching. 2021-11-30 21:01:09 +02:00
Roman Gershman 6c5e4dad3b Rename main binary to midi-redis 2021-11-30 10:11:59 +02:00
Roman Gershman e7dc509fed Add prometheus-like metric support and allow connection affinity according to INCOMING_CPU 2021-11-29 21:50:08 +02:00
Roman Gershman d7b22ca582 Add APACHE-2.0 license. Fix file headers everywhere 2021-11-28 09:29:26 +02:00
Roman Gershman 18525d2b5e Introduce some pipelining support.
Also some refactoring.
2021-11-24 14:09:53 +02:00
Roman Gershman 9a6e8e31be Add basic GET command for both mc and redis 2021-11-23 17:56:31 +02:00
Roman Gershman 5ebbfa5a64 Adding memcached protocol support for dragonfly 2021-11-23 12:39:35 +02:00
Roman Gershman d4b708d33c Introduce basic memcached parser 2021-11-22 09:43:43 +02:00
Roman Gershman 9282d96d00 Add tls support and config flags simulating redis configuration params 2021-11-19 18:00:14 +02:00
Roman Gershman bf714b1a64 Introduce command registry and dispatcher entry point.
Change set/ping commands to work with registry mapping.
Registry commands are defined according to redis spec.
2021-11-18 18:38:20 +02:00
Roman Gershman 38478cf069 Add connection context that will serve us as an interface between command handler and the service 2021-11-17 16:38:32 +02:00
Roman Gershman ec78c8a2af Add SET command and thread local db slice 2021-11-17 16:33:36 +02:00
Roman Gershman 48589604fc Bind redis parser to dragonfly connection 2021-11-17 16:33:34 +02:00
Roman Gershman f2bc27e283 Add redis parser + test 2021-11-17 16:32:14 +02:00
Roman Gershman 2bce379341 Add dragonfly skeleton: listener, connection and main 2021-11-17 16:32:08 +02:00