Roman Gershman
b197e2c78e
Throw bad_alloc exception in MiMemoryResource if the allocation fails
2022-03-11 09:59:35 +02:00
Roman Gershman
770fe0fe47
Memory accounting
...
Bring back application level used-memory tracking.
Use internal mimalloc api for extracting comitted memory stats.
This is much better performance-wise because calling mi_heap_visit_blocks
becomes very slow for larger database sizes.
2022-03-11 01:25:01 +02:00
Roman Gershman
92475dd47a
Unify mimalloc memory management
2022-03-10 19:29:41 +02:00
Roman Gershman
09fb05c0e1
Add memcached flush_all command.
...
Simplify reply code - remove the redundant class.
2022-03-10 19:15:51 +02:00
Roman Gershman
8054ed4f3a
Implement directory shrinkage when we flush the database
2022-03-09 09:06:11 +02:00
Roman Gershman
5dcb50dbaa
INFO: Add command and error stats
2022-03-08 19:11:52 +02:00
Roman Gershman
abec283247
Implement SETEX command
2022-03-07 23:11:43 +02:00
Roman Gershman
3c1b600e79
Implement hkeys,hvals, hmget and hgetall commands
2022-03-07 23:00:26 +02:00
Roman Gershman
71272c4ee1
Implement SPOP action
2022-03-06 18:18:29 +02:00
Roman Gershman
f09f516636
Add zcard, zscore, zrem methods
2022-03-06 08:46:48 +02:00
Roman Gershman
6b869b41a7
Implement ZADD
2022-03-05 23:42:35 +02:00
Roman Gershman
2bdde23e1f
Limit the expiration range
2022-03-05 21:35:49 +02:00
Roman Gershman
c94d109cff
Use FlatSet for Redis SETS
...
Add FlatSet data structure.
Use FlatSet and get rid of t_set functions.
Fix Hash bug. Add memory comparison test
2022-03-05 20:20:30 +02:00
Roman Gershman
a58ed46f1e
compact_object cleanups
2022-03-04 22:08:02 +02:00
Roman Gershman
2213c1b38b
Add HKEYS command. Account for listpack blobs
2022-03-04 14:06:48 +02:00
Roman Gershman
b3e5730377
Add some hash set commands
2022-03-03 09:34:53 +02:00
Roman Gershman
3f0fcbf99f
Factor out client connections module into a separate library called facade
2022-03-03 01:59:29 +02:00
Roman Gershman
28a2db1044
Implement hset method
2022-03-02 19:06:49 +02:00
Roman Gershman
7ffbadd305
Add t_hash.c file.
...
Add some compact_object tests for set,hset,zset interfaces.
Enable memory leak checking for mimalloc allocator in compact_object_test.
2022-03-01 12:35:07 +02:00
Roman Gershman
8c95facb47
Add skeleton for zset and hset commands
2022-02-28 23:19:24 +02:00
Roman Gershman
f255d17a72
Add decorators for commands like ROLE,BGSAVE,UNLINK. Improve memory usage tracking
2022-02-28 17:36:45 +02:00
Roman Gershman
668a51cafa
Add most of SET commands (SADD, SCARD etc). Add set_family_test
2022-02-27 22:44:22 +02:00
Roman Gershman
3f7e3a5a0a
Add memcached version and delete commands
2022-02-27 18:04:38 +02:00
Roman Gershman
edf74d2494
Add tcp_nodelay flag that is by default on
2022-02-27 15:40:20 +02:00
Roman Gershman
d1291be0b7
Add ubuntu flavoured docker image of dragonfly
2022-02-25 20:19:01 +02:00
Roman Gershman
a859cf2fc8
Add docker release action
2022-02-25 18:45:12 +02:00
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