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
`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.
After replication and failover feature we will continue with other Redis commands from
APIs 3,4 and 5.
### 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)
Please see [API readiness doc](doc/api_status.md) for the current status of Dragonfly.
### Milestone - H/A
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
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.
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)