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