Roman Gershman
ec64f4e9e1
Simplify testing framework. Run(...) now returns RespExpr instead of vector of RespExpr
2022-04-22 10:31:51 +03:00
Roman Gershman
f1c5e4d702
Remove redundant redis files
2022-04-22 00:07:31 +03:00
Roman Gershman
7b9bad35e9
Support external storage for GET requests
2022-04-21 23:37:53 +03:00
Roman Gershman
dce0ce3d69
Add COMMAND COUNT option
2022-04-21 23:26:29 +03:00
Roman Gershman
69911a95ac
Add ZREMRANGEBYLEX and ZREVRANGEBYSCORE commands.
2022-04-20 23:51:48 +03:00
Roman Gershman
d8697463dc
Adding ZLEXCOUNT and ZRANGEBYLEX commands.
2022-04-20 21:50:29 +03:00
Roman Gershman
0f19e60a81
Track active io requests in tiered storage
2022-04-20 19:06:05 +03:00
Roman Gershman
7c29ea445f
Add HSCAN and HINCRBYFLOAT commands
2022-04-19 22:21:54 +03:00
Roman Gershman
a5b59dde25
Add KEYS command
2022-04-19 11:38:32 +03:00
Roman Gershman
b74c5398a4
Add very initial code for tiered storage for strings
2022-04-19 08:31:23 +03:00
Roman Gershman
f2c05a277d
Add LINSERT and INCRBYFLOAT commands
2022-04-18 19:45:57 +03:00
Roman Gershman
e163747023
CompactObject can now represent an pointer to external storage
2022-04-18 18:12:54 +03:00
Roman Gershman
f113d29918
Fix several bugs.
...
Fix #17 , also fix #14 , fix #10 and fix #16 .
2022-04-18 01:17:47 +03:00
Roman Gershman
e5a3a83bae
Organize code and make the write asynchronous
2022-04-14 21:31:31 +03:00
Roman Gershman
bc92ace19c
Add safe cursor API to dash table
2022-04-14 21:31:31 +03:00
Roman Gershman
ad3bdbf499
Optional feature (POC) - store values on the external storage (SSD).
...
1. Add ExternalAllocator that provides files ranges to write to.
2. Add IoMgr that wraps files and allows sending asynchronous requests.
3. Add POC that writes string values when a new entry is added.
The original values kept are still kept in memory.
2022-04-13 22:11:25 +03:00
Roman Gershman
6e5de7ac59
Passover cleanups.
...
1. Add ttl with reload test.
2. Removed several LOG(FATAL) messages and replaced them with error propagation.
3. Added scan test for all the options.
2022-04-13 11:52:59 +03:00
Roman Gershman
997d2dcb69
more work on rdb load.
...
1. Added support of loading of compressed strings.
2. Verified we load expiry info.
3. Extended supported expiry period to 4 years (previously I set 1 year).
2022-04-13 10:50:19 +03:00
Roman Gershman
cafabce161
Support loading of zset, hset entries
2022-04-12 21:21:03 +03:00
Roman Gershman
bfcefd932d
Support rdb loading.
...
1. Basic support of sets and hsets. No intset or dict-based hset yet.
2. Make sure that rdbloader actually loads the data into shards.
3. Support object metadata like expiry time.
4. Support lists loading.
2022-04-12 16:39:25 +03:00
Roman Gershman
7f8346cded
Implement DEBUG RELOAD option.
...
Fix c++ and openssl deprecation warnings.
2022-04-12 11:29:42 +03:00
Roman Gershman
d2b6907f2d
Improve docker entry point script.
...
Change default port to 6379.
Log data directory path.
2022-04-08 08:54:53 +03:00
Roman Gershman
49781e8daf
Some bug fixes.
...
closes #19 and closes #20 .
2022-04-08 06:53:22 +03:00
Roman Gershman
5ef63f41d2
Fix bugs related to error reporting.
...
1. Fix #9
2. SINTER now reports error if some of its keys are of wrong type.
2022-04-07 12:01:18 +03:00
Roman Gershman
d03cea5e36
Code simplifications.
...
1. Sets do not use anymore redis encoding constants in our codebase.
2. rdb_save serializes now expiry information as well.
3. db_slice provides a simplified api to translate from absolute time to ExpirePeriod.
4. common_types.h is renamed to common.h. cached memory usage variables are moved there.
2022-04-07 11:01:10 +03:00
Roman Gershman
fa70267729
Add ZRANK,ZCOUNT,ZREVRANK.
...
1. Fix #12 - return number of added items for non-increment usecase.
2. Fix #15 - fix double precision response. I use a different printing algorithm that of Redis
therefore there could be string differences between 2 systems. However, both replies should
be equivalent numerically.
3. Fix #13 . Reject ZADD with LT and GT options together.
4. Fix #11 - return correct error when parsing invalid scores.
2022-04-06 22:54:10 +03:00
Roman Gershman
92ebb74500
Add ZSET serialization
2022-04-06 17:17:33 +03:00
Roman Gershman
abbefd0bc4
More bug fixes.
...
1. RENAME now unblocks blpop/brpop.
2. Fix a deadlock bug with blpop running with the same key multiple times.
2022-04-06 10:32:42 +03:00
Roman Gershman
1fc9f11e76
Bug fixes.
...
1. Fix crash when calling BLPOP on the same key several times.
2. Extend RENAME functionality to cover all data-types.
Before that it worked only for strings and that also was incorrect.
2022-04-05 23:20:05 +03:00
Roman Gershman
c6e4e97865
List fixes.
...
1. Fix blocked_clients statistic.
2. Add HELLO decorator.
3. Non-list keys should not wake blpop/brpop commands.
4. Fix Info output whitespacing.
2022-04-05 18:45:58 +03:00
Roman Gershman
948fbce4bd
Fix GETRANGE and ascii packing bugs
2022-04-05 14:46:26 +03:00
Roman Gershman
ba1314201c
Implement list serialization
2022-04-05 12:04:03 +03:00
Roman Gershman
19583ca7f2
Add HSTRLEN. Bug fixes.
2022-04-05 08:36:00 +03:00
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