Factor out theAPI readiness matrix into a separate doc (#103)

Factor out API readiness matrix into a separate doc
This commit is contained in:
Roman Gershman 2022-06-06 15:50:41 +03:00 committed by GitHub
parent c070e8a96f
commit ef20178b76
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 217 additions and 207 deletions

210
README.md
View file

@ -134,217 +134,13 @@ 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 The next milestone will be implementing H/A with `redis -> dragonfly` and
`dragonfly<->dragonfly` replication. `dragonfly<->dragonfly` replication.
For dragonfly-native replication we are planning to design a distributed log format that will For dragonfly-native replication, we are planning to design a distributed log format that will
support order of magnitude higher speeds when replicating. support order of magnitude higher speeds when replicating.
After replication and failover feature we will continue with other Redis commands from After replication and failover feature we will continue with other Redis commands from
APIs 3,4 and 5. APIs 3,4 and 5.
Please see [API readiness doc](doc/api_status.md) for the current status of Dragonfly.
### Initial release
API 1.0
- [X] String family
- [X] SET
- [ ] SETNX
- [X] GET
- [X] DECR
- [X] INCR
- [X] DECRBY
- [X] GETSET
- [X] INCRBY
- [X] MGET
- [X] MSET
- [X] MSETNX
- [X] SUBSTR
- [x] Generic family
- [X] DEL
- [X] ECHO
- [X] EXISTS
- [X] EXPIRE
- [X] EXPIREAT
- [X] KEYS
- [X] PING
- [X] RENAME
- [X] RENAMENX
- [X] SELECT
- [X] TTL
- [X] TYPE
- [ ] SORT
- [X] Server Family
- [X] AUTH
- [X] QUIT
- [X] DBSIZE
- [ ] BGSAVE
- [X] SAVE
- [X] DEBUG
- [X] EXEC
- [X] FLUSHALL
- [X] FLUSHDB
- [X] INFO
- [X] MULTI
- [X] SHUTDOWN
- [X] LASTSAVE
- [X] SLAVEOF/REPLICAOF
- [ ] SYNC
- [X] Set Family
- [x] SADD
- [x] SCARD
- [X] SDIFF
- [X] SDIFFSTORE
- [X] SINTER
- [X] SINTERSTORE
- [X] SISMEMBER
- [X] SMOVE
- [X] SPOP
- [ ] SRANDMEMBER
- [X] SREM
- [X] SMEMBERS
- [X] SUNION
- [X] SUNIONSTORE
- [X] List Family
- [X] LINDEX
- [X] LLEN
- [X] LPOP
- [X] LPUSH
- [X] LRANGE
- [X] LREM
- [X] LSET
- [X] LTRIM
- [X] RPOP
- [X] RPOPLPUSH
- [X] RPUSH
- [X] SortedSet Family
- [X] ZADD
- [X] ZCARD
- [X] ZINCRBY
- [X] ZRANGE
- [X] ZRANGEBYSCORE
- [X] ZREM
- [X] ZREMRANGEBYSCORE
- [X] ZREVRANGE
- [X] ZSCORE
- [ ] Other
- [ ] BGREWRITEAOF
- [ ] MONITOR
- [ ] RANDOMKEY
- [ ] MOVE
API 2.0
- [X] List Family
- [X] BLPOP
- [X] BRPOP
- [ ] BRPOPLPUSH
- [X] LINSERT
- [X] LPUSHX
- [X] RPUSHX
- [X] String Family
- [X] SETEX
- [X] APPEND
- [X] PREPEND (dragonfly specific)
- [ ] BITCOUNT
- [ ] BITFIELD
- [ ] BITOP
- [ ] BITPOS
- [ ] GETBIT
- [X] GETRANGE
- [X] INCRBYFLOAT
- [X] PSETEX
- [ ] SETBIT
- [X] SETRANGE
- [X] STRLEN
- [X] HashSet Family
- [X] HSET
- [X] HMSET
- [X] HDEL
- [X] HEXISTS
- [X] HGET
- [X] HMGET
- [X] HLEN
- [X] HINCRBY
- [X] HINCRBYFLOAT
- [X] HGETALL
- [X] HKEYS
- [X] HSETNX
- [X] HVALS
- [X] HSCAN
- [X] PubSub family
- [X] PUBLISH
- [ ] PUBSUB
- [ ] PUBSUB CHANNELS
- [X] SUBSCRIBE
- [X] UNSUBSCRIBE
- [X] PSUBSCRIBE
- [X] PUNSUBSCRIBE
- [X] Server Family
- [ ] WATCH
- [ ] UNWATCH
- [X] DISCARD
- [X] CLIENT LIST/SETNAME
- [ ] CLIENT KILL/UNPAUSE/PAUSE/GETNAME/REPLY/TRACKINGINFO
- [X] COMMAND
- [X] COMMAND COUNT
- [ ] COMMAND GETKEYS/INFO
- [ ] CONFIG GET/REWRITE/SET/RESETSTAT
- [ ] MIGRATE
- [ ] ROLE
- [ ] SLOWLOG
- [ ] PSYNC
- [ ] TIME
- [ ] LATENCY...
- [X] Generic Family
- [X] SCAN
- [X] PEXPIREAT
- [ ] PEXPIRE
- [ ] DUMP
- [X] EVAL
- [X] EVALSHA
- [ ] OBJECT
- [ ] PERSIST
- [X] PTTL
- [ ] RESTORE
- [X] SCRIPT LOAD/EXISTS
- [ ] SCRIPT DEBUG/KILL/FLUSH
- [X] Set Family
- [X] SSCAN
- [X] Sorted Set Family
- [X] ZCOUNT
- [X] ZINTERSTORE
- [X] ZLEXCOUNT
- [X] ZRANGEBYLEX
- [X] ZRANK
- [X] ZREMRANGEBYLEX
- [X] ZREMRANGEBYRANK
- [X] ZREVRANGEBYSCORE
- [X] ZREVRANK
- [X] ZUNIONSTORE
- [X] ZSCAN
- [ ] HYPERLOGLOG Family
- [ ] PFADD
- [ ] PFCOUNT
- [ ] PFMERGE
Memcache API
- [X] set
- [X] get
- [X] replace
- [X] add
- [X] stats (partial)
- [x] append
- [x] prepend
- [x] delete
- [x] flush_all
- [x] incr
- [x] decr
- [x] version
- [x] quit
Some commands were implemented as decorators along the way:
- [X] ROLE (2.8) decorator as master.
- [X] UNLINK (4.0) decorator for DEL command
- [X] BGSAVE (decorator for save)
- [X] FUNCTION FLUSH (does nothing)
### Milestone - H/A ### Milestone - H/A
Implement leader/follower replication (PSYNC/REPLICAOF/...). Implement leader/follower replication (PSYNC/REPLICAOF/...).
@ -383,7 +179,7 @@ Right now it does not have much info but in the future we are planning to add th
debugging and management info. If you go to `:6379/metrics` url you will see some prometheus debugging and management info. If you go to `:6379/metrics` url you will see some prometheus
compatible metrics. compatible metrics.
The Prometheus exported metrics are compatible with the Grafana dashboard [see here](examples/grafana/dashboard.json). The Prometheus exported metrics are compatible with the Grafana dashboard [see here](examples/grafana/dashboard.json).
Important! Http console is meant to be accessed within a safe network. Important! Http console is meant to be accessed within a safe network.
If you expose Dragonfly's TCP port externally, it is advised to disable the console If you expose Dragonfly's TCP port externally, it is advised to disable the console

214
doc/api_status.md Normal file
View file

@ -0,0 +1,214 @@
The following document describes the current API status
with respect to Memcached and Redis APIs.
## Memcache API
- [X] set
- [X] get
- [X] replace
- [X] add
- [X] stats (partial)
- [x] append
- [x] prepend
- [x] delete
- [x] flush_all
- [x] incr
- [x] decr
- [x] version
- [x] quit
## Redis API
### API 1
- [X] String family
- [X] SET
- [ ] SETNX
- [X] GET
- [X] DECR
- [X] INCR
- [X] DECRBY
- [X] GETSET
- [X] INCRBY
- [X] MGET
- [X] MSET
- [X] MSETNX
- [X] SUBSTR
- [x] Generic family
- [X] DEL
- [X] ECHO
- [X] EXISTS
- [X] EXPIRE
- [X] EXPIREAT
- [X] KEYS
- [X] PING
- [X] RENAME
- [X] RENAMENX
- [X] SELECT
- [X] TTL
- [X] TYPE
- [ ] SORT
- [X] Server Family
- [X] AUTH
- [X] QUIT
- [X] DBSIZE
- [ ] BGSAVE
- [X] SAVE
- [X] DEBUG
- [X] EXEC
- [X] FLUSHALL
- [X] FLUSHDB
- [X] INFO
- [X] MULTI
- [X] SHUTDOWN
- [X] LASTSAVE
- [X] SLAVEOF/REPLICAOF
- [ ] SYNC
- [X] Set Family
- [x] SADD
- [x] SCARD
- [X] SDIFF
- [X] SDIFFSTORE
- [X] SINTER
- [X] SINTERSTORE
- [X] SISMEMBER
- [X] SMOVE
- [X] SPOP
- [ ] SRANDMEMBER
- [X] SREM
- [X] SMEMBERS
- [X] SUNION
- [X] SUNIONSTORE
- [X] List Family
- [X] LINDEX
- [X] LLEN
- [X] LPOP
- [X] LPUSH
- [X] LRANGE
- [X] LREM
- [X] LSET
- [X] LTRIM
- [X] RPOP
- [X] RPOPLPUSH
- [X] RPUSH
- [X] SortedSet Family
- [X] ZADD
- [X] ZCARD
- [X] ZINCRBY
- [X] ZRANGE
- [X] ZRANGEBYSCORE
- [X] ZREM
- [X] ZREMRANGEBYSCORE
- [X] ZREVRANGE
- [X] ZSCORE
- [ ] Other
- [ ] BGREWRITEAOF
- [ ] MONITOR
- [ ] RANDOMKEY
- [ ] MOVE
### API 2
- [X] List Family
- [X] BLPOP
- [X] BRPOP
- [ ] BRPOPLPUSH
- [X] LINSERT
- [X] LPUSHX
- [X] RPUSHX
- [X] String Family
- [X] SETEX
- [X] APPEND
- [X] PREPEND (dragonfly specific)
- [ ] BITCOUNT
- [ ] BITFIELD
- [ ] BITOP
- [ ] BITPOS
- [ ] GETBIT
- [X] GETRANGE
- [X] INCRBYFLOAT
- [X] PSETEX
- [ ] SETBIT
- [X] SETRANGE
- [X] STRLEN
- [X] HashSet Family
- [X] HSET
- [X] HMSET
- [X] HDEL
- [X] HEXISTS
- [X] HGET
- [X] HMGET
- [X] HLEN
- [X] HINCRBY
- [X] HINCRBYFLOAT
- [X] HGETALL
- [X] HKEYS
- [X] HSETNX
- [X] HVALS
- [X] HSCAN
- [X] PubSub family
- [X] PUBLISH
- [ ] PUBSUB
- [ ] PUBSUB CHANNELS
- [X] SUBSCRIBE
- [X] UNSUBSCRIBE
- [X] PSUBSCRIBE
- [X] PUNSUBSCRIBE
- [X] Server Family
- [ ] WATCH
- [ ] UNWATCH
- [X] DISCARD
- [X] CLIENT LIST/SETNAME
- [ ] CLIENT KILL/UNPAUSE/PAUSE/GETNAME/REPLY/TRACKINGINFO
- [X] COMMAND
- [X] COMMAND COUNT
- [ ] COMMAND GETKEYS/INFO
- [ ] CONFIG GET/REWRITE/SET/RESETSTAT
- [ ] MIGRATE
- [ ] ROLE
- [ ] SLOWLOG
- [ ] PSYNC
- [ ] TIME
- [ ] LATENCY...
- [X] Generic Family
- [X] SCAN
- [X] PEXPIREAT
- [ ] PEXPIRE
- [ ] DUMP
- [X] EVAL
- [X] EVALSHA
- [ ] OBJECT
- [ ] PERSIST
- [X] PTTL
- [ ] RESTORE
- [X] SCRIPT LOAD/EXISTS
- [ ] SCRIPT DEBUG/KILL/FLUSH
- [X] Set Family
- [X] SSCAN
- [X] Sorted Set Family
- [X] ZCOUNT
- [X] ZINTERSTORE
- [X] ZLEXCOUNT
- [X] ZRANGEBYLEX
- [X] ZRANK
- [X] ZREMRANGEBYLEX
- [X] ZREMRANGEBYRANK
- [X] ZREVRANGEBYSCORE
- [X] ZREVRANK
- [X] ZUNIONSTORE
- [X] ZSCAN
- [ ] HYPERLOGLOG Family
- [ ] PFADD
- [ ] PFCOUNT
- [ ] PFMERGE
### API 3
### API 4
### API 5
### API 6
## Notes
Some commands were implemented as decorators along the way:
- [X] ROLE (2.8) decorator as master.
- [X] UNLINK (4.0) decorator for DEL command
- [X] BGSAVE (decorator for save)
- [X] FUNCTION FLUSH (does nothing)