Commit Graph

112 Commits

Author SHA1 Message Date
Roman Gershman b8521828e3 Add Dockerfile for prod container. Reorganize source tree to be docker-build friendly. 2022-02-25 10:03:42 +02:00
Roman Gershman e3d7f0a34e Use 8->7 bit encoding for ascii strings in compact_object 2022-02-24 23:35:14 +02:00
Roman Gershman 7445b20548 More work on memcached API
1. Fix memcached ttl semantics.
2. For incr/decr commands if a key does not exist - return NOT_FOUND.
2022-02-24 17:14:03 +02:00
Roman Gershman 737c5fed71 Introduce SmallString as another option for CompactObject 2022-02-24 15:22:59 +02:00
Roman Gershman a93940913b Add support for incr/decr/quit memcache commands 2022-02-24 14:11:51 +02:00
Roman Gershman fcb58efe15 Improve memory allocations with pipeline mode 2022-02-24 14:11:51 +02:00
Roman Gershman edff35ae3e Pass correct memory resource to compact object 2022-02-24 14:11:51 +02:00
Roman Gershman 8072e79aab Add memcached append/prepend commands.
Implement these commands for redis as well (different semantics for non-existing keys)
Fix some mc parsing bugs.
Improve mc test.
2022-02-24 14:11:51 +02:00
Roman Gershman 667b2fa99c Add support for memcached stats command 2022-02-24 14:11:51 +02:00
Roman Gershman b6857e3f41 MemcacheParser: add support for stats command 2022-02-24 14:11:51 +02:00
Roman Gershman 3d8af8b413 Implement memcache get for multiple keys. Fetch flag values as well 2022-02-24 14:11:51 +02:00
Roman Gershman b3c9836682 Add tests for memcache commands. Handle flags metadata 2022-02-24 14:11:51 +02:00
Roman Gershman 8d2d49d782 Add AUTH command for 1.0 API 2022-02-24 14:11:51 +02:00
Roman Gershman 29f5052c4d Add alpine-dev container to test matrix 2022-02-24 14:11:51 +02:00
Roman Gershman b606613762 Add more IO stats 2022-02-24 14:11:51 +02:00
Roman Gershman b82fb72fc5 Add basic metrics to INFO command 2022-02-24 14:11:51 +02:00
Roman Gershman e1c852dfcc Initial support for lua transactions.
Extend multi-transactions to scripts. Differentiate between incremental and instant locking
for multi-transactions.
2022-02-24 14:11:51 +02:00
Roman Gershman b1829c3fe0 Allow custom argument validators. Expand transaction argument parsing to commands like EVAL 2022-02-24 14:11:51 +02:00
Roman Gershman cc53bde091 Dragonfly Dispatch is called from lua script 2022-02-24 14:11:51 +02:00
Roman Gershman 07df3f2b95 Simplify serialization logic in Interpreter 2022-02-24 14:11:51 +02:00
Roman Gershman c567a70244 Add SCRIPT LOAD/EVALSHA 2022-02-24 14:11:51 +02:00
Roman Gershman ec70cc9e9f Add ScriptMgr class
Write SCRIPT command into ServerFamily class.
2022-02-24 14:11:51 +02:00
Roman Gershman ab5031472e Small fixes
1. Remove CO::STALE modifier since it's not relevant for now.
2. Propertly wire CallFromScript function to be called from redis.call.
3. Define 3rd party lua dependency as part of dragonfly project.
4. Add ARGV/KEYS arrays to lua scripts
2022-02-24 14:11:51 +02:00
Roman Gershman ce721ced90 Get rid of SendRespBlob in RedisReplyBuilder 2022-02-24 14:11:51 +02:00
Roman Gershman 501dc4208d Refactoring of ReplyBuilder
Now ConnectionContext does not inherit from it.
As a result we will be able to pass semantic information
into ReplyBuilder instead of syntactic. This should help with
parsing back "redis.call" responses.
2022-02-24 14:11:51 +02:00
Roman Gershman 067e1c3b62 Allow calling a redis function from interpreter.
Introduce a translator that converts redis response to lua result coming from redis.call
Add tests.
2022-02-24 14:11:51 +02:00
Roman Gershman 4cff2d8b7d Export redis.* functions in lua scripts 2022-02-24 14:11:51 +02:00
Roman Gershman 7a2f4baeec Wire support for redis.call and redis.pcall commands 2022-02-24 14:11:51 +02:00
Roman Gershman fc56a8e61a Replica: add a state machine that continously pulls data from the master 2022-02-24 14:11:51 +02:00
Roman Gershman d1f6f6d410 Implement serialization of most lua data types that are returned to caller 2022-02-24 14:11:51 +02:00
Roman Gershman 8fbe19d3c5 Add (lua) interpreter with lua 5.4.4
Small fixes all around.
2022-02-24 14:11:51 +02:00
Roman Gershman 8a3207f23e Add skeleton of replication manager and initial support of replicaof command 2022-02-24 14:11:51 +02:00
Roman Gershman cf3d208f81 Add skeleton for replica/sync commands 2022-02-24 14:11:51 +02:00
Roman Gershman b56408b51a Add rdb_test 2022-02-24 14:11:51 +02:00
Roman Gershman 4db619b081 Add rdb_load basic parsing. No data filling yet 2022-02-24 14:11:51 +02:00
Roman Gershman 7d5ad8cc5b Serve http requests from redis port 2022-02-24 14:11:51 +02:00
Roman Gershman e68977a7bf Fix Populate bug 2022-02-24 14:11:51 +02:00
Roman Gershman 5c5c789ac7 dragonfly_connection
Recognize http1.1 protocol upon connection connect.
Pass disconnect event to running transactions.
2022-02-24 14:11:51 +02:00
Roman Gershman b83c201e30 Add global state to the server to prevent multiple exclusive operations to run concurrently 2022-02-24 14:11:51 +02:00
Roman Gershman 254e640a19 Introduce per-shard MiMemoryResource 2022-02-24 14:11:51 +02:00
Roman Gershman 7ee6bd8471 Implement snapshot consistency under the write load 2022-02-24 14:11:51 +02:00
Roman Gershman a8a05949b0 Hook snapshot with db_slice so that it would be possible to maintain snapshot isolation during concurrent writes 2022-02-24 14:11:51 +02:00
Roman Gershman f119e66199 Refactor Populate command. Name the helper fibers 2022-02-24 14:11:51 +02:00
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 b2953293cd Simplify cursor encoding and state clearly cursor valid range 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 8d19a6211d Introduce versioned bucket support for MVCC operations 2022-02-24 14:11:51 +02:00