Roman Gershman
81ffb189ef
Optimize ascii_pack in debug mode
2022-03-12 12:06:32 +02:00
Roman Gershman
d5281721bd
Add OUT_OF_MEMORY status.
...
make sure that low-level allocators throw bad_alloc to allow handling oom situations.
database level does not yet incorporate any OOM logic.
2022-03-11 12:20:25 +02:00
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