Commit Graph

220 Commits

Author SHA1 Message Date
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
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