Commit Graph

179 Commits

Author SHA1 Message Date
Roman Gershman cae1403191 Bug fixes.
1. Fix memory corruption bug in quicklist and listpack due to wrong assert usage.
2. Add HSETNX command and fix skip_exists semantics in OpSet function.
3. Add tests for hsetnx.
4. Add MEMORY USAGE decorator.
5. redis_parser accepts arrays upto 8192 elements.
6. Fix listpack replace call when passing an empty string.
7. Implement "debug object" command.
2022-04-04 22:48:49 +03:00
Roman Gershman 8a1396de31 Address HSET bugs
1. add hmset
2. hmget returns nulls when key not found
3. test for valid number of arguments in hset
2022-04-04 13:08:16 +03:00
Roman Gershman a845e9bce1 Implement serialization of HSET 2022-04-04 12:07:27 +03:00
Roman Gershman d5cea3f5f3 robustness fixes plus improve support for auxillary commands so we could run tcl tests.
GETRANGE - fix out of bounds bug.
Add a decorator for "config get"
Add a decorator for "function flush"
2022-04-03 22:55:56 +03:00
Roman Gershman 579ba3149b Fix GETRANGE exception. Fix SETRANGE case with empty value and non-existing key. 2022-04-03 16:09:08 +03:00
Roman Gershman 167f949c5a Support LIST, SET for rdb save 2022-04-02 19:57:52 +03:00
Roman Gershman ff88e3117b Add HINCRBY, HVALS, HSETNX commands 2022-04-02 18:47:06 +03:00
Roman Gershman d542c38475 Add MSETNX and SUBSTR commands 2022-04-02 18:47:06 +03:00
Roman Gershman ba71e9a943 PUBSUB: more polishes.
Implement atomic message passing that will allow handling commands in a subscribed state together with passing
message from publishers.
2022-04-01 10:12:32 +03:00
Roman Gershman 077ebe460d
Improve formatting of the license 2022-03-31 18:58:35 +03:00
Roman Gershman c034829a7f Add CONFIG SET stub that accept any parameters but does nothing 2022-03-31 14:43:25 +03:00
Roman Gershman 4938d8af63 Add DISCARD and BRPOP commands 2022-03-31 14:26:33 +03:00
Roman Gershman 37f09f315e Implement MATCH and TYPE options for the SCAN command 2022-03-31 12:08:45 +03:00
Roman Gershman b9c1288c67 Implement ZINCRBY/ZADD INCR 2022-03-30 14:25:42 +03:00
Roman Gershman 39ef7bf630 Fix SDIFFSTORE bug 2022-03-30 02:04:49 +03:00
Roman Gershman e29f76ad4d Implement the initial version of PUBSUB.
There are some things left to polish, mainly around
processing a subset of commands while being blocked in a subscribed state.
Also I need to solve the issue of atomic replies when publishing messages in parallel with
processing the whitelisted commands in a subscribed state.
2022-03-29 20:20:06 +03:00
Roman Gershman e46f2b5384 Support returning arrays from lua scripts 2022-03-29 17:27:48 +03:00
Roman Gershman 789724584a Fix SETRANGE command 2022-03-29 12:01:36 +03:00
Roman Gershman a6808445cf Support COUNT option in SCAN 2022-03-28 22:35:25 +03:00
Roman Gershman 7595ff6236 Support for COUNT argument in RPOP/LPOP 2022-03-28 20:13:36 +03:00
Roman Gershman efbdebaf94 Fix Size() method for compact object 2022-03-28 17:15:33 +03:00
Roman Gershman c98bc934f2 Fix (P)TTL issue with non-existing keys. Improve logging for binary values. Fix RENAME bugs 2022-03-28 17:02:03 +03:00
Roman Gershman 3e2929dfb6 Add SETRANGE,PSETEX commands 2022-03-27 18:29:31 +03:00
Roman Gershman 09101c70a5 Add RPUSHX/LPUSHX commands 2022-03-27 18:29:31 +03:00
Roman Gershman b2c50a6fe3 CI fixes 2022-03-27 18:28:53 +03:00
Roman Gershman 0ce043e7a4 Add StrLen and GetRange commands 2022-03-24 14:16:00 +02:00
odedponcz fd220ea621
Update README.md 2022-03-24 11:30:22 +02:00
Roman Gershman 47caa972da Add ZREVRANGE and skeleton for PUBLISH/SUBSCRIBE
Fix a memory leak with dispatch queue in client connection.
2022-03-23 20:45:25 +02:00
Roman Gershman cb14df0e6b Add SSCAN command.
Update README with 2.x API commands.
2022-03-23 17:54:25 +02:00
Roman Gershman f1ea69c0b4 Fix SDIFF/SINTER commands 2022-03-22 23:50:47 +02:00
Roman Gershman c533ffb692 switch back to dict implementation for set due to sscan command 2022-03-22 20:53:54 +02:00
Roman Gershman 5bce920308 Add ZREMRANGEBYSCORE and ZREMRANGEBYRANK commands 2022-03-19 15:22:40 +02:00
Roman Gershman cb0d8dfee2 Add ZRANGEBYSCORE. Cover rank case for ZRANGE 2022-03-18 05:12:22 +02:00
Roman Gershman 0611a3e760 Initial work on ZRANGE command. Support BYSCORE case 2022-03-17 09:40:09 +02:00
Roman Gershman 29c715fda5 Add more list commands 2022-03-15 19:52:11 +02:00
Roman Gershman f9b70125d6 Check for integer validity in setex command 2022-03-14 19:51:42 +02:00
Roman Gershman affabbaee7 Implement ongoing garbage collection of expired items 2022-03-14 02:16:51 +02:00
Roman Gershman 4fcb74930e Improve eviction policy design for dash table 2022-03-13 22:52:21 +02:00
Roman Gershman cceb0d90ca Implement PEXPIREAT and tune expire dictionary 2022-03-12 21:51:35 +02:00
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