From d52ab4c59a829bd1768e58409f2da1acaa1009ad Mon Sep 17 00:00:00 2001 From: Roman Gershman Date: Thu, 20 Oct 2022 11:50:42 +0300 Subject: [PATCH] docs(server): Update the API status, README and LICENSE date (#410) Signed-off-by: Roman Gershman --- LICENSE.md | 4 ++-- README.md | 34 +++++++++------------------------- docs/api_status.md | 25 +++++++++++++++++++++---- 3 files changed, 32 insertions(+), 31 deletions(-) diff --git a/LICENSE.md b/LICENSE.md index b1a9c1cf1..070eefd90 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -6,7 +6,7 @@ Dragonfly Business Source License 1.1 Licensed Work: Dragonfly including the software components, or any portion of them, and any modification. -Change Date: June 1, 2027 +Change Date: Nov 1, 2027 Change License: [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0), as published by the @@ -55,4 +55,4 @@ PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON AN “AS IS” BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND -TITLE. \ No newline at end of file +TITLE. diff --git a/README.md b/README.md index daa46a671..01795f87b 100644 --- a/README.md +++ b/README.md @@ -140,8 +140,8 @@ In addition, it has Dragonfly specific arguments options: `keys` is a dangerous command. We truncate its result to avoid blowup in memory when fetching too many keys. * `dbnum` - maximum number of supported databases for `select`. * `cache_mode` - see [Cache](#novel-cache-design) section below. - * `hz` - key expiry evaluation frequency. Default is 1000. Lower frequency uses less cpu when - idle at the expense of precision in key eviction. + * `hz` - key expiry evaluation frequency. Default is 100. Lower frequency uses less cpu when + idle at the expense of slower eviction rate. * `save_schedule` - glob spec for the UTC time to save a snapshot which matches HH:MM (24h time). default: "" * `keys_output_limit` - Maximum number of keys output by keys command. default: 8192 @@ -150,34 +150,18 @@ for more options like logs management or tls support, run `dragonfly --help`. ## Roadmap and status -Currently, Dragonfly supports ~130 Redis commands and all memcache commands besides `cas`. -We are almost on par with Redis 2.8 API. Our first milestone will be to stabilize basic -functionality and reach API parity with Redis 2.8 and Memcached APIs. +Currently, Dragonfly supports ~185 Redis commands and all memcache commands besides `cas`. +We are almost on par with Redis 5 API. Our next milestone will be to stabilize basic +functionality and implement the replication API. If you see that a command you need, is not implemented yet, please open an issue. -The next milestone will be implementing H/A with `redis -> dragonfly` and -`dragonfly<->dragonfly` replication. +For dragonfly-native replication, we are designing a distributed log format that will support order of magnitude higher speeds. -For dragonfly-native replication, we are planning to design a distributed log format that will -support order of magnitude higher speeds when replicating. - -After the replication and failover feature we will continue with other Redis commands from -APIs 3,4 and 5. +After the replication feature we will continue with other Redis missing commands from +APIs 3-6. Please see [API readiness doc](docs/api_status.md) for the current status of Dragonfly. -### Milestone - H/A -Implement leader/follower replication (PSYNC/REPLICAOF/...). - -### Milestone - "Maturity" -APIs 3,4,5 without cluster support, without modules and without memory introspection commands. Also -without geo commands and without support for keyspace notifications, without streams. -Probably design config support. Overall - few dozens commands... -Probably implement cluster-API decorators to allow cluster-configured clients to connect to a -single instance. - -### The next milestones will be determined along the way. - ## Design decisions ### Novel cache design @@ -227,7 +211,7 @@ Dash is much more efficient in CPU and memory. By leveraging Dash's design, we w * A novel **fork-less** snapshotting algorithm. After we built the foundation for Dragonfly and [we were happy with its performance](#benchmarks), -we went on to implement the Redis and Memcached functionality. By now, we have implemented ~130 Redis commands (equivalent to v2.8) and 13 Memcached commands. +we went on to implement the Redis and Memcached functionality. By now, we have implemented ~185 Redis commands (roughly equivalent to Redis 5.0 API) and 13 Memcached commands. And finally,
Our mission is to build a well-designed, ultra-fast, cost-efficient in-memory datastore for cloud workloads that takes advantage of the latest hardware advancements. We intend to address the pain points of current solutions while preserving their product APIs and propositions. diff --git a/docs/api_status.md b/docs/api_status.md index 1a95a7312..b091e21e8 100644 --- a/docs/api_status.md +++ b/docs/api_status.md @@ -47,7 +47,7 @@ with respect to Memcached and Redis APIs. - [X] SELECT - [X] TTL - [X] TYPE - - [ ] SORT + - [X] SORT - [X] Server Family - [X] AUTH - [X] QUIT @@ -122,7 +122,7 @@ with respect to Memcached and Redis APIs. - [x] BITCOUNT - [ ] BITFIELD - [x] BITOP - - [ ] BITPOS + - [x] BITPOS - [x] GETBIT - [X] GETRANGE - [X] INCRBYFLOAT @@ -203,7 +203,7 @@ with respect to Memcached and Redis APIs. ### API 3 - [ ] Generic Family - - [ ] TOUCH + - [ ] TOUCH - [X] HashSet Family - [X] HSTRLEN - [X] Server Family @@ -236,10 +236,27 @@ with respect to Memcached and Redis APIs. - [X] XSETID - [ ] XTRIM -### API 6,7 +- [X] Sorted Set Family + - [X] ZPOPMIN + - [X] ZPOPMAX + +### API 6 +- [X] String Family + - [X] GETEX + +- [X] Set Family + - [X] SMISMEMBER + +- [X] List Family + - [X] LMOVE + - [X] LPOS + - [ ] Stream Family - [ ] XAUTOCLAIM +- [ ] Sorted Set Family + - [ ] ZUNION + ## Notes Some commands were implemented as decorators along the way: