From 959463c92f72d57474dbea1018d91233bfd10036 Mon Sep 17 00:00:00 2001
From: "bodong.ybd" <bodong.ybd@alibaba-inc.com>
Date: Fri, 6 Dec 2024 20:55:21 +0800
Subject: [PATCH] Update test results

---
 AliyunRedis-4.0.0.html        | 420 ++++++++++++++++++++++++++++
 AliyunRedis-5.0.0.html        | 420 ++++++++++++++++++++++++++++
 AliyunRedis-6.0.0.html        | 420 ++++++++++++++++++++++++++++
 AliyunRedis-7.0.0.html        | 420 ++++++++++++++++++++++++++++
 AliyunRedisCluster-4.0.0.html | 457 +++++++++++++++++++++++++++++++
 AliyunRedisCluster-5.0.0.html | 457 +++++++++++++++++++++++++++++++
 AliyunRedisCluster-6.0.0.html | 461 +++++++++++++++++++++++++++++++
 AliyunRedisCluster-7.0.0.html | 502 ++++++++++++++++++++++++++++++++++
 AliyunTair-4.0.0.html         | 420 ++++++++++++++++++++++++++++
 AliyunTair-5.0.0.html         | 420 ++++++++++++++++++++++++++++
 AliyunTair-6.0.0.html         | 420 ++++++++++++++++++++++++++++
 AliyunTair-7.0.0.html         | 420 ++++++++++++++++++++++++++++
 AliyunTairCluster-4.0.0.html  | 458 +++++++++++++++++++++++++++++++
 AliyunTairCluster-5.0.0.html  | 457 +++++++++++++++++++++++++++++++
 AliyunTairCluster-6.0.0.html  | 462 +++++++++++++++++++++++++++++++
 AliyunTairCluster-7.0.0.html  | 502 ++++++++++++++++++++++++++++++++++
 KeyDB-4.0.0.html              | 420 ++++++++++++++++++++++++++++
 KeyDB-5.0.0.html              | 420 ++++++++++++++++++++++++++++
 KeyDB-6.0.0.html              | 420 ++++++++++++++++++++++++++++
 KeyDB-7.0.0.html              | 476 ++++++++++++++++++++++++++++++++
 Kvrocks-4.0.0.html            | 437 +++++++++++++++++++++++++++++
 Kvrocks-5.0.0.html            | 438 +++++++++++++++++++++++++++++
 Kvrocks-6.0.0.html            | 439 +++++++++++++++++++++++++++++
 Kvrocks-7.0.0.html            | 482 ++++++++++++++++++++++++++++++++
 Pika-4.0.0.html               | 459 +++++++++++++++++++++++++++++++
 Pika-5.0.0.html               | 433 +++++++++++++++++++++++++++++
 RedisCluster-4.0.0.html       |  88 +++---
 RedisCluster-5.0.0.html       |  88 +++---
 RedisCluster-6.0.0.html       |  92 ++++---
 RedisCluster-7.0.0.html       | 167 +++++------
 Valkey-4.0.0.html             | 423 ++++++++++++++++++++++++++++
 Valkey-5.0.0.html             | 423 ++++++++++++++++++++++++++++
 Valkey-6.0.0.html             | 423 ++++++++++++++++++++++++++++
 Valkey-7.0.0.html             | 424 ++++++++++++++++++++++++++++
 index.html                    | 124 +--------
 35 files changed, 13460 insertions(+), 332 deletions(-)
 create mode 100644 AliyunRedis-4.0.0.html
 create mode 100644 AliyunRedis-5.0.0.html
 create mode 100644 AliyunRedis-6.0.0.html
 create mode 100644 AliyunRedis-7.0.0.html
 create mode 100644 AliyunRedisCluster-4.0.0.html
 create mode 100644 AliyunRedisCluster-5.0.0.html
 create mode 100644 AliyunRedisCluster-6.0.0.html
 create mode 100644 AliyunRedisCluster-7.0.0.html
 create mode 100644 AliyunTair-4.0.0.html
 create mode 100644 AliyunTair-5.0.0.html
 create mode 100644 AliyunTair-6.0.0.html
 create mode 100644 AliyunTair-7.0.0.html
 create mode 100644 AliyunTairCluster-4.0.0.html
 create mode 100644 AliyunTairCluster-5.0.0.html
 create mode 100644 AliyunTairCluster-6.0.0.html
 create mode 100644 AliyunTairCluster-7.0.0.html
 create mode 100644 KeyDB-4.0.0.html
 create mode 100644 KeyDB-5.0.0.html
 create mode 100644 KeyDB-6.0.0.html
 create mode 100644 KeyDB-7.0.0.html
 create mode 100644 Kvrocks-4.0.0.html
 create mode 100644 Kvrocks-5.0.0.html
 create mode 100644 Kvrocks-6.0.0.html
 create mode 100644 Kvrocks-7.0.0.html
 create mode 100644 Pika-4.0.0.html
 create mode 100644 Pika-5.0.0.html
 create mode 100644 Valkey-4.0.0.html
 create mode 100644 Valkey-5.0.0.html
 create mode 100644 Valkey-6.0.0.html
 create mode 100644 Valkey-7.0.0.html

diff --git a/AliyunRedis-4.0.0.html b/AliyunRedis-4.0.0.html
new file mode 100644
index 0000000..0091fe0
--- /dev/null
+++ b/AliyunRedis-4.0.0.html
@@ -0,0 +1,420 @@
+<pre>
+test: del command passed
+test: unlink command passed
+test: rename command passed
+test: rename command tags skipped
+test: renamenx command passed
+test: renamenx command tags skipped
+test: randomkey command passed
+test: exists command passed
+test: ttl command passed
+test: pttl command passed
+test: expire command passed
+test: expire with NX / XX version skipped
+test: expire with GT / LT version skipped
+test: expireat command passed
+test: expireat with NX / XX version skipped
+test: expireat with GT / LT version skipped
+test: pexpire command passed
+test: pexpire with NX / XX version skipped
+test: pexpire with GT / LT version skipped
+test: pexpireat command passed
+test: pexpireat with NX / XX version skipped
+test: pexpireat with GT / LT version skipped
+test: expiretime command version skipped
+test: pexpiretime command version skipped
+test: persist command passed
+test: dump command passed
+test: touch command passed
+test: restore command passed
+test: restore with REPLACE passed
+test: restore with ABSTTL version skipped
+test: restore with IDLETIME version skipped
+test: scan command passed
+test: scan with TYPE version skipped
+test: keys command passed
+test: move command passed
+test: copy command version skipped
+test: copy command tags skipped
+test: type command passed
+test: sort command passed
+test: sort_ro command skipped
+test: set command passed
+test: blmove command version skipped
+test: blmove command tags skipped
+test: blmpop command version skipped
+test: blmpop with COUNT version skipped
+test: blmpop with COUNT tags skipped
+test: blpop command passed
+test: blpop command tags skipped
+test: blpop with double timeout version skipped
+test: blpop with double timeout tags skipped
+test: brpop command passed
+test: brpop command tags skipped
+test: brpop with double timeout version skipped
+test: brpop with double timeout tags skipped
+test: brpoplpush command passed
+test: brpoplpush command tags skipped
+test: brpoplpush with double timeout version skipped
+test: brpoplpush with double timeout tags skipped
+test: lindex command passed
+test: linsert command passed
+test: llen command passed
+test: lmove command version skipped
+test: lmove command tags skipped
+test: lmpop command version skipped
+test: lmpop with COUNT version skipped
+test: lmpop with COUNT tags skipped
+test: lpop command passed
+test: lpop with COUNT version skipped
+test: lpos command version skipped
+test: lpos with RANK version skipped
+test: lpos with COUNT version skipped
+test: lpos with MAXLEN version skipped
+test: lpos with RANK, COUNT and MAXLEN version skipped
+test: lpush command passed
+test: lpush with multiple element passed
+test: lpushx command passed
+test: lpushx with multiple element passed
+test: lrange command passed
+test: lrem command passed
+test: lset command passed
+test: ltrim command passed
+test: rpop command passed
+test: rpop with COUNT version skipped
+test: rpoplpush command passed
+test: rpoplpush command tags skipped
+test: rpush command passed
+test: rpush with multiple element passed
+test: rpushx command passed
+test: rpushx command tags skipped
+test: rpushx with multiple element passed
+test: rpushx with multiple element tags skipped
+test: sadd command passed
+test: sadd command passed
+test: scard command passed
+test: sdiff command passed
+test: sdiff command tags skipped
+test: sdiffstore command passed
+test: sdiffstore command tags skipped
+test: sinter command passed
+test: sinter command tags skipped
+test: sintercard command version skipped
+test: sintercard command tags skipped
+test: sintercard with LIMIT version skipped
+test: sintercard with LIMIT tags skipped
+test: sinterstore command passed
+test: sinterstore command tags skipped
+test: sismember command passed
+test: smembers command passed
+test: smismember command version skipped
+test: smove command passed
+test: smove command tags skipped
+test: spop command passed
+test: spop with COUNT passed
+test: srandmember command passed
+test: srandmember with COUNT passed
+test: srem command passed
+test: srem with multiple member passed
+test: sscan command passed
+test: sscan with MATCH and COUNT passed
+test: sunion command passed
+test: sunion command tags skipped
+test: sunionstore command passed
+test: sunionstore command tags skipped
+test: bzmpop command version skipped
+test: bzmpop command tags skipped
+test: bzmpop with COUNT version skipped
+test: bzmpop with COUNT version skipped
+test: bzpopmax command version skipped
+test: bzpopmax with double timeout version skipped
+test: bzpopmin command version skipped
+test: bzpopmin with double timeout version skipped
+test: zadd command passed
+test: zadd with multiple elements passed
+test: zadd with XX / NX / CH / INCR passed
+test: zadd with GT / LT version skipped
+test: zcard command passed
+test: zcount command passed
+test: zdiff command version skipped
+test: zdiff command tags skipped
+test: zdiffstore command version skipped
+test: zdiffstore command tags skipped
+test: zincrby command passed
+test: zinter command version skipped
+test: zinter command tags skipped
+test: zinter with WEIGHTS version skipped
+test: zinter with WEIGHTS tags skipped
+test: zinter with AGGREGATE version skipped
+test: zinter with AGGREGATE tags skipped
+test: zinter WITHSCORES version skipped
+test: zinter WITHSCORES tags skipped
+test: zintercard command version skipped
+test: zintercard command tags skipped
+test: zintercard with LIMIT version skipped
+test: zintercard with LIMIT tags skipped
+test: zinterstore command passed
+test: zinterstore command tags skipped
+test: zinterstore with WEIGHTS passed
+test: zinterstore with WEIGHTS tags skipped
+test: zinterstore with AGGREGATE passed
+test: zinterstore with AGGREGATE tags skipped
+test: zlexcount command passed
+test: zmpop command version skipped
+test: zmpop with COUNT version skipped
+test: zmscore command version skipped
+test: zpopmax command version skipped
+test: zpopmax with COUNT version skipped
+test: zpopmin command version skipped
+test: zpopmin command version skipped
+test: zrandmember command version skipped
+test: zrandmember with COUNT version skipped
+test: zrandmember with WITHSCORES version skipped
+test: zrange command passed
+test: zrange with WITHSCORES passed
+test: zrange with BYSCORE / BYLEX version skipped
+test: zrange with REV version skipped
+test: zrange with LIMIT version skipped
+test: zrangebylex command passed
+test: zrangebylex with LIMIT passed
+test: zrangebyscore command passed
+test: zrangebyscore with LIMIT passed
+test: zrangebyscore with WITHSCORES passed
+test: zrangestore command version skipped
+test: zrangestore command tags skipped
+test: zrangestore with BYSCORE / BYLEX version skipped
+test: zrangestore with BYSCORE / BYLEX tags skipped
+test: zrangestore with REV version skipped
+test: zrangestore with REV tags skipped
+test: zrangestore with LIMIT version skipped
+test: zrangestore with LIMIT tags skipped
+test: zrank command passed
+test: zrank with WITHSCORE version skipped
+test: zrem command passed
+test: zrem with multiple elements passed
+test: zremrangebylex command passed
+test: zremrangebyrank command passed
+test: zremrangebyscore command passed
+test: zrevrange command passed
+test: zrevrange with WITHSCORES passed
+test: zrevrangebylex command passed
+test: zrevrangebylex with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrangebyscore with WITHSCORES passed
+test: zrevrangebyscore with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrank command passed
+test: zrevrank with WITHSCORE version skipped
+test: zscan command passed
+test: zscan with MATCH and COUNT passed
+test: zscore command passed
+test: zunion command version skipped
+test: zunion command tags skipped
+test: zunion with WEIGHTS and AGGREGATE version skipped
+test: zunion with WEIGHTS and AGGREGATE tags skipped
+test: zunion with WITHSCORES version skipped
+test: zunion with WITHSCORES tags skipped
+test: zunionstore command passed
+test: zunionstore command tags skipped
+test: zunionstore with WEIGHTS and AGGREGATE passed
+test: zunionstore with WEIGHTS and AGGREGATE tags skipped
+test: append command passed
+test: decr command passed
+test: decrby command passed
+test: get command passed
+test: getdel command version skipped
+test: getex command version skipped
+test: getex with EX version skipped
+test: getex with PX version skipped
+test: getex with EXAT version skipped
+test: getex with PXAT version skipped
+test: getex with PERSIST version skipped
+test: getrange command passed
+test: getset command passed
+test: incr command passed
+test: incrby command passed
+test: incrbyfloat command passed
+test: lcs command version skipped
+test: lcs command tags skipped
+test: lcs with LEN version skipped
+test: lcs with LEN tags skipped
+test: lcs with IDX version skipped
+test: lcs with IDX tags skipped
+test: lcs with MINMATCHLEN version skipped
+test: lcs with MINMATCHLEN tags skipped
+test: lcs with WITHMATCHLEN version skipped
+test: lcs with WITHMATCHLEN tags skipped
+test: mget command passed
+test: mget command tags skipped
+test: mset command passed
+test: mset command tags skipped
+test: msetnx command passed
+test: msetnx command tags skipped
+test: psetex command passed
+test: set command passed
+test: set with EX / PX passed
+test: set with NX / XX passed
+test: set with KEEPTTL version skipped
+test: set with GET version skipped
+test: set with EXAT / PXAT version skipped
+test: set with NX and GET version skipped
+test: setex command passed
+test: setnx command passed
+test: setrange command passed
+test: strlen command passed
+test: substr command passed
+test: hdel command passed
+test: hdel with multiple field passed
+test: hexists command passed
+test: hget command passed
+test: hgetall command passed
+test: hincrby command passed
+test: hincrbyfloat command passed
+test: hkeys command passed
+test: hlen command passed
+test: hmget command passed
+test: hmset command passed
+test: hrandfield command version skipped
+test: hrandfield with COUNT version skipped
+test: hrandfield with WITHVALUES version skipped
+test: hscan command passed
+test: hscan with MATCH and COUNT passed
+test: hset command passed
+test: hset command with multiple field and value passed
+test: hsetnx command passed
+test: hstrlen command passed
+test: hvals command passed
+test: bitcount command passed
+test: bitcount with BYTE / BIT version skipped
+test: bitfield command passed
+test: bitfield_ro command version skipped
+test: bitop command passed
+test: bitop command tags skipped
+test: bitpos command passed
+test: bitpos with BYTE / BIT version skipped
+test: getbit command passed
+test: setbit command passed
+test: pfadd command passed
+test: pfcount command passed
+test: pfmerge command passed
+test: pfmerge command tags skipped
+test: geoadd command passed
+test: geoadd with CH / NX / XX version skipped
+test: geodist command passed
+test: geodist with M / KM / FT / MI passed
+test: geohash command passed
+test: geopos command passed
+test: georadius command passed
+test: georadius with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius with COUNT passed
+test: georadius with ASC / DESC passed
+test: georadius with STORE / STOREDIST passed
+test: georadius with STORE / STOREDIST tags skipped
+test: georadius with ANY option for COUNT version skipped
+test: georadius with support for uppercase unit names version skipped
+test: georadius_ro command passed
+test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius_ro with COUNT passed
+test: georadius_ro with ASC / DESC passed
+test: georadius_ro with ANY option for COUNT version skipped
+test: georadiusbymember command passed
+test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember with COUNT passed
+test: georadiusbymember with ASC / DESC passed
+test: georadiusbymember with STORE / STOREDIST passed
+test: georadiusbymember with STORE / STOREDIST tags skipped
+test: georadiusbymember with ANY option for COUNT version skipped
+test: georadiusbymember with support for uppercase unit names version skipped
+test: georadiusbymember_ro command passed
+test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember_ro with COUNT passed
+test: georadiusbymember_ro with ASC / DESC passed
+test: georadiusbymember_ro with ANY option for COUNT version skipped
+test: geosearch command version skipped
+test: geosearch with ASC / DESC version skipped
+test: geosearch with COUNT version skipped
+test: geosearch with WITHCOORD / WITHDIST / WITHHASH version skipped
+test: geosearch with support for uppercase unit names version skipped
+test: geosearchstore command version skipped
+test: geosearchstore command tags skipped
+test: geosearchstore with ASC / DESC version skipped
+test: geosearchstore with ASC / DESC tags skipped
+test: geosearchstore with COUNT version skipped
+test: geosearchstore with COUNT tags skipped
+test: geosearchstore with STOREDIST version skipped
+test: geosearchstore with STOREDIST tags skipped
+test: geosearchstore with support for uppercase unit names version skipped
+test: geosearchstore with support for uppercase unit names tags skipped
+test: dbsize command passed
+test: flushall command passed
+test: flushall with async passed
+test: flushall with sync version skipped
+test: flushdb command passed
+test: flushdb with async passed
+test: flushdb with sync version skipped
+test: swapdb command passed
+test: discard command passed
+test: exec command passed
+test: multi command passed
+test: unwatch command passed
+test: watch command passed
+test: eval command passed
+test: eval_ro command version skipped
+test: evalsha command passed
+test: evalsha_ro command version skipped
+test: fcall command version skipped
+test: fcall_ro command version skipped
+test: function delete command version skipped
+test: function flush command version skipped
+test: function flush with SYNC version skipped
+test: function flush with ASYNC version skipped
+test: function list command version skipped
+test: function load command version skipped
+test: function restore command version skipped
+test: function stats command version skipped
+test: script exists command passed
+test: script flush command passed
+test: script flush with SYNC version skipped
+test: script flush with ASYNC version skipped
+test: script load command passed
+test: xack command version skipped
+test: xadd command version skipped
+test: xadd with NOMKSTREAM/MINID/LIMIT version skipped
+test: xadd with EXPLICIT ID version skipped
+test: xclaim command version skipped
+test: xdel command version skipped
+test: xgroup create command version skipped
+test: xgroup create with MKSTREAM version skipped
+test: xgroup create with ENTRIESREAD version skipped
+test: xgroup createconsumer command version skipped
+test: xgroup delconsumer command version skipped
+test: xgroup destroy command version skipped
+test: xgroup setid command version skipped
+test: xgroup setid with ENTRIESREAD version skipped
+test: xlen command version skipped
+test: xpending command version skipped
+test: xrange command version skipped
+test: xread command version skipped
+test: xreadgroup command version skipped
+test: xrevrange command version skipped
+test: xrevrange command with EXCLUSIVE RANGES version skipped
+test: xtrim command version skipped
+test: xtrim command with MINID/LIMIT version skipped
+test: psubscribe command passed
+test: psubscribe with RESET version skipped
+test: publish command run test error Connection closed by server.
+test: pubsub channels command passed
+test: pubsub numpat command passed
+test: pubsub numsub command passed
+test: pubsub shardchannels command version skipped
+test: pubsub shardnumsub command version skipped
+test: punsubscribe command passed
+test: spublish command version skipped
+test: ssubscribe command version skipped
+test: subscribe command passed
+test: subscribe with RESET version skipped
+test: sunsubscribe command version skipped
+test: unsubscribe command passed
+-------- The result of tests --------
+Summary: version: 4.0.0, total tests: 195, passed: 195, rate: 100.00%
+</pre>
diff --git a/AliyunRedis-5.0.0.html b/AliyunRedis-5.0.0.html
new file mode 100644
index 0000000..a5c5a59
--- /dev/null
+++ b/AliyunRedis-5.0.0.html
@@ -0,0 +1,420 @@
+<pre>
+test: del command passed
+test: unlink command passed
+test: rename command passed
+test: rename command tags skipped
+test: renamenx command passed
+test: renamenx command tags skipped
+test: randomkey command passed
+test: exists command passed
+test: ttl command passed
+test: pttl command passed
+test: expire command passed
+test: expire with NX / XX version skipped
+test: expire with GT / LT version skipped
+test: expireat command passed
+test: expireat with NX / XX version skipped
+test: expireat with GT / LT version skipped
+test: pexpire command passed
+test: pexpire with NX / XX version skipped
+test: pexpire with GT / LT version skipped
+test: pexpireat command passed
+test: pexpireat with NX / XX version skipped
+test: pexpireat with GT / LT version skipped
+test: expiretime command version skipped
+test: pexpiretime command version skipped
+test: persist command passed
+test: dump command passed
+test: touch command passed
+test: restore command passed
+test: restore with REPLACE passed
+test: restore with ABSTTL passed
+test: restore with IDLETIME passed
+test: scan command passed
+test: scan with TYPE version skipped
+test: keys command passed
+test: move command passed
+test: copy command version skipped
+test: copy command tags skipped
+test: type command passed
+test: sort command passed
+test: sort_ro command skipped
+test: set command passed
+test: blmove command version skipped
+test: blmove command tags skipped
+test: blmpop command version skipped
+test: blmpop with COUNT version skipped
+test: blmpop with COUNT tags skipped
+test: blpop command passed
+test: blpop command tags skipped
+test: blpop with double timeout version skipped
+test: blpop with double timeout tags skipped
+test: brpop command passed
+test: brpop command tags skipped
+test: brpop with double timeout version skipped
+test: brpop with double timeout tags skipped
+test: brpoplpush command passed
+test: brpoplpush command tags skipped
+test: brpoplpush with double timeout version skipped
+test: brpoplpush with double timeout tags skipped
+test: lindex command passed
+test: linsert command passed
+test: llen command passed
+test: lmove command version skipped
+test: lmove command tags skipped
+test: lmpop command version skipped
+test: lmpop with COUNT version skipped
+test: lmpop with COUNT tags skipped
+test: lpop command passed
+test: lpop with COUNT version skipped
+test: lpos command version skipped
+test: lpos with RANK version skipped
+test: lpos with COUNT version skipped
+test: lpos with MAXLEN version skipped
+test: lpos with RANK, COUNT and MAXLEN version skipped
+test: lpush command passed
+test: lpush with multiple element passed
+test: lpushx command passed
+test: lpushx with multiple element passed
+test: lrange command passed
+test: lrem command passed
+test: lset command passed
+test: ltrim command passed
+test: rpop command passed
+test: rpop with COUNT version skipped
+test: rpoplpush command passed
+test: rpoplpush command tags skipped
+test: rpush command passed
+test: rpush with multiple element passed
+test: rpushx command passed
+test: rpushx command tags skipped
+test: rpushx with multiple element passed
+test: rpushx with multiple element tags skipped
+test: sadd command passed
+test: sadd command passed
+test: scard command passed
+test: sdiff command passed
+test: sdiff command tags skipped
+test: sdiffstore command passed
+test: sdiffstore command tags skipped
+test: sinter command passed
+test: sinter command tags skipped
+test: sintercard command version skipped
+test: sintercard command tags skipped
+test: sintercard with LIMIT version skipped
+test: sintercard with LIMIT tags skipped
+test: sinterstore command passed
+test: sinterstore command tags skipped
+test: sismember command passed
+test: smembers command passed
+test: smismember command version skipped
+test: smove command passed
+test: smove command tags skipped
+test: spop command passed
+test: spop with COUNT passed
+test: srandmember command passed
+test: srandmember with COUNT passed
+test: srem command passed
+test: srem with multiple member passed
+test: sscan command passed
+test: sscan with MATCH and COUNT passed
+test: sunion command passed
+test: sunion command tags skipped
+test: sunionstore command passed
+test: sunionstore command tags skipped
+test: bzmpop command version skipped
+test: bzmpop command tags skipped
+test: bzmpop with COUNT version skipped
+test: bzmpop with COUNT version skipped
+test: bzpopmax command passed
+test: bzpopmax with double timeout version skipped
+test: bzpopmin command passed
+test: bzpopmin with double timeout version skipped
+test: zadd command passed
+test: zadd with multiple elements passed
+test: zadd with XX / NX / CH / INCR passed
+test: zadd with GT / LT version skipped
+test: zcard command passed
+test: zcount command passed
+test: zdiff command version skipped
+test: zdiff command tags skipped
+test: zdiffstore command version skipped
+test: zdiffstore command tags skipped
+test: zincrby command passed
+test: zinter command version skipped
+test: zinter command tags skipped
+test: zinter with WEIGHTS version skipped
+test: zinter with WEIGHTS tags skipped
+test: zinter with AGGREGATE version skipped
+test: zinter with AGGREGATE tags skipped
+test: zinter WITHSCORES version skipped
+test: zinter WITHSCORES tags skipped
+test: zintercard command version skipped
+test: zintercard command tags skipped
+test: zintercard with LIMIT version skipped
+test: zintercard with LIMIT tags skipped
+test: zinterstore command passed
+test: zinterstore command tags skipped
+test: zinterstore with WEIGHTS passed
+test: zinterstore with WEIGHTS tags skipped
+test: zinterstore with AGGREGATE passed
+test: zinterstore with AGGREGATE tags skipped
+test: zlexcount command passed
+test: zmpop command version skipped
+test: zmpop with COUNT version skipped
+test: zmscore command version skipped
+test: zpopmax command passed
+test: zpopmax with COUNT passed
+test: zpopmin command passed
+test: zpopmin command passed
+test: zrandmember command version skipped
+test: zrandmember with COUNT version skipped
+test: zrandmember with WITHSCORES version skipped
+test: zrange command passed
+test: zrange with WITHSCORES passed
+test: zrange with BYSCORE / BYLEX version skipped
+test: zrange with REV version skipped
+test: zrange with LIMIT version skipped
+test: zrangebylex command passed
+test: zrangebylex with LIMIT passed
+test: zrangebyscore command passed
+test: zrangebyscore with LIMIT passed
+test: zrangebyscore with WITHSCORES passed
+test: zrangestore command version skipped
+test: zrangestore command tags skipped
+test: zrangestore with BYSCORE / BYLEX version skipped
+test: zrangestore with BYSCORE / BYLEX tags skipped
+test: zrangestore with REV version skipped
+test: zrangestore with REV tags skipped
+test: zrangestore with LIMIT version skipped
+test: zrangestore with LIMIT tags skipped
+test: zrank command passed
+test: zrank with WITHSCORE version skipped
+test: zrem command passed
+test: zrem with multiple elements passed
+test: zremrangebylex command passed
+test: zremrangebyrank command passed
+test: zremrangebyscore command passed
+test: zrevrange command passed
+test: zrevrange with WITHSCORES passed
+test: zrevrangebylex command passed
+test: zrevrangebylex with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrangebyscore with WITHSCORES passed
+test: zrevrangebyscore with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrank command passed
+test: zrevrank with WITHSCORE version skipped
+test: zscan command passed
+test: zscan with MATCH and COUNT passed
+test: zscore command passed
+test: zunion command version skipped
+test: zunion command tags skipped
+test: zunion with WEIGHTS and AGGREGATE version skipped
+test: zunion with WEIGHTS and AGGREGATE tags skipped
+test: zunion with WITHSCORES version skipped
+test: zunion with WITHSCORES tags skipped
+test: zunionstore command passed
+test: zunionstore command tags skipped
+test: zunionstore with WEIGHTS and AGGREGATE passed
+test: zunionstore with WEIGHTS and AGGREGATE tags skipped
+test: append command passed
+test: decr command passed
+test: decrby command passed
+test: get command passed
+test: getdel command version skipped
+test: getex command version skipped
+test: getex with EX version skipped
+test: getex with PX version skipped
+test: getex with EXAT version skipped
+test: getex with PXAT version skipped
+test: getex with PERSIST version skipped
+test: getrange command passed
+test: getset command passed
+test: incr command passed
+test: incrby command passed
+test: incrbyfloat command passed
+test: lcs command version skipped
+test: lcs command tags skipped
+test: lcs with LEN version skipped
+test: lcs with LEN tags skipped
+test: lcs with IDX version skipped
+test: lcs with IDX tags skipped
+test: lcs with MINMATCHLEN version skipped
+test: lcs with MINMATCHLEN tags skipped
+test: lcs with WITHMATCHLEN version skipped
+test: lcs with WITHMATCHLEN tags skipped
+test: mget command passed
+test: mget command tags skipped
+test: mset command passed
+test: mset command tags skipped
+test: msetnx command passed
+test: msetnx command tags skipped
+test: psetex command passed
+test: set command passed
+test: set with EX / PX passed
+test: set with NX / XX passed
+test: set with KEEPTTL version skipped
+test: set with GET version skipped
+test: set with EXAT / PXAT version skipped
+test: set with NX and GET version skipped
+test: setex command passed
+test: setnx command passed
+test: setrange command passed
+test: strlen command passed
+test: substr command passed
+test: hdel command passed
+test: hdel with multiple field passed
+test: hexists command passed
+test: hget command passed
+test: hgetall command passed
+test: hincrby command passed
+test: hincrbyfloat command passed
+test: hkeys command passed
+test: hlen command passed
+test: hmget command passed
+test: hmset command passed
+test: hrandfield command version skipped
+test: hrandfield with COUNT version skipped
+test: hrandfield with WITHVALUES version skipped
+test: hscan command passed
+test: hscan with MATCH and COUNT passed
+test: hset command passed
+test: hset command with multiple field and value passed
+test: hsetnx command passed
+test: hstrlen command passed
+test: hvals command passed
+test: bitcount command passed
+test: bitcount with BYTE / BIT version skipped
+test: bitfield command passed
+test: bitfield_ro command version skipped
+test: bitop command passed
+test: bitop command tags skipped
+test: bitpos command passed
+test: bitpos with BYTE / BIT version skipped
+test: getbit command passed
+test: setbit command passed
+test: pfadd command passed
+test: pfcount command passed
+test: pfmerge command passed
+test: pfmerge command tags skipped
+test: geoadd command passed
+test: geoadd with CH / NX / XX version skipped
+test: geodist command passed
+test: geodist with M / KM / FT / MI passed
+test: geohash command passed
+test: geopos command passed
+test: georadius command passed
+test: georadius with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius with COUNT passed
+test: georadius with ASC / DESC passed
+test: georadius with STORE / STOREDIST passed
+test: georadius with STORE / STOREDIST tags skipped
+test: georadius with ANY option for COUNT version skipped
+test: georadius with support for uppercase unit names version skipped
+test: georadius_ro command passed
+test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius_ro with COUNT passed
+test: georadius_ro with ASC / DESC passed
+test: georadius_ro with ANY option for COUNT version skipped
+test: georadiusbymember command passed
+test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember with COUNT passed
+test: georadiusbymember with ASC / DESC passed
+test: georadiusbymember with STORE / STOREDIST passed
+test: georadiusbymember with STORE / STOREDIST tags skipped
+test: georadiusbymember with ANY option for COUNT version skipped
+test: georadiusbymember with support for uppercase unit names version skipped
+test: georadiusbymember_ro command passed
+test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember_ro with COUNT passed
+test: georadiusbymember_ro with ASC / DESC passed
+test: georadiusbymember_ro with ANY option for COUNT version skipped
+test: geosearch command version skipped
+test: geosearch with ASC / DESC version skipped
+test: geosearch with COUNT version skipped
+test: geosearch with WITHCOORD / WITHDIST / WITHHASH version skipped
+test: geosearch with support for uppercase unit names version skipped
+test: geosearchstore command version skipped
+test: geosearchstore command tags skipped
+test: geosearchstore with ASC / DESC version skipped
+test: geosearchstore with ASC / DESC tags skipped
+test: geosearchstore with COUNT version skipped
+test: geosearchstore with COUNT tags skipped
+test: geosearchstore with STOREDIST version skipped
+test: geosearchstore with STOREDIST tags skipped
+test: geosearchstore with support for uppercase unit names version skipped
+test: geosearchstore with support for uppercase unit names tags skipped
+test: dbsize command passed
+test: flushall command passed
+test: flushall with async passed
+test: flushall with sync version skipped
+test: flushdb command passed
+test: flushdb with async passed
+test: flushdb with sync version skipped
+test: swapdb command passed
+test: discard command passed
+test: exec command passed
+test: multi command passed
+test: unwatch command passed
+test: watch command passed
+test: eval command passed
+test: eval_ro command version skipped
+test: evalsha command passed
+test: evalsha_ro command version skipped
+test: fcall command version skipped
+test: fcall_ro command version skipped
+test: function delete command version skipped
+test: function flush command version skipped
+test: function flush with SYNC version skipped
+test: function flush with ASYNC version skipped
+test: function list command version skipped
+test: function load command version skipped
+test: function restore command version skipped
+test: function stats command version skipped
+test: script exists command passed
+test: script flush command passed
+test: script flush with SYNC version skipped
+test: script flush with ASYNC version skipped
+test: script load command passed
+test: xack command passed
+test: xadd command passed
+test: xadd with NOMKSTREAM/MINID/LIMIT version skipped
+test: xadd with EXPLICIT ID version skipped
+test: xclaim command passed
+test: xdel command passed
+test: xgroup create command passed
+test: xgroup create with MKSTREAM passed
+test: xgroup create with ENTRIESREAD version skipped
+test: xgroup createconsumer command version skipped
+test: xgroup delconsumer command passed
+test: xgroup destroy command passed
+test: xgroup setid command passed
+test: xgroup setid with ENTRIESREAD version skipped
+test: xlen command passed
+test: xpending command passed
+test: xrange command passed
+test: xread command passed
+test: xreadgroup command passed
+test: xrevrange command passed
+test: xrevrange command with EXCLUSIVE RANGES version skipped
+test: xtrim command passed
+test: xtrim command with MINID/LIMIT version skipped
+test: psubscribe command passed
+test: psubscribe with RESET version skipped
+test: publish command run test error Connection closed by server.
+test: pubsub channels command passed
+test: pubsub numpat command passed
+test: pubsub numsub command passed
+test: pubsub shardchannels command version skipped
+test: pubsub shardnumsub command version skipped
+test: punsubscribe command passed
+test: spublish command version skipped
+test: ssubscribe command version skipped
+test: subscribe command passed
+test: subscribe with RESET version skipped
+test: sunsubscribe command version skipped
+test: unsubscribe command passed
+-------- The result of tests --------
+Summary: version: 5.0.0, total tests: 219, passed: 219, rate: 100.00%
+</pre>
diff --git a/AliyunRedis-6.0.0.html b/AliyunRedis-6.0.0.html
new file mode 100644
index 0000000..8aa0cdc
--- /dev/null
+++ b/AliyunRedis-6.0.0.html
@@ -0,0 +1,420 @@
+<pre>
+test: del command passed
+test: unlink command passed
+test: rename command passed
+test: rename command tags skipped
+test: renamenx command passed
+test: renamenx command tags skipped
+test: randomkey command passed
+test: exists command passed
+test: ttl command passed
+test: pttl command passed
+test: expire command passed
+test: expire with NX / XX version skipped
+test: expire with GT / LT version skipped
+test: expireat command passed
+test: expireat with NX / XX version skipped
+test: expireat with GT / LT version skipped
+test: pexpire command passed
+test: pexpire with NX / XX version skipped
+test: pexpire with GT / LT version skipped
+test: pexpireat command passed
+test: pexpireat with NX / XX version skipped
+test: pexpireat with GT / LT version skipped
+test: expiretime command version skipped
+test: pexpiretime command version skipped
+test: persist command passed
+test: dump command passed
+test: touch command passed
+test: restore command passed
+test: restore with REPLACE passed
+test: restore with ABSTTL passed
+test: restore with IDLETIME passed
+test: scan command passed
+test: scan with TYPE passed
+test: keys command passed
+test: move command passed
+test: copy command version skipped
+test: copy command tags skipped
+test: type command passed
+test: sort command passed
+test: sort_ro command skipped
+test: set command passed
+test: blmove command version skipped
+test: blmove command tags skipped
+test: blmpop command version skipped
+test: blmpop with COUNT version skipped
+test: blmpop with COUNT tags skipped
+test: blpop command passed
+test: blpop command tags skipped
+test: blpop with double timeout passed
+test: blpop with double timeout tags skipped
+test: brpop command passed
+test: brpop command tags skipped
+test: brpop with double timeout passed
+test: brpop with double timeout tags skipped
+test: brpoplpush command passed
+test: brpoplpush command tags skipped
+test: brpoplpush with double timeout passed
+test: brpoplpush with double timeout tags skipped
+test: lindex command passed
+test: linsert command passed
+test: llen command passed
+test: lmove command version skipped
+test: lmove command tags skipped
+test: lmpop command version skipped
+test: lmpop with COUNT version skipped
+test: lmpop with COUNT tags skipped
+test: lpop command passed
+test: lpop with COUNT version skipped
+test: lpos command version skipped
+test: lpos with RANK version skipped
+test: lpos with COUNT version skipped
+test: lpos with MAXLEN version skipped
+test: lpos with RANK, COUNT and MAXLEN version skipped
+test: lpush command passed
+test: lpush with multiple element passed
+test: lpushx command passed
+test: lpushx with multiple element passed
+test: lrange command passed
+test: lrem command passed
+test: lset command passed
+test: ltrim command passed
+test: rpop command passed
+test: rpop with COUNT version skipped
+test: rpoplpush command passed
+test: rpoplpush command tags skipped
+test: rpush command passed
+test: rpush with multiple element passed
+test: rpushx command passed
+test: rpushx command tags skipped
+test: rpushx with multiple element passed
+test: rpushx with multiple element tags skipped
+test: sadd command passed
+test: sadd command passed
+test: scard command passed
+test: sdiff command passed
+test: sdiff command tags skipped
+test: sdiffstore command passed
+test: sdiffstore command tags skipped
+test: sinter command passed
+test: sinter command tags skipped
+test: sintercard command version skipped
+test: sintercard command tags skipped
+test: sintercard with LIMIT version skipped
+test: sintercard with LIMIT tags skipped
+test: sinterstore command passed
+test: sinterstore command tags skipped
+test: sismember command passed
+test: smembers command passed
+test: smismember command version skipped
+test: smove command passed
+test: smove command tags skipped
+test: spop command passed
+test: spop with COUNT passed
+test: srandmember command passed
+test: srandmember with COUNT passed
+test: srem command passed
+test: srem with multiple member passed
+test: sscan command passed
+test: sscan with MATCH and COUNT passed
+test: sunion command passed
+test: sunion command tags skipped
+test: sunionstore command passed
+test: sunionstore command tags skipped
+test: bzmpop command version skipped
+test: bzmpop command tags skipped
+test: bzmpop with COUNT version skipped
+test: bzmpop with COUNT version skipped
+test: bzpopmax command passed
+test: bzpopmax with double timeout passed
+test: bzpopmin command passed
+test: bzpopmin with double timeout passed
+test: zadd command passed
+test: zadd with multiple elements passed
+test: zadd with XX / NX / CH / INCR passed
+test: zadd with GT / LT version skipped
+test: zcard command passed
+test: zcount command passed
+test: zdiff command version skipped
+test: zdiff command tags skipped
+test: zdiffstore command version skipped
+test: zdiffstore command tags skipped
+test: zincrby command passed
+test: zinter command version skipped
+test: zinter command tags skipped
+test: zinter with WEIGHTS version skipped
+test: zinter with WEIGHTS tags skipped
+test: zinter with AGGREGATE version skipped
+test: zinter with AGGREGATE tags skipped
+test: zinter WITHSCORES version skipped
+test: zinter WITHSCORES tags skipped
+test: zintercard command version skipped
+test: zintercard command tags skipped
+test: zintercard with LIMIT version skipped
+test: zintercard with LIMIT tags skipped
+test: zinterstore command passed
+test: zinterstore command tags skipped
+test: zinterstore with WEIGHTS passed
+test: zinterstore with WEIGHTS tags skipped
+test: zinterstore with AGGREGATE passed
+test: zinterstore with AGGREGATE tags skipped
+test: zlexcount command passed
+test: zmpop command version skipped
+test: zmpop with COUNT version skipped
+test: zmscore command version skipped
+test: zpopmax command passed
+test: zpopmax with COUNT passed
+test: zpopmin command passed
+test: zpopmin command passed
+test: zrandmember command version skipped
+test: zrandmember with COUNT version skipped
+test: zrandmember with WITHSCORES version skipped
+test: zrange command passed
+test: zrange with WITHSCORES passed
+test: zrange with BYSCORE / BYLEX version skipped
+test: zrange with REV version skipped
+test: zrange with LIMIT version skipped
+test: zrangebylex command passed
+test: zrangebylex with LIMIT passed
+test: zrangebyscore command passed
+test: zrangebyscore with LIMIT passed
+test: zrangebyscore with WITHSCORES passed
+test: zrangestore command version skipped
+test: zrangestore command tags skipped
+test: zrangestore with BYSCORE / BYLEX version skipped
+test: zrangestore with BYSCORE / BYLEX tags skipped
+test: zrangestore with REV version skipped
+test: zrangestore with REV tags skipped
+test: zrangestore with LIMIT version skipped
+test: zrangestore with LIMIT tags skipped
+test: zrank command passed
+test: zrank with WITHSCORE version skipped
+test: zrem command passed
+test: zrem with multiple elements passed
+test: zremrangebylex command passed
+test: zremrangebyrank command passed
+test: zremrangebyscore command passed
+test: zrevrange command passed
+test: zrevrange with WITHSCORES passed
+test: zrevrangebylex command passed
+test: zrevrangebylex with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrangebyscore with WITHSCORES passed
+test: zrevrangebyscore with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrank command passed
+test: zrevrank with WITHSCORE version skipped
+test: zscan command passed
+test: zscan with MATCH and COUNT passed
+test: zscore command passed
+test: zunion command version skipped
+test: zunion command tags skipped
+test: zunion with WEIGHTS and AGGREGATE version skipped
+test: zunion with WEIGHTS and AGGREGATE tags skipped
+test: zunion with WITHSCORES version skipped
+test: zunion with WITHSCORES tags skipped
+test: zunionstore command passed
+test: zunionstore command tags skipped
+test: zunionstore with WEIGHTS and AGGREGATE passed
+test: zunionstore with WEIGHTS and AGGREGATE tags skipped
+test: append command passed
+test: decr command passed
+test: decrby command passed
+test: get command passed
+test: getdel command version skipped
+test: getex command version skipped
+test: getex with EX version skipped
+test: getex with PX version skipped
+test: getex with EXAT version skipped
+test: getex with PXAT version skipped
+test: getex with PERSIST version skipped
+test: getrange command passed
+test: getset command passed
+test: incr command passed
+test: incrby command passed
+test: incrbyfloat command passed
+test: lcs command version skipped
+test: lcs command tags skipped
+test: lcs with LEN version skipped
+test: lcs with LEN tags skipped
+test: lcs with IDX version skipped
+test: lcs with IDX tags skipped
+test: lcs with MINMATCHLEN version skipped
+test: lcs with MINMATCHLEN tags skipped
+test: lcs with WITHMATCHLEN version skipped
+test: lcs with WITHMATCHLEN tags skipped
+test: mget command passed
+test: mget command tags skipped
+test: mset command passed
+test: mset command tags skipped
+test: msetnx command passed
+test: msetnx command tags skipped
+test: psetex command passed
+test: set command passed
+test: set with EX / PX passed
+test: set with NX / XX passed
+test: set with KEEPTTL passed
+test: set with GET version skipped
+test: set with EXAT / PXAT version skipped
+test: set with NX and GET version skipped
+test: setex command passed
+test: setnx command passed
+test: setrange command passed
+test: strlen command passed
+test: substr command passed
+test: hdel command passed
+test: hdel with multiple field passed
+test: hexists command passed
+test: hget command passed
+test: hgetall command passed
+test: hincrby command passed
+test: hincrbyfloat command passed
+test: hkeys command passed
+test: hlen command passed
+test: hmget command passed
+test: hmset command passed
+test: hrandfield command version skipped
+test: hrandfield with COUNT version skipped
+test: hrandfield with WITHVALUES version skipped
+test: hscan command passed
+test: hscan with MATCH and COUNT passed
+test: hset command passed
+test: hset command with multiple field and value passed
+test: hsetnx command passed
+test: hstrlen command passed
+test: hvals command passed
+test: bitcount command passed
+test: bitcount with BYTE / BIT version skipped
+test: bitfield command passed
+test: bitfield_ro command passed
+test: bitop command passed
+test: bitop command tags skipped
+test: bitpos command passed
+test: bitpos with BYTE / BIT version skipped
+test: getbit command passed
+test: setbit command passed
+test: pfadd command passed
+test: pfcount command passed
+test: pfmerge command passed
+test: pfmerge command tags skipped
+test: geoadd command passed
+test: geoadd with CH / NX / XX version skipped
+test: geodist command passed
+test: geodist with M / KM / FT / MI passed
+test: geohash command passed
+test: geopos command passed
+test: georadius command passed
+test: georadius with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius with COUNT passed
+test: georadius with ASC / DESC passed
+test: georadius with STORE / STOREDIST passed
+test: georadius with STORE / STOREDIST tags skipped
+test: georadius with ANY option for COUNT version skipped
+test: georadius with support for uppercase unit names version skipped
+test: georadius_ro command passed
+test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius_ro with COUNT passed
+test: georadius_ro with ASC / DESC passed
+test: georadius_ro with ANY option for COUNT version skipped
+test: georadiusbymember command passed
+test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember with COUNT passed
+test: georadiusbymember with ASC / DESC passed
+test: georadiusbymember with STORE / STOREDIST passed
+test: georadiusbymember with STORE / STOREDIST tags skipped
+test: georadiusbymember with ANY option for COUNT version skipped
+test: georadiusbymember with support for uppercase unit names version skipped
+test: georadiusbymember_ro command passed
+test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember_ro with COUNT passed
+test: georadiusbymember_ro with ASC / DESC passed
+test: georadiusbymember_ro with ANY option for COUNT version skipped
+test: geosearch command version skipped
+test: geosearch with ASC / DESC version skipped
+test: geosearch with COUNT version skipped
+test: geosearch with WITHCOORD / WITHDIST / WITHHASH version skipped
+test: geosearch with support for uppercase unit names version skipped
+test: geosearchstore command version skipped
+test: geosearchstore command tags skipped
+test: geosearchstore with ASC / DESC version skipped
+test: geosearchstore with ASC / DESC tags skipped
+test: geosearchstore with COUNT version skipped
+test: geosearchstore with COUNT tags skipped
+test: geosearchstore with STOREDIST version skipped
+test: geosearchstore with STOREDIST tags skipped
+test: geosearchstore with support for uppercase unit names version skipped
+test: geosearchstore with support for uppercase unit names tags skipped
+test: dbsize command passed
+test: flushall command passed
+test: flushall with async passed
+test: flushall with sync version skipped
+test: flushdb command passed
+test: flushdb with async passed
+test: flushdb with sync version skipped
+test: swapdb command passed
+test: discard command passed
+test: exec command passed
+test: multi command passed
+test: unwatch command passed
+test: watch command passed
+test: eval command passed
+test: eval_ro command version skipped
+test: evalsha command passed
+test: evalsha_ro command version skipped
+test: fcall command version skipped
+test: fcall_ro command version skipped
+test: function delete command version skipped
+test: function flush command version skipped
+test: function flush with SYNC version skipped
+test: function flush with ASYNC version skipped
+test: function list command version skipped
+test: function load command version skipped
+test: function restore command version skipped
+test: function stats command version skipped
+test: script exists command passed
+test: script flush command passed
+test: script flush with SYNC version skipped
+test: script flush with ASYNC version skipped
+test: script load command passed
+test: xack command passed
+test: xadd command passed
+test: xadd with NOMKSTREAM/MINID/LIMIT version skipped
+test: xadd with EXPLICIT ID version skipped
+test: xclaim command passed
+test: xdel command passed
+test: xgroup create command passed
+test: xgroup create with MKSTREAM passed
+test: xgroup create with ENTRIESREAD version skipped
+test: xgroup createconsumer command version skipped
+test: xgroup delconsumer command passed
+test: xgroup destroy command passed
+test: xgroup setid command passed
+test: xgroup setid with ENTRIESREAD version skipped
+test: xlen command passed
+test: xpending command passed
+test: xrange command passed
+test: xread command passed
+test: xreadgroup command passed
+test: xrevrange command passed
+test: xrevrange command with EXCLUSIVE RANGES version skipped
+test: xtrim command passed
+test: xtrim command with MINID/LIMIT version skipped
+test: psubscribe command passed
+test: psubscribe with RESET version skipped
+test: publish command run test error Connection closed by server.
+test: pubsub channels command passed
+test: pubsub numpat command passed
+test: pubsub numsub command passed
+test: pubsub shardchannels command version skipped
+test: pubsub shardnumsub command version skipped
+test: punsubscribe command passed
+test: spublish command version skipped
+test: ssubscribe command version skipped
+test: subscribe command passed
+test: subscribe with RESET version skipped
+test: sunsubscribe command version skipped
+test: unsubscribe command run test error Connection closed by server.
+-------- The result of tests --------
+Summary: version: 6.0.0, total tests: 226, passed: 226, rate: 100.00%
+</pre>
diff --git a/AliyunRedis-7.0.0.html b/AliyunRedis-7.0.0.html
new file mode 100644
index 0000000..21ba3c6
--- /dev/null
+++ b/AliyunRedis-7.0.0.html
@@ -0,0 +1,420 @@
+<pre>
+test: del command passed
+test: unlink command passed
+test: rename command passed
+test: rename command tags skipped
+test: renamenx command passed
+test: renamenx command tags skipped
+test: randomkey command passed
+test: exists command passed
+test: ttl command passed
+test: pttl command passed
+test: expire command passed
+test: expire with NX / XX passed
+test: expire with GT / LT passed
+test: expireat command passed
+test: expireat with NX / XX passed
+test: expireat with GT / LT passed
+test: pexpire command passed
+test: pexpire with NX / XX passed
+test: pexpire with GT / LT passed
+test: pexpireat command passed
+test: pexpireat with NX / XX passed
+test: pexpireat with GT / LT passed
+test: expiretime command passed
+test: pexpiretime command passed
+test: persist command passed
+test: dump command passed
+test: touch command passed
+test: restore command passed
+test: restore with REPLACE passed
+test: restore with ABSTTL passed
+test: restore with IDLETIME passed
+test: scan command passed
+test: scan with TYPE passed
+test: keys command passed
+test: move command passed
+test: copy command passed
+test: copy command tags skipped
+test: type command passed
+test: sort command passed
+test: sort_ro command skipped
+test: set command passed
+test: blmove command passed
+test: blmove command tags skipped
+test: blmpop command passed
+test: blmpop with COUNT passed
+test: blmpop with COUNT tags skipped
+test: blpop command passed
+test: blpop command tags skipped
+test: blpop with double timeout passed
+test: blpop with double timeout tags skipped
+test: brpop command passed
+test: brpop command tags skipped
+test: brpop with double timeout passed
+test: brpop with double timeout tags skipped
+test: brpoplpush command passed
+test: brpoplpush command tags skipped
+test: brpoplpush with double timeout passed
+test: brpoplpush with double timeout tags skipped
+test: lindex command passed
+test: linsert command passed
+test: llen command passed
+test: lmove command passed
+test: lmove command tags skipped
+test: lmpop command passed
+test: lmpop with COUNT passed
+test: lmpop with COUNT tags skipped
+test: lpop command passed
+test: lpop with COUNT passed
+test: lpos command passed
+test: lpos with RANK passed
+test: lpos with COUNT passed
+test: lpos with MAXLEN passed
+test: lpos with RANK, COUNT and MAXLEN passed
+test: lpush command passed
+test: lpush with multiple element passed
+test: lpushx command passed
+test: lpushx with multiple element passed
+test: lrange command passed
+test: lrem command passed
+test: lset command passed
+test: ltrim command passed
+test: rpop command passed
+test: rpop with COUNT passed
+test: rpoplpush command passed
+test: rpoplpush command tags skipped
+test: rpush command passed
+test: rpush with multiple element passed
+test: rpushx command passed
+test: rpushx command tags skipped
+test: rpushx with multiple element passed
+test: rpushx with multiple element tags skipped
+test: sadd command passed
+test: sadd command passed
+test: scard command passed
+test: sdiff command passed
+test: sdiff command tags skipped
+test: sdiffstore command passed
+test: sdiffstore command tags skipped
+test: sinter command passed
+test: sinter command tags skipped
+test: sintercard command passed
+test: sintercard command tags skipped
+test: sintercard with LIMIT passed
+test: sintercard with LIMIT tags skipped
+test: sinterstore command passed
+test: sinterstore command tags skipped
+test: sismember command passed
+test: smembers command passed
+test: smismember command passed
+test: smove command passed
+test: smove command tags skipped
+test: spop command passed
+test: spop with COUNT passed
+test: srandmember command passed
+test: srandmember with COUNT passed
+test: srem command passed
+test: srem with multiple member passed
+test: sscan command passed
+test: sscan with MATCH and COUNT passed
+test: sunion command passed
+test: sunion command tags skipped
+test: sunionstore command passed
+test: sunionstore command tags skipped
+test: bzmpop command passed
+test: bzmpop command tags skipped
+test: bzmpop with COUNT passed
+test: bzmpop with COUNT passed
+test: bzpopmax command passed
+test: bzpopmax with double timeout passed
+test: bzpopmin command passed
+test: bzpopmin with double timeout passed
+test: zadd command passed
+test: zadd with multiple elements passed
+test: zadd with XX / NX / CH / INCR passed
+test: zadd with GT / LT passed
+test: zcard command passed
+test: zcount command passed
+test: zdiff command passed
+test: zdiff command tags skipped
+test: zdiffstore command passed
+test: zdiffstore command tags skipped
+test: zincrby command passed
+test: zinter command passed
+test: zinter command tags skipped
+test: zinter with WEIGHTS passed
+test: zinter with WEIGHTS tags skipped
+test: zinter with AGGREGATE passed
+test: zinter with AGGREGATE tags skipped
+test: zinter WITHSCORES passed
+test: zinter WITHSCORES tags skipped
+test: zintercard command passed
+test: zintercard command tags skipped
+test: zintercard with LIMIT passed
+test: zintercard with LIMIT tags skipped
+test: zinterstore command passed
+test: zinterstore command tags skipped
+test: zinterstore with WEIGHTS passed
+test: zinterstore with WEIGHTS tags skipped
+test: zinterstore with AGGREGATE passed
+test: zinterstore with AGGREGATE tags skipped
+test: zlexcount command passed
+test: zmpop command passed
+test: zmpop with COUNT passed
+test: zmscore command passed
+test: zpopmax command passed
+test: zpopmax with COUNT passed
+test: zpopmin command passed
+test: zpopmin command passed
+test: zrandmember command passed
+test: zrandmember with COUNT passed
+test: zrandmember with WITHSCORES passed
+test: zrange command passed
+test: zrange with WITHSCORES passed
+test: zrange with BYSCORE / BYLEX passed
+test: zrange with REV passed
+test: zrange with LIMIT passed
+test: zrangebylex command passed
+test: zrangebylex with LIMIT passed
+test: zrangebyscore command passed
+test: zrangebyscore with LIMIT passed
+test: zrangebyscore with WITHSCORES passed
+test: zrangestore command passed
+test: zrangestore command tags skipped
+test: zrangestore with BYSCORE / BYLEX passed
+test: zrangestore with BYSCORE / BYLEX tags skipped
+test: zrangestore with REV passed
+test: zrangestore with REV tags skipped
+test: zrangestore with LIMIT passed
+test: zrangestore with LIMIT tags skipped
+test: zrank command passed
+test: zrank with WITHSCORE version skipped
+test: zrem command passed
+test: zrem with multiple elements passed
+test: zremrangebylex command passed
+test: zremrangebyrank command passed
+test: zremrangebyscore command passed
+test: zrevrange command passed
+test: zrevrange with WITHSCORES passed
+test: zrevrangebylex command passed
+test: zrevrangebylex with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrangebyscore with WITHSCORES passed
+test: zrevrangebyscore with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrank command passed
+test: zrevrank with WITHSCORE version skipped
+test: zscan command passed
+test: zscan with MATCH and COUNT passed
+test: zscore command passed
+test: zunion command passed
+test: zunion command tags skipped
+test: zunion with WEIGHTS and AGGREGATE passed
+test: zunion with WEIGHTS and AGGREGATE tags skipped
+test: zunion with WITHSCORES passed
+test: zunion with WITHSCORES tags skipped
+test: zunionstore command passed
+test: zunionstore command tags skipped
+test: zunionstore with WEIGHTS and AGGREGATE passed
+test: zunionstore with WEIGHTS and AGGREGATE tags skipped
+test: append command passed
+test: decr command passed
+test: decrby command passed
+test: get command passed
+test: getdel command passed
+test: getex command passed
+test: getex with EX passed
+test: getex with PX passed
+test: getex with EXAT passed
+test: getex with PXAT passed
+test: getex with PERSIST passed
+test: getrange command passed
+test: getset command passed
+test: incr command passed
+test: incrby command passed
+test: incrbyfloat command passed
+test: lcs command passed
+test: lcs command tags skipped
+test: lcs with LEN passed
+test: lcs with LEN tags skipped
+test: lcs with IDX passed
+test: lcs with IDX tags skipped
+test: lcs with MINMATCHLEN passed
+test: lcs with MINMATCHLEN tags skipped
+test: lcs with WITHMATCHLEN passed
+test: lcs with WITHMATCHLEN tags skipped
+test: mget command passed
+test: mget command tags skipped
+test: mset command passed
+test: mset command tags skipped
+test: msetnx command passed
+test: msetnx command tags skipped
+test: psetex command passed
+test: set command passed
+test: set with EX / PX passed
+test: set with NX / XX passed
+test: set with KEEPTTL passed
+test: set with GET passed
+test: set with EXAT / PXAT passed
+test: set with NX and GET passed
+test: setex command passed
+test: setnx command passed
+test: setrange command passed
+test: strlen command passed
+test: substr command passed
+test: hdel command passed
+test: hdel with multiple field passed
+test: hexists command passed
+test: hget command passed
+test: hgetall command passed
+test: hincrby command passed
+test: hincrbyfloat command passed
+test: hkeys command passed
+test: hlen command passed
+test: hmget command passed
+test: hmset command passed
+test: hrandfield command passed
+test: hrandfield with COUNT passed
+test: hrandfield with WITHVALUES passed
+test: hscan command passed
+test: hscan with MATCH and COUNT passed
+test: hset command passed
+test: hset command with multiple field and value passed
+test: hsetnx command passed
+test: hstrlen command passed
+test: hvals command passed
+test: bitcount command passed
+test: bitcount with BYTE / BIT passed
+test: bitfield command passed
+test: bitfield_ro command passed
+test: bitop command passed
+test: bitop command tags skipped
+test: bitpos command passed
+test: bitpos with BYTE / BIT passed
+test: getbit command passed
+test: setbit command passed
+test: pfadd command passed
+test: pfcount command passed
+test: pfmerge command passed
+test: pfmerge command tags skipped
+test: geoadd command passed
+test: geoadd with CH / NX / XX passed
+test: geodist command passed
+test: geodist with M / KM / FT / MI passed
+test: geohash command passed
+test: geopos command passed
+test: georadius command passed
+test: georadius with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius with COUNT passed
+test: georadius with ASC / DESC passed
+test: georadius with STORE / STOREDIST passed
+test: georadius with STORE / STOREDIST tags skipped
+test: georadius with ANY option for COUNT passed
+test: georadius with support for uppercase unit names passed
+test: georadius_ro command passed
+test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius_ro with COUNT passed
+test: georadius_ro with ASC / DESC passed
+test: georadius_ro with ANY option for COUNT passed
+test: georadiusbymember command passed
+test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember with COUNT passed
+test: georadiusbymember with ASC / DESC passed
+test: georadiusbymember with STORE / STOREDIST passed
+test: georadiusbymember with STORE / STOREDIST tags skipped
+test: georadiusbymember with ANY option for COUNT passed
+test: georadiusbymember with support for uppercase unit names passed
+test: georadiusbymember_ro command passed
+test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember_ro with COUNT passed
+test: georadiusbymember_ro with ASC / DESC passed
+test: georadiusbymember_ro with ANY option for COUNT passed
+test: geosearch command passed
+test: geosearch with ASC / DESC passed
+test: geosearch with COUNT passed
+test: geosearch with WITHCOORD / WITHDIST / WITHHASH passed
+test: geosearch with support for uppercase unit names passed
+test: geosearchstore command passed
+test: geosearchstore command tags skipped
+test: geosearchstore with ASC / DESC passed
+test: geosearchstore with ASC / DESC tags skipped
+test: geosearchstore with COUNT passed
+test: geosearchstore with COUNT tags skipped
+test: geosearchstore with STOREDIST passed
+test: geosearchstore with STOREDIST tags skipped
+test: geosearchstore with support for uppercase unit names passed
+test: geosearchstore with support for uppercase unit names tags skipped
+test: dbsize command passed
+test: flushall command passed
+test: flushall with async passed
+test: flushall with sync passed
+test: flushdb command passed
+test: flushdb with async passed
+test: flushdb with sync passed
+test: swapdb command passed
+test: discard command passed
+test: exec command passed
+test: multi command passed
+test: unwatch command passed
+test: watch command passed
+test: eval command passed
+test: eval_ro command passed
+test: evalsha command passed
+test: evalsha_ro command passed
+test: fcall command passed
+test: fcall_ro command passed
+test: function delete command passed
+test: function flush command passed
+test: function flush with SYNC passed
+test: function flush with ASYNC passed
+test: function list command passed
+test: function load command passed
+test: function restore command passed
+test: function stats command passed
+test: script exists command passed
+test: script flush command passed
+test: script flush with SYNC passed
+test: script flush with ASYNC passed
+test: script load command passed
+test: xack command passed
+test: xadd command passed
+test: xadd with NOMKSTREAM/MINID/LIMIT passed
+test: xadd with EXPLICIT ID passed
+test: xclaim command passed
+test: xdel command passed
+test: xgroup create command passed
+test: xgroup create with MKSTREAM passed
+test: xgroup create with ENTRIESREAD passed
+test: xgroup createconsumer command passed
+test: xgroup delconsumer command passed
+test: xgroup destroy command passed
+test: xgroup setid command passed
+test: xgroup setid with ENTRIESREAD passed
+test: xlen command passed
+test: xpending command passed
+test: xrange command passed
+test: xread command passed
+test: xreadgroup command passed
+test: xrevrange command passed
+test: xrevrange command with EXCLUSIVE RANGES passed
+test: xtrim command passed
+test: xtrim command with MINID/LIMIT passed
+test: psubscribe command passed
+test: psubscribe with RESET passed
+test: publish command passed
+test: pubsub channels command passed
+test: pubsub numpat command passed
+test: pubsub numsub command passed
+test: pubsub shardchannels command passed
+test: pubsub shardnumsub command passed
+test: punsubscribe command passed
+test: spublish command passed
+test: ssubscribe command passed
+test: subscribe command run test error Connection closed by server.
+test: subscribe with RESET passed
+test: sunsubscribe command passed
+test: unsubscribe command passed
+-------- The result of tests --------
+Summary: version: 7.0.0, total tests: 349, passed: 349, rate: 100.00%
+</pre>
diff --git a/AliyunRedisCluster-4.0.0.html b/AliyunRedisCluster-4.0.0.html
new file mode 100644
index 0000000..a73a9e3
--- /dev/null
+++ b/AliyunRedisCluster-4.0.0.html
@@ -0,0 +1,457 @@
+<pre>
+test: del command passed
+test: unlink command passed
+test: rename command failed
+test: rename command tags skipped
+test: renamenx command failed
+test: renamenx command tags skipped
+test: randomkey command passed
+test: exists command passed
+test: ttl command passed
+test: pttl command passed
+test: expire command passed
+test: expire with NX / XX version skipped
+test: expire with GT / LT version skipped
+test: expireat command passed
+test: expireat with NX / XX version skipped
+test: expireat with GT / LT version skipped
+test: pexpire command passed
+test: pexpire with NX / XX version skipped
+test: pexpire with GT / LT version skipped
+test: pexpireat command passed
+test: pexpireat with NX / XX version skipped
+test: pexpireat with GT / LT version skipped
+test: expiretime command version skipped
+test: pexpiretime command version skipped
+test: persist command passed
+test: dump command passed
+test: touch command passed
+test: restore command passed
+test: restore with REPLACE passed
+test: restore with ABSTTL version skipped
+test: restore with IDLETIME version skipped
+test: scan command failed
+test: scan with TYPE version skipped
+test: keys command failed
+test: move command passed
+test: copy command version skipped
+test: copy command tags skipped
+test: type command passed
+test: sort command passed
+test: sort_ro command skipped
+test: set command passed
+test: blmove command version skipped
+test: blmove command tags skipped
+test: blmpop command version skipped
+test: blmpop with COUNT version skipped
+test: blmpop with COUNT tags skipped
+test: blpop command failed
+test: blpop command tags skipped
+test: blpop with double timeout version skipped
+test: blpop with double timeout tags skipped
+test: brpop command failed
+test: brpop command tags skipped
+test: brpop with double timeout version skipped
+test: brpop with double timeout tags skipped
+test: brpoplpush command failed
+test: brpoplpush command tags skipped
+test: brpoplpush with double timeout version skipped
+test: brpoplpush with double timeout tags skipped
+test: lindex command passed
+test: linsert command passed
+test: llen command passed
+test: lmove command version skipped
+test: lmove command tags skipped
+test: lmpop command version skipped
+test: lmpop with COUNT version skipped
+test: lmpop with COUNT tags skipped
+test: lpop command passed
+test: lpop with COUNT version skipped
+test: lpos command version skipped
+test: lpos with RANK version skipped
+test: lpos with COUNT version skipped
+test: lpos with MAXLEN version skipped
+test: lpos with RANK, COUNT and MAXLEN version skipped
+test: lpush command passed
+test: lpush with multiple element passed
+test: lpushx command passed
+test: lpushx with multiple element passed
+test: lrange command passed
+test: lrem command passed
+test: lset command passed
+test: ltrim command passed
+test: rpop command passed
+test: rpop with COUNT version skipped
+test: rpoplpush command failed
+test: rpoplpush command tags skipped
+test: rpush command passed
+test: rpush with multiple element passed
+test: rpushx command passed
+test: rpushx command tags skipped
+test: rpushx with multiple element passed
+test: rpushx with multiple element tags skipped
+test: sadd command passed
+test: sadd command passed
+test: scard command passed
+test: sdiff command failed
+test: sdiff command tags skipped
+test: sdiffstore command failed
+test: sdiffstore command tags skipped
+test: sinter command failed
+test: sinter command tags skipped
+test: sintercard command version skipped
+test: sintercard command tags skipped
+test: sintercard with LIMIT version skipped
+test: sintercard with LIMIT tags skipped
+test: sinterstore command failed
+test: sinterstore command tags skipped
+test: sismember command passed
+test: smembers command passed
+test: smismember command version skipped
+test: smove command failed
+test: smove command tags skipped
+test: spop command passed
+test: spop with COUNT passed
+test: srandmember command passed
+test: srandmember with COUNT passed
+test: srem command passed
+test: srem with multiple member passed
+test: sscan command passed
+test: sscan with MATCH and COUNT passed
+test: sunion command failed
+test: sunion command tags skipped
+test: sunionstore command failed
+test: sunionstore command tags skipped
+test: bzmpop command version skipped
+test: bzmpop command tags skipped
+test: bzmpop with COUNT version skipped
+test: bzmpop with COUNT version skipped
+test: bzpopmax command version skipped
+test: bzpopmax with double timeout version skipped
+test: bzpopmin command version skipped
+test: bzpopmin with double timeout version skipped
+test: zadd command passed
+test: zadd with multiple elements passed
+test: zadd with XX / NX / CH / INCR passed
+test: zadd with GT / LT version skipped
+test: zcard command passed
+test: zcount command passed
+test: zdiff command version skipped
+test: zdiff command tags skipped
+test: zdiffstore command version skipped
+test: zdiffstore command tags skipped
+test: zincrby command passed
+test: zinter command version skipped
+test: zinter command tags skipped
+test: zinter with WEIGHTS version skipped
+test: zinter with WEIGHTS tags skipped
+test: zinter with AGGREGATE version skipped
+test: zinter with AGGREGATE tags skipped
+test: zinter WITHSCORES version skipped
+test: zinter WITHSCORES tags skipped
+test: zintercard command version skipped
+test: zintercard command tags skipped
+test: zintercard with LIMIT version skipped
+test: zintercard with LIMIT tags skipped
+test: zinterstore command failed
+test: zinterstore command tags skipped
+test: zinterstore with WEIGHTS failed
+test: zinterstore with WEIGHTS tags skipped
+test: zinterstore with AGGREGATE failed
+test: zinterstore with AGGREGATE tags skipped
+test: zlexcount command passed
+test: zmpop command version skipped
+test: zmpop with COUNT version skipped
+test: zmscore command version skipped
+test: zpopmax command version skipped
+test: zpopmax with COUNT version skipped
+test: zpopmin command version skipped
+test: zpopmin command version skipped
+test: zrandmember command version skipped
+test: zrandmember with COUNT version skipped
+test: zrandmember with WITHSCORES version skipped
+test: zrange command passed
+test: zrange with WITHSCORES passed
+test: zrange with BYSCORE / BYLEX version skipped
+test: zrange with REV version skipped
+test: zrange with LIMIT version skipped
+test: zrangebylex command passed
+test: zrangebylex with LIMIT passed
+test: zrangebyscore command passed
+test: zrangebyscore with LIMIT passed
+test: zrangebyscore with WITHSCORES passed
+test: zrangestore command version skipped
+test: zrangestore command tags skipped
+test: zrangestore with BYSCORE / BYLEX version skipped
+test: zrangestore with BYSCORE / BYLEX tags skipped
+test: zrangestore with REV version skipped
+test: zrangestore with REV tags skipped
+test: zrangestore with LIMIT version skipped
+test: zrangestore with LIMIT tags skipped
+test: zrank command passed
+test: zrank with WITHSCORE version skipped
+test: zrem command passed
+test: zrem with multiple elements passed
+test: zremrangebylex command passed
+test: zremrangebyrank command passed
+test: zremrangebyscore command passed
+test: zrevrange command passed
+test: zrevrange with WITHSCORES passed
+test: zrevrangebylex command passed
+test: zrevrangebylex with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrangebyscore with WITHSCORES passed
+test: zrevrangebyscore with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrank command passed
+test: zrevrank with WITHSCORE version skipped
+test: zscan command passed
+test: zscan with MATCH and COUNT passed
+test: zscore command passed
+test: zunion command version skipped
+test: zunion command tags skipped
+test: zunion with WEIGHTS and AGGREGATE version skipped
+test: zunion with WEIGHTS and AGGREGATE tags skipped
+test: zunion with WITHSCORES version skipped
+test: zunion with WITHSCORES tags skipped
+test: zunionstore command failed
+test: zunionstore command tags skipped
+test: zunionstore with WEIGHTS and AGGREGATE failed
+test: zunionstore with WEIGHTS and AGGREGATE tags skipped
+test: append command passed
+test: decr command passed
+test: decrby command passed
+test: get command passed
+test: getdel command version skipped
+test: getex command version skipped
+test: getex with EX version skipped
+test: getex with PX version skipped
+test: getex with EXAT version skipped
+test: getex with PXAT version skipped
+test: getex with PERSIST version skipped
+test: getrange command passed
+test: getset command passed
+test: incr command passed
+test: incrby command passed
+test: incrbyfloat command passed
+test: lcs command version skipped
+test: lcs command tags skipped
+test: lcs with LEN version skipped
+test: lcs with LEN tags skipped
+test: lcs with IDX version skipped
+test: lcs with IDX tags skipped
+test: lcs with MINMATCHLEN version skipped
+test: lcs with MINMATCHLEN tags skipped
+test: lcs with WITHMATCHLEN version skipped
+test: lcs with WITHMATCHLEN tags skipped
+test: mget command failed
+test: mget command tags skipped
+test: mset command failed
+test: mset command tags skipped
+test: msetnx command failed
+test: msetnx command tags skipped
+test: psetex command passed
+test: set command passed
+test: set with EX / PX passed
+test: set with NX / XX passed
+test: set with KEEPTTL version skipped
+test: set with GET version skipped
+test: set with EXAT / PXAT version skipped
+test: set with NX and GET version skipped
+test: setex command passed
+test: setnx command passed
+test: setrange command passed
+test: strlen command passed
+test: substr command passed
+test: hdel command passed
+test: hdel with multiple field passed
+test: hexists command passed
+test: hget command passed
+test: hgetall command passed
+test: hincrby command passed
+test: hincrbyfloat command passed
+test: hkeys command passed
+test: hlen command passed
+test: hmget command passed
+test: hmset command passed
+test: hrandfield command version skipped
+test: hrandfield with COUNT version skipped
+test: hrandfield with WITHVALUES version skipped
+test: hscan command passed
+test: hscan with MATCH and COUNT passed
+test: hset command passed
+test: hset command with multiple field and value passed
+test: hsetnx command passed
+test: hstrlen command passed
+test: hvals command passed
+test: bitcount command passed
+test: bitcount with BYTE / BIT version skipped
+test: bitfield command passed
+test: bitfield_ro command version skipped
+test: bitop command failed
+test: bitop command tags skipped
+test: bitpos command passed
+test: bitpos with BYTE / BIT version skipped
+test: getbit command passed
+test: setbit command passed
+test: pfadd command passed
+test: pfcount command passed
+test: pfmerge command failed
+test: pfmerge command tags skipped
+test: geoadd command passed
+test: geoadd with CH / NX / XX version skipped
+test: geodist command passed
+test: geodist with M / KM / FT / MI passed
+test: geohash command passed
+test: geopos command passed
+test: georadius command passed
+test: georadius with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius with COUNT passed
+test: georadius with ASC / DESC passed
+test: georadius with STORE / STOREDIST failed
+test: georadius with STORE / STOREDIST tags skipped
+test: georadius with ANY option for COUNT version skipped
+test: georadius with support for uppercase unit names version skipped
+test: georadius_ro command passed
+test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius_ro with COUNT passed
+test: georadius_ro with ASC / DESC passed
+test: georadius_ro with ANY option for COUNT version skipped
+test: georadiusbymember command passed
+test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember with COUNT passed
+test: georadiusbymember with ASC / DESC passed
+test: georadiusbymember with STORE / STOREDIST failed
+test: georadiusbymember with STORE / STOREDIST tags skipped
+test: georadiusbymember with ANY option for COUNT version skipped
+test: georadiusbymember with support for uppercase unit names version skipped
+test: georadiusbymember_ro command passed
+test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember_ro with COUNT passed
+test: georadiusbymember_ro with ASC / DESC passed
+test: georadiusbymember_ro with ANY option for COUNT version skipped
+test: geosearch command version skipped
+test: geosearch with ASC / DESC version skipped
+test: geosearch with COUNT version skipped
+test: geosearch with WITHCOORD / WITHDIST / WITHHASH version skipped
+test: geosearch with support for uppercase unit names version skipped
+test: geosearchstore command version skipped
+test: geosearchstore command tags skipped
+test: geosearchstore with ASC / DESC version skipped
+test: geosearchstore with ASC / DESC tags skipped
+test: geosearchstore with COUNT version skipped
+test: geosearchstore with COUNT tags skipped
+test: geosearchstore with STOREDIST version skipped
+test: geosearchstore with STOREDIST tags skipped
+test: geosearchstore with support for uppercase unit names version skipped
+test: geosearchstore with support for uppercase unit names tags skipped
+test: dbsize command passed
+test: flushall command passed
+test: flushall with async passed
+test: flushall with sync version skipped
+test: flushdb command passed
+test: flushdb with async passed
+test: flushdb with sync version skipped
+test: swapdb command failed
+test: discard command failed
+test: exec command failed
+test: multi command failed
+test: unwatch command failed
+test: watch command failed
+test: eval command failed
+test: eval_ro command version skipped
+test: evalsha command failed
+test: evalsha_ro command version skipped
+test: fcall command version skipped
+test: fcall_ro command version skipped
+test: function delete command version skipped
+test: function flush command version skipped
+test: function flush with SYNC version skipped
+test: function flush with ASYNC version skipped
+test: function list command version skipped
+test: function load command version skipped
+test: function restore command version skipped
+test: function stats command version skipped
+test: script exists command passed
+test: script flush command passed
+test: script flush with SYNC version skipped
+test: script flush with ASYNC version skipped
+test: script load command passed
+test: xack command version skipped
+test: xadd command version skipped
+test: xadd with NOMKSTREAM/MINID/LIMIT version skipped
+test: xadd with EXPLICIT ID version skipped
+test: xclaim command version skipped
+test: xdel command version skipped
+test: xgroup create command version skipped
+test: xgroup create with MKSTREAM version skipped
+test: xgroup create with ENTRIESREAD version skipped
+test: xgroup createconsumer command version skipped
+test: xgroup delconsumer command version skipped
+test: xgroup destroy command version skipped
+test: xgroup setid command version skipped
+test: xgroup setid with ENTRIESREAD version skipped
+test: xlen command version skipped
+test: xpending command version skipped
+test: xrange command version skipped
+test: xread command version skipped
+test: xreadgroup command version skipped
+test: xrevrange command version skipped
+test: xrevrange command with EXCLUSIVE RANGES version skipped
+test: xtrim command version skipped
+test: xtrim command with MINID/LIMIT version skipped
+test: psubscribe command failed
+test: psubscribe with RESET version skipped
+test: publish command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub channels command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub numpat command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub numsub command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub shardchannels command version skipped
+test: pubsub shardnumsub command version skipped
+test: punsubscribe command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: spublish command version skipped
+test: ssubscribe command version skipped
+test: subscribe command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: subscribe with RESET version skipped
+test: sunsubscribe command version skipped
+test: unsubscribe command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+-------- The result of tests --------
+Summary: version: 4.0.0, total tests: 189, passed: 153, rate: 80.95%
+This is failed tests for 4.0.0:
+FailedTest(name='rename command', reason=RedisClusterException('rename - all keys must map to the same key slot'))
+FailedTest(name='renamenx command', reason=RedisClusterException('renamenx - all keys must map to the same key slot'))
+FailedTest(name='keys command', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='sdiff command', reason=RedisClusterException('sdiff - all keys must map to the same key slot'))
+FailedTest(name='sdiffstore command', reason=RedisClusterException('sdiffstore - all keys must map to the same key slot'))
+FailedTest(name='sinter command', reason=RedisClusterException('sinter - all keys must map to the same key slot'))
+FailedTest(name='sinterstore command', reason=RedisClusterException('sinterstore - all keys must map to the same key slot'))
+FailedTest(name='smove command', reason=RedisClusterException('smove - all keys must map to the same key slot'))
+FailedTest(name='sunion command', reason=RedisClusterException('sunion - all keys must map to the same key slot'))
+FailedTest(name='sunionstore command', reason=RedisClusterException('sunionstore - all keys must map to the same key slot'))
+FailedTest(name='mget command', reason=RedisClusterException('mget - all keys must map to the same key slot'))
+FailedTest(name='swapdb command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('swapdb', '0', '1')"))
+FailedTest(name='rpoplpush command', reason=RedisClusterException('rpoplpush - all keys must map to the same key slot'))
+FailedTest(name='exec command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='multi command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='bitop command', reason=RedisClusterException('bitop - all keys must map to the same key slot'))
+FailedTest(name='eval command', reason=ResponseError("for redis cluster, eval/evalsha/fcall number of keys can't be negative or zero"))
+FailedTest(name='evalsha command', reason=ResponseError("for redis cluster, eval/evalsha/fcall number of keys can't be negative or zero"))
+FailedTest(name='brpoplpush command', reason=RedisClusterException('brpoplpush - all keys must map to the same key slot'))
+FailedTest(name='unwatch command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('unwatch',)"))
+FailedTest(name='watch command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('unwatch',)"))
+FailedTest(name='scan command', reason="expected: ['0', ['k']], result: ({'172.16.0.174:6379': 72057594037927936}, ['k'])")
+FailedTest(name='blpop command', reason=RedisClusterException('blpop - all keys must map to the same key slot'))
+FailedTest(name='brpop command', reason=RedisClusterException('brpop - all keys must map to the same key slot'))
+FailedTest(name='zinterstore command', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zinterstore with WEIGHTS', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zinterstore with AGGREGATE', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zunionstore command', reason=RedisClusterException('zunionstore - all keys must map to the same key slot'))
+FailedTest(name='zunionstore with WEIGHTS and AGGREGATE', reason=RedisClusterException('zunionstore - all keys must map to the same key slot'))
+FailedTest(name='discard command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='psubscribe command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('quit',)"))
+FailedTest(name='georadius with STORE / STOREDIST', reason=RedisClusterException('georadius - all keys must map to the same key slot'))
+FailedTest(name='georadiusbymember with STORE / STOREDIST', reason=RedisClusterException('georadiusbymember - all keys must map to the same key slot'))
+FailedTest(name='pfmerge command', reason=RedisClusterException('pfmerge - all keys must map to the same key slot'))
+FailedTest(name='mset command', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='msetnx command', reason=RedisClusterException('msetnx - all keys must map to the same key slot'))
+</pre>
diff --git a/AliyunRedisCluster-5.0.0.html b/AliyunRedisCluster-5.0.0.html
new file mode 100644
index 0000000..ae5371c
--- /dev/null
+++ b/AliyunRedisCluster-5.0.0.html
@@ -0,0 +1,457 @@
+<pre>
+test: del command passed
+test: unlink command passed
+test: rename command failed
+test: rename command tags skipped
+test: renamenx command failed
+test: renamenx command tags skipped
+test: randomkey command passed
+test: exists command passed
+test: ttl command passed
+test: pttl command passed
+test: expire command passed
+test: expire with NX / XX version skipped
+test: expire with GT / LT version skipped
+test: expireat command passed
+test: expireat with NX / XX version skipped
+test: expireat with GT / LT version skipped
+test: pexpire command passed
+test: pexpire with NX / XX version skipped
+test: pexpire with GT / LT version skipped
+test: pexpireat command passed
+test: pexpireat with NX / XX version skipped
+test: pexpireat with GT / LT version skipped
+test: expiretime command version skipped
+test: pexpiretime command version skipped
+test: persist command passed
+test: dump command passed
+test: touch command passed
+test: restore command passed
+test: restore with REPLACE passed
+test: restore with ABSTTL passed
+test: restore with IDLETIME passed
+test: scan command failed
+test: scan with TYPE version skipped
+test: keys command failed
+test: move command passed
+test: copy command version skipped
+test: copy command tags skipped
+test: type command passed
+test: sort command passed
+test: sort_ro command skipped
+test: set command passed
+test: blmove command version skipped
+test: blmove command tags skipped
+test: blmpop command version skipped
+test: blmpop with COUNT version skipped
+test: blmpop with COUNT tags skipped
+test: blpop command failed
+test: blpop command tags skipped
+test: blpop with double timeout version skipped
+test: blpop with double timeout tags skipped
+test: brpop command failed
+test: brpop command tags skipped
+test: brpop with double timeout version skipped
+test: brpop with double timeout tags skipped
+test: brpoplpush command failed
+test: brpoplpush command tags skipped
+test: brpoplpush with double timeout version skipped
+test: brpoplpush with double timeout tags skipped
+test: lindex command passed
+test: linsert command passed
+test: llen command passed
+test: lmove command version skipped
+test: lmove command tags skipped
+test: lmpop command version skipped
+test: lmpop with COUNT version skipped
+test: lmpop with COUNT tags skipped
+test: lpop command passed
+test: lpop with COUNT version skipped
+test: lpos command version skipped
+test: lpos with RANK version skipped
+test: lpos with COUNT version skipped
+test: lpos with MAXLEN version skipped
+test: lpos with RANK, COUNT and MAXLEN version skipped
+test: lpush command passed
+test: lpush with multiple element passed
+test: lpushx command passed
+test: lpushx with multiple element passed
+test: lrange command passed
+test: lrem command passed
+test: lset command passed
+test: ltrim command passed
+test: rpop command passed
+test: rpop with COUNT version skipped
+test: rpoplpush command failed
+test: rpoplpush command tags skipped
+test: rpush command passed
+test: rpush with multiple element passed
+test: rpushx command passed
+test: rpushx command tags skipped
+test: rpushx with multiple element passed
+test: rpushx with multiple element tags skipped
+test: sadd command passed
+test: sadd command passed
+test: scard command passed
+test: sdiff command failed
+test: sdiff command tags skipped
+test: sdiffstore command failed
+test: sdiffstore command tags skipped
+test: sinter command failed
+test: sinter command tags skipped
+test: sintercard command version skipped
+test: sintercard command tags skipped
+test: sintercard with LIMIT version skipped
+test: sintercard with LIMIT tags skipped
+test: sinterstore command failed
+test: sinterstore command tags skipped
+test: sismember command passed
+test: smembers command passed
+test: smismember command version skipped
+test: smove command failed
+test: smove command tags skipped
+test: spop command passed
+test: spop with COUNT passed
+test: srandmember command passed
+test: srandmember with COUNT passed
+test: srem command passed
+test: srem with multiple member passed
+test: sscan command passed
+test: sscan with MATCH and COUNT passed
+test: sunion command failed
+test: sunion command tags skipped
+test: sunionstore command failed
+test: sunionstore command tags skipped
+test: bzmpop command version skipped
+test: bzmpop command tags skipped
+test: bzmpop with COUNT version skipped
+test: bzmpop with COUNT version skipped
+test: bzpopmax command passed
+test: bzpopmax with double timeout version skipped
+test: bzpopmin command passed
+test: bzpopmin with double timeout version skipped
+test: zadd command passed
+test: zadd with multiple elements passed
+test: zadd with XX / NX / CH / INCR passed
+test: zadd with GT / LT version skipped
+test: zcard command passed
+test: zcount command passed
+test: zdiff command version skipped
+test: zdiff command tags skipped
+test: zdiffstore command version skipped
+test: zdiffstore command tags skipped
+test: zincrby command passed
+test: zinter command version skipped
+test: zinter command tags skipped
+test: zinter with WEIGHTS version skipped
+test: zinter with WEIGHTS tags skipped
+test: zinter with AGGREGATE version skipped
+test: zinter with AGGREGATE tags skipped
+test: zinter WITHSCORES version skipped
+test: zinter WITHSCORES tags skipped
+test: zintercard command version skipped
+test: zintercard command tags skipped
+test: zintercard with LIMIT version skipped
+test: zintercard with LIMIT tags skipped
+test: zinterstore command failed
+test: zinterstore command tags skipped
+test: zinterstore with WEIGHTS failed
+test: zinterstore with WEIGHTS tags skipped
+test: zinterstore with AGGREGATE failed
+test: zinterstore with AGGREGATE tags skipped
+test: zlexcount command passed
+test: zmpop command version skipped
+test: zmpop with COUNT version skipped
+test: zmscore command version skipped
+test: zpopmax command passed
+test: zpopmax with COUNT passed
+test: zpopmin command passed
+test: zpopmin command passed
+test: zrandmember command version skipped
+test: zrandmember with COUNT version skipped
+test: zrandmember with WITHSCORES version skipped
+test: zrange command passed
+test: zrange with WITHSCORES passed
+test: zrange with BYSCORE / BYLEX version skipped
+test: zrange with REV version skipped
+test: zrange with LIMIT version skipped
+test: zrangebylex command passed
+test: zrangebylex with LIMIT passed
+test: zrangebyscore command passed
+test: zrangebyscore with LIMIT passed
+test: zrangebyscore with WITHSCORES passed
+test: zrangestore command version skipped
+test: zrangestore command tags skipped
+test: zrangestore with BYSCORE / BYLEX version skipped
+test: zrangestore with BYSCORE / BYLEX tags skipped
+test: zrangestore with REV version skipped
+test: zrangestore with REV tags skipped
+test: zrangestore with LIMIT version skipped
+test: zrangestore with LIMIT tags skipped
+test: zrank command passed
+test: zrank with WITHSCORE version skipped
+test: zrem command passed
+test: zrem with multiple elements passed
+test: zremrangebylex command passed
+test: zremrangebyrank command passed
+test: zremrangebyscore command passed
+test: zrevrange command passed
+test: zrevrange with WITHSCORES passed
+test: zrevrangebylex command passed
+test: zrevrangebylex with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrangebyscore with WITHSCORES passed
+test: zrevrangebyscore with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrank command passed
+test: zrevrank with WITHSCORE version skipped
+test: zscan command passed
+test: zscan with MATCH and COUNT passed
+test: zscore command passed
+test: zunion command version skipped
+test: zunion command tags skipped
+test: zunion with WEIGHTS and AGGREGATE version skipped
+test: zunion with WEIGHTS and AGGREGATE tags skipped
+test: zunion with WITHSCORES version skipped
+test: zunion with WITHSCORES tags skipped
+test: zunionstore command failed
+test: zunionstore command tags skipped
+test: zunionstore with WEIGHTS and AGGREGATE failed
+test: zunionstore with WEIGHTS and AGGREGATE tags skipped
+test: append command passed
+test: decr command passed
+test: decrby command passed
+test: get command passed
+test: getdel command version skipped
+test: getex command version skipped
+test: getex with EX version skipped
+test: getex with PX version skipped
+test: getex with EXAT version skipped
+test: getex with PXAT version skipped
+test: getex with PERSIST version skipped
+test: getrange command passed
+test: getset command passed
+test: incr command passed
+test: incrby command passed
+test: incrbyfloat command passed
+test: lcs command version skipped
+test: lcs command tags skipped
+test: lcs with LEN version skipped
+test: lcs with LEN tags skipped
+test: lcs with IDX version skipped
+test: lcs with IDX tags skipped
+test: lcs with MINMATCHLEN version skipped
+test: lcs with MINMATCHLEN tags skipped
+test: lcs with WITHMATCHLEN version skipped
+test: lcs with WITHMATCHLEN tags skipped
+test: mget command failed
+test: mget command tags skipped
+test: mset command failed
+test: mset command tags skipped
+test: msetnx command failed
+test: msetnx command tags skipped
+test: psetex command passed
+test: set command passed
+test: set with EX / PX passed
+test: set with NX / XX passed
+test: set with KEEPTTL version skipped
+test: set with GET version skipped
+test: set with EXAT / PXAT version skipped
+test: set with NX and GET version skipped
+test: setex command passed
+test: setnx command passed
+test: setrange command passed
+test: strlen command passed
+test: substr command passed
+test: hdel command passed
+test: hdel with multiple field passed
+test: hexists command passed
+test: hget command passed
+test: hgetall command passed
+test: hincrby command passed
+test: hincrbyfloat command passed
+test: hkeys command passed
+test: hlen command passed
+test: hmget command passed
+test: hmset command passed
+test: hrandfield command version skipped
+test: hrandfield with COUNT version skipped
+test: hrandfield with WITHVALUES version skipped
+test: hscan command passed
+test: hscan with MATCH and COUNT passed
+test: hset command passed
+test: hset command with multiple field and value passed
+test: hsetnx command passed
+test: hstrlen command passed
+test: hvals command passed
+test: bitcount command passed
+test: bitcount with BYTE / BIT version skipped
+test: bitfield command passed
+test: bitfield_ro command version skipped
+test: bitop command failed
+test: bitop command tags skipped
+test: bitpos command passed
+test: bitpos with BYTE / BIT version skipped
+test: getbit command passed
+test: setbit command passed
+test: pfadd command passed
+test: pfcount command passed
+test: pfmerge command failed
+test: pfmerge command tags skipped
+test: geoadd command passed
+test: geoadd with CH / NX / XX version skipped
+test: geodist command passed
+test: geodist with M / KM / FT / MI passed
+test: geohash command passed
+test: geopos command passed
+test: georadius command passed
+test: georadius with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius with COUNT passed
+test: georadius with ASC / DESC passed
+test: georadius with STORE / STOREDIST failed
+test: georadius with STORE / STOREDIST tags skipped
+test: georadius with ANY option for COUNT version skipped
+test: georadius with support for uppercase unit names version skipped
+test: georadius_ro command passed
+test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius_ro with COUNT passed
+test: georadius_ro with ASC / DESC passed
+test: georadius_ro with ANY option for COUNT version skipped
+test: georadiusbymember command passed
+test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember with COUNT passed
+test: georadiusbymember with ASC / DESC passed
+test: georadiusbymember with STORE / STOREDIST failed
+test: georadiusbymember with STORE / STOREDIST tags skipped
+test: georadiusbymember with ANY option for COUNT version skipped
+test: georadiusbymember with support for uppercase unit names version skipped
+test: georadiusbymember_ro command passed
+test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember_ro with COUNT passed
+test: georadiusbymember_ro with ASC / DESC passed
+test: georadiusbymember_ro with ANY option for COUNT version skipped
+test: geosearch command version skipped
+test: geosearch with ASC / DESC version skipped
+test: geosearch with COUNT version skipped
+test: geosearch with WITHCOORD / WITHDIST / WITHHASH version skipped
+test: geosearch with support for uppercase unit names version skipped
+test: geosearchstore command version skipped
+test: geosearchstore command tags skipped
+test: geosearchstore with ASC / DESC version skipped
+test: geosearchstore with ASC / DESC tags skipped
+test: geosearchstore with COUNT version skipped
+test: geosearchstore with COUNT tags skipped
+test: geosearchstore with STOREDIST version skipped
+test: geosearchstore with STOREDIST tags skipped
+test: geosearchstore with support for uppercase unit names version skipped
+test: geosearchstore with support for uppercase unit names tags skipped
+test: dbsize command passed
+test: flushall command passed
+test: flushall with async passed
+test: flushall with sync version skipped
+test: flushdb command passed
+test: flushdb with async passed
+test: flushdb with sync version skipped
+test: swapdb command failed
+test: discard command failed
+test: exec command failed
+test: multi command failed
+test: unwatch command failed
+test: watch command failed
+test: eval command failed
+test: eval_ro command version skipped
+test: evalsha command failed
+test: evalsha_ro command version skipped
+test: fcall command version skipped
+test: fcall_ro command version skipped
+test: function delete command version skipped
+test: function flush command version skipped
+test: function flush with SYNC version skipped
+test: function flush with ASYNC version skipped
+test: function list command version skipped
+test: function load command version skipped
+test: function restore command version skipped
+test: function stats command version skipped
+test: script exists command passed
+test: script flush command passed
+test: script flush with SYNC version skipped
+test: script flush with ASYNC version skipped
+test: script load command passed
+test: xack command passed
+test: xadd command passed
+test: xadd with NOMKSTREAM/MINID/LIMIT version skipped
+test: xadd with EXPLICIT ID version skipped
+test: xclaim command passed
+test: xdel command passed
+test: xgroup create command passed
+test: xgroup create with MKSTREAM passed
+test: xgroup create with ENTRIESREAD version skipped
+test: xgroup createconsumer command version skipped
+test: xgroup delconsumer command passed
+test: xgroup destroy command passed
+test: xgroup setid command passed
+test: xgroup setid with ENTRIESREAD version skipped
+test: xlen command passed
+test: xpending command passed
+test: xrange command passed
+test: xread command passed
+test: xreadgroup command passed
+test: xrevrange command passed
+test: xrevrange command with EXCLUSIVE RANGES version skipped
+test: xtrim command passed
+test: xtrim command with MINID/LIMIT version skipped
+test: psubscribe command failed
+test: psubscribe with RESET version skipped
+test: publish command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub channels command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub numpat command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub numsub command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub shardchannels command version skipped
+test: pubsub shardnumsub command version skipped
+test: punsubscribe command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: spublish command version skipped
+test: ssubscribe command version skipped
+test: subscribe command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: subscribe with RESET version skipped
+test: sunsubscribe command version skipped
+test: unsubscribe command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+-------- The result of tests --------
+Summary: version: 5.0.0, total tests: 213, passed: 177, rate: 83.10%
+This is failed tests for 5.0.0:
+FailedTest(name='rename command', reason=RedisClusterException('rename - all keys must map to the same key slot'))
+FailedTest(name='renamenx command', reason=RedisClusterException('renamenx - all keys must map to the same key slot'))
+FailedTest(name='keys command', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='sdiff command', reason=RedisClusterException('sdiff - all keys must map to the same key slot'))
+FailedTest(name='sdiffstore command', reason=RedisClusterException('sdiffstore - all keys must map to the same key slot'))
+FailedTest(name='sinter command', reason=RedisClusterException('sinter - all keys must map to the same key slot'))
+FailedTest(name='sinterstore command', reason=RedisClusterException('sinterstore - all keys must map to the same key slot'))
+FailedTest(name='smove command', reason=RedisClusterException('smove - all keys must map to the same key slot'))
+FailedTest(name='sunion command', reason=RedisClusterException('sunion - all keys must map to the same key slot'))
+FailedTest(name='sunionstore command', reason=RedisClusterException('sunionstore - all keys must map to the same key slot'))
+FailedTest(name='mget command', reason=RedisClusterException('mget - all keys must map to the same key slot'))
+FailedTest(name='swapdb command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('swapdb', '0', '1')"))
+FailedTest(name='rpoplpush command', reason=RedisClusterException('rpoplpush - all keys must map to the same key slot'))
+FailedTest(name='exec command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='multi command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='bitop command', reason=RedisClusterException('bitop - all keys must map to the same key slot'))
+FailedTest(name='eval command', reason=ResponseError("for redis cluster, eval/evalsha/fcall number of keys can't be negative or zero"))
+FailedTest(name='evalsha command', reason=ResponseError("for redis cluster, eval/evalsha/fcall number of keys can't be negative or zero"))
+FailedTest(name='brpoplpush command', reason=RedisClusterException('brpoplpush - all keys must map to the same key slot'))
+FailedTest(name='unwatch command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('unwatch',)"))
+FailedTest(name='watch command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('unwatch',)"))
+FailedTest(name='scan command', reason="expected: ['0', ['k']], result: ({'172.16.0.174:6379': 72057594037927936}, ['k'])")
+FailedTest(name='blpop command', reason=RedisClusterException('blpop - all keys must map to the same key slot'))
+FailedTest(name='brpop command', reason=RedisClusterException('brpop - all keys must map to the same key slot'))
+FailedTest(name='zinterstore command', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zinterstore with WEIGHTS', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zinterstore with AGGREGATE', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zunionstore command', reason=RedisClusterException('zunionstore - all keys must map to the same key slot'))
+FailedTest(name='zunionstore with WEIGHTS and AGGREGATE', reason=RedisClusterException('zunionstore - all keys must map to the same key slot'))
+FailedTest(name='discard command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='psubscribe command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('quit',)"))
+FailedTest(name='georadius with STORE / STOREDIST', reason=RedisClusterException('georadius - all keys must map to the same key slot'))
+FailedTest(name='georadiusbymember with STORE / STOREDIST', reason=RedisClusterException('georadiusbymember - all keys must map to the same key slot'))
+FailedTest(name='pfmerge command', reason=RedisClusterException('pfmerge - all keys must map to the same key slot'))
+FailedTest(name='mset command', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='msetnx command', reason=RedisClusterException('msetnx - all keys must map to the same key slot'))
+</pre>
diff --git a/AliyunRedisCluster-6.0.0.html b/AliyunRedisCluster-6.0.0.html
new file mode 100644
index 0000000..c737d81
--- /dev/null
+++ b/AliyunRedisCluster-6.0.0.html
@@ -0,0 +1,461 @@
+<pre>
+test: del command passed
+test: unlink command passed
+test: rename command failed
+test: rename command tags skipped
+test: renamenx command failed
+test: renamenx command tags skipped
+test: randomkey command passed
+test: exists command passed
+test: ttl command passed
+test: pttl command passed
+test: expire command passed
+test: expire with NX / XX version skipped
+test: expire with GT / LT version skipped
+test: expireat command passed
+test: expireat with NX / XX version skipped
+test: expireat with GT / LT version skipped
+test: pexpire command passed
+test: pexpire with NX / XX version skipped
+test: pexpire with GT / LT version skipped
+test: pexpireat command passed
+test: pexpireat with NX / XX version skipped
+test: pexpireat with GT / LT version skipped
+test: expiretime command version skipped
+test: pexpiretime command version skipped
+test: persist command passed
+test: dump command passed
+test: touch command passed
+test: restore command passed
+test: restore with REPLACE passed
+test: restore with ABSTTL passed
+test: restore with IDLETIME passed
+test: scan command failed
+test: scan with TYPE failed
+test: keys command failed
+test: move command passed
+test: copy command version skipped
+test: copy command tags skipped
+test: type command passed
+test: sort command passed
+test: sort_ro command skipped
+test: set command passed
+test: blmove command version skipped
+test: blmove command tags skipped
+test: blmpop command version skipped
+test: blmpop with COUNT version skipped
+test: blmpop with COUNT tags skipped
+test: blpop command failed
+test: blpop command tags skipped
+test: blpop with double timeout passed
+test: blpop with double timeout tags skipped
+test: brpop command failed
+test: brpop command tags skipped
+test: brpop with double timeout failed
+test: brpop with double timeout tags skipped
+test: brpoplpush command failed
+test: brpoplpush command tags skipped
+test: brpoplpush with double timeout failed
+test: brpoplpush with double timeout tags skipped
+test: lindex command passed
+test: linsert command passed
+test: llen command passed
+test: lmove command version skipped
+test: lmove command tags skipped
+test: lmpop command version skipped
+test: lmpop with COUNT version skipped
+test: lmpop with COUNT tags skipped
+test: lpop command passed
+test: lpop with COUNT version skipped
+test: lpos command version skipped
+test: lpos with RANK version skipped
+test: lpos with COUNT version skipped
+test: lpos with MAXLEN version skipped
+test: lpos with RANK, COUNT and MAXLEN version skipped
+test: lpush command passed
+test: lpush with multiple element passed
+test: lpushx command passed
+test: lpushx with multiple element passed
+test: lrange command passed
+test: lrem command passed
+test: lset command passed
+test: ltrim command passed
+test: rpop command passed
+test: rpop with COUNT version skipped
+test: rpoplpush command failed
+test: rpoplpush command tags skipped
+test: rpush command passed
+test: rpush with multiple element passed
+test: rpushx command passed
+test: rpushx command tags skipped
+test: rpushx with multiple element passed
+test: rpushx with multiple element tags skipped
+test: sadd command passed
+test: sadd command passed
+test: scard command passed
+test: sdiff command failed
+test: sdiff command tags skipped
+test: sdiffstore command failed
+test: sdiffstore command tags skipped
+test: sinter command failed
+test: sinter command tags skipped
+test: sintercard command version skipped
+test: sintercard command tags skipped
+test: sintercard with LIMIT version skipped
+test: sintercard with LIMIT tags skipped
+test: sinterstore command failed
+test: sinterstore command tags skipped
+test: sismember command passed
+test: smembers command passed
+test: smismember command version skipped
+test: smove command failed
+test: smove command tags skipped
+test: spop command passed
+test: spop with COUNT passed
+test: srandmember command passed
+test: srandmember with COUNT passed
+test: srem command passed
+test: srem with multiple member passed
+test: sscan command passed
+test: sscan with MATCH and COUNT passed
+test: sunion command failed
+test: sunion command tags skipped
+test: sunionstore command failed
+test: sunionstore command tags skipped
+test: bzmpop command version skipped
+test: bzmpop command tags skipped
+test: bzmpop with COUNT version skipped
+test: bzmpop with COUNT version skipped
+test: bzpopmax command passed
+test: bzpopmax with double timeout passed
+test: bzpopmin command passed
+test: bzpopmin with double timeout passed
+test: zadd command passed
+test: zadd with multiple elements passed
+test: zadd with XX / NX / CH / INCR passed
+test: zadd with GT / LT version skipped
+test: zcard command passed
+test: zcount command passed
+test: zdiff command version skipped
+test: zdiff command tags skipped
+test: zdiffstore command version skipped
+test: zdiffstore command tags skipped
+test: zincrby command passed
+test: zinter command version skipped
+test: zinter command tags skipped
+test: zinter with WEIGHTS version skipped
+test: zinter with WEIGHTS tags skipped
+test: zinter with AGGREGATE version skipped
+test: zinter with AGGREGATE tags skipped
+test: zinter WITHSCORES version skipped
+test: zinter WITHSCORES tags skipped
+test: zintercard command version skipped
+test: zintercard command tags skipped
+test: zintercard with LIMIT version skipped
+test: zintercard with LIMIT tags skipped
+test: zinterstore command failed
+test: zinterstore command tags skipped
+test: zinterstore with WEIGHTS failed
+test: zinterstore with WEIGHTS tags skipped
+test: zinterstore with AGGREGATE failed
+test: zinterstore with AGGREGATE tags skipped
+test: zlexcount command passed
+test: zmpop command version skipped
+test: zmpop with COUNT version skipped
+test: zmscore command version skipped
+test: zpopmax command passed
+test: zpopmax with COUNT passed
+test: zpopmin command passed
+test: zpopmin command passed
+test: zrandmember command version skipped
+test: zrandmember with COUNT version skipped
+test: zrandmember with WITHSCORES version skipped
+test: zrange command passed
+test: zrange with WITHSCORES passed
+test: zrange with BYSCORE / BYLEX version skipped
+test: zrange with REV version skipped
+test: zrange with LIMIT version skipped
+test: zrangebylex command passed
+test: zrangebylex with LIMIT passed
+test: zrangebyscore command passed
+test: zrangebyscore with LIMIT passed
+test: zrangebyscore with WITHSCORES passed
+test: zrangestore command version skipped
+test: zrangestore command tags skipped
+test: zrangestore with BYSCORE / BYLEX version skipped
+test: zrangestore with BYSCORE / BYLEX tags skipped
+test: zrangestore with REV version skipped
+test: zrangestore with REV tags skipped
+test: zrangestore with LIMIT version skipped
+test: zrangestore with LIMIT tags skipped
+test: zrank command passed
+test: zrank with WITHSCORE version skipped
+test: zrem command passed
+test: zrem with multiple elements passed
+test: zremrangebylex command passed
+test: zremrangebyrank command passed
+test: zremrangebyscore command passed
+test: zrevrange command passed
+test: zrevrange with WITHSCORES passed
+test: zrevrangebylex command passed
+test: zrevrangebylex with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrangebyscore with WITHSCORES passed
+test: zrevrangebyscore with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrank command passed
+test: zrevrank with WITHSCORE version skipped
+test: zscan command passed
+test: zscan with MATCH and COUNT passed
+test: zscore command passed
+test: zunion command version skipped
+test: zunion command tags skipped
+test: zunion with WEIGHTS and AGGREGATE version skipped
+test: zunion with WEIGHTS and AGGREGATE tags skipped
+test: zunion with WITHSCORES version skipped
+test: zunion with WITHSCORES tags skipped
+test: zunionstore command failed
+test: zunionstore command tags skipped
+test: zunionstore with WEIGHTS and AGGREGATE failed
+test: zunionstore with WEIGHTS and AGGREGATE tags skipped
+test: append command passed
+test: decr command passed
+test: decrby command passed
+test: get command passed
+test: getdel command version skipped
+test: getex command version skipped
+test: getex with EX version skipped
+test: getex with PX version skipped
+test: getex with EXAT version skipped
+test: getex with PXAT version skipped
+test: getex with PERSIST version skipped
+test: getrange command passed
+test: getset command passed
+test: incr command passed
+test: incrby command passed
+test: incrbyfloat command passed
+test: lcs command version skipped
+test: lcs command tags skipped
+test: lcs with LEN version skipped
+test: lcs with LEN tags skipped
+test: lcs with IDX version skipped
+test: lcs with IDX tags skipped
+test: lcs with MINMATCHLEN version skipped
+test: lcs with MINMATCHLEN tags skipped
+test: lcs with WITHMATCHLEN version skipped
+test: lcs with WITHMATCHLEN tags skipped
+test: mget command failed
+test: mget command tags skipped
+test: mset command failed
+test: mset command tags skipped
+test: msetnx command failed
+test: msetnx command tags skipped
+test: psetex command passed
+test: set command passed
+test: set with EX / PX passed
+test: set with NX / XX passed
+test: set with KEEPTTL passed
+test: set with GET version skipped
+test: set with EXAT / PXAT version skipped
+test: set with NX and GET version skipped
+test: setex command passed
+test: setnx command passed
+test: setrange command passed
+test: strlen command passed
+test: substr command passed
+test: hdel command passed
+test: hdel with multiple field passed
+test: hexists command passed
+test: hget command passed
+test: hgetall command passed
+test: hincrby command passed
+test: hincrbyfloat command passed
+test: hkeys command passed
+test: hlen command passed
+test: hmget command passed
+test: hmset command passed
+test: hrandfield command version skipped
+test: hrandfield with COUNT version skipped
+test: hrandfield with WITHVALUES version skipped
+test: hscan command passed
+test: hscan with MATCH and COUNT passed
+test: hset command passed
+test: hset command with multiple field and value passed
+test: hsetnx command passed
+test: hstrlen command passed
+test: hvals command passed
+test: bitcount command passed
+test: bitcount with BYTE / BIT version skipped
+test: bitfield command passed
+test: bitfield_ro command failed
+test: bitop command failed
+test: bitop command tags skipped
+test: bitpos command passed
+test: bitpos with BYTE / BIT version skipped
+test: getbit command passed
+test: setbit command passed
+test: pfadd command passed
+test: pfcount command passed
+test: pfmerge command failed
+test: pfmerge command tags skipped
+test: geoadd command passed
+test: geoadd with CH / NX / XX version skipped
+test: geodist command passed
+test: geodist with M / KM / FT / MI passed
+test: geohash command passed
+test: geopos command passed
+test: georadius command passed
+test: georadius with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius with COUNT passed
+test: georadius with ASC / DESC passed
+test: georadius with STORE / STOREDIST failed
+test: georadius with STORE / STOREDIST tags skipped
+test: georadius with ANY option for COUNT version skipped
+test: georadius with support for uppercase unit names version skipped
+test: georadius_ro command passed
+test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius_ro with COUNT passed
+test: georadius_ro with ASC / DESC passed
+test: georadius_ro with ANY option for COUNT version skipped
+test: georadiusbymember command passed
+test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember with COUNT passed
+test: georadiusbymember with ASC / DESC passed
+test: georadiusbymember with STORE / STOREDIST failed
+test: georadiusbymember with STORE / STOREDIST tags skipped
+test: georadiusbymember with ANY option for COUNT version skipped
+test: georadiusbymember with support for uppercase unit names version skipped
+test: georadiusbymember_ro command passed
+test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember_ro with COUNT passed
+test: georadiusbymember_ro with ASC / DESC passed
+test: georadiusbymember_ro with ANY option for COUNT version skipped
+test: geosearch command version skipped
+test: geosearch with ASC / DESC version skipped
+test: geosearch with COUNT version skipped
+test: geosearch with WITHCOORD / WITHDIST / WITHHASH version skipped
+test: geosearch with support for uppercase unit names version skipped
+test: geosearchstore command version skipped
+test: geosearchstore command tags skipped
+test: geosearchstore with ASC / DESC version skipped
+test: geosearchstore with ASC / DESC tags skipped
+test: geosearchstore with COUNT version skipped
+test: geosearchstore with COUNT tags skipped
+test: geosearchstore with STOREDIST version skipped
+test: geosearchstore with STOREDIST tags skipped
+test: geosearchstore with support for uppercase unit names version skipped
+test: geosearchstore with support for uppercase unit names tags skipped
+test: dbsize command passed
+test: flushall command passed
+test: flushall with async passed
+test: flushall with sync version skipped
+test: flushdb command passed
+test: flushdb with async passed
+test: flushdb with sync version skipped
+test: swapdb command failed
+test: discard command failed
+test: exec command failed
+test: multi command failed
+test: unwatch command failed
+test: watch command failed
+test: eval command failed
+test: eval_ro command version skipped
+test: evalsha command failed
+test: evalsha_ro command version skipped
+test: fcall command version skipped
+test: fcall_ro command version skipped
+test: function delete command version skipped
+test: function flush command version skipped
+test: function flush with SYNC version skipped
+test: function flush with ASYNC version skipped
+test: function list command version skipped
+test: function load command version skipped
+test: function restore command version skipped
+test: function stats command version skipped
+test: script exists command passed
+test: script flush command passed
+test: script flush with SYNC version skipped
+test: script flush with ASYNC version skipped
+test: script load command passed
+test: xack command passed
+test: xadd command passed
+test: xadd with NOMKSTREAM/MINID/LIMIT version skipped
+test: xadd with EXPLICIT ID version skipped
+test: xclaim command passed
+test: xdel command passed
+test: xgroup create command passed
+test: xgroup create with MKSTREAM passed
+test: xgroup create with ENTRIESREAD version skipped
+test: xgroup createconsumer command version skipped
+test: xgroup delconsumer command passed
+test: xgroup destroy command passed
+test: xgroup setid command passed
+test: xgroup setid with ENTRIESREAD version skipped
+test: xlen command passed
+test: xpending command passed
+test: xrange command passed
+test: xread command passed
+test: xreadgroup command passed
+test: xrevrange command passed
+test: xrevrange command with EXCLUSIVE RANGES version skipped
+test: xtrim command passed
+test: xtrim command with MINID/LIMIT version skipped
+test: psubscribe command failed
+test: psubscribe with RESET version skipped
+test: publish command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub channels command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub numpat command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub numsub command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub shardchannels command version skipped
+test: pubsub shardnumsub command version skipped
+test: punsubscribe command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: spublish command version skipped
+test: ssubscribe command version skipped
+test: subscribe command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: subscribe with RESET version skipped
+test: sunsubscribe command version skipped
+test: unsubscribe command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+-------- The result of tests --------
+Summary: version: 6.0.0, total tests: 221, passed: 181, rate: 81.90%
+This is failed tests for 6.0.0:
+FailedTest(name='rename command', reason=RedisClusterException('rename - all keys must map to the same key slot'))
+FailedTest(name='renamenx command', reason=RedisClusterException('renamenx - all keys must map to the same key slot'))
+FailedTest(name='keys command', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='sdiff command', reason=RedisClusterException('sdiff - all keys must map to the same key slot'))
+FailedTest(name='sdiffstore command', reason=RedisClusterException('sdiffstore - all keys must map to the same key slot'))
+FailedTest(name='sinter command', reason=RedisClusterException('sinter - all keys must map to the same key slot'))
+FailedTest(name='sinterstore command', reason=RedisClusterException('sinterstore - all keys must map to the same key slot'))
+FailedTest(name='smove command', reason=RedisClusterException('smove - all keys must map to the same key slot'))
+FailedTest(name='sunion command', reason=RedisClusterException('sunion - all keys must map to the same key slot'))
+FailedTest(name='sunionstore command', reason=RedisClusterException('sunionstore - all keys must map to the same key slot'))
+FailedTest(name='mget command', reason=RedisClusterException('mget - all keys must map to the same key slot'))
+FailedTest(name='swapdb command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('swapdb', '0', '1')"))
+FailedTest(name='rpoplpush command', reason=RedisClusterException('rpoplpush - all keys must map to the same key slot'))
+FailedTest(name='exec command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='multi command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='bitop command', reason=RedisClusterException('bitop - all keys must map to the same key slot'))
+FailedTest(name='eval command', reason=ResponseError("for redis cluster, eval/evalsha/fcall number of keys can't be negative or zero"))
+FailedTest(name='evalsha command', reason=ResponseError("for redis cluster, eval/evalsha/fcall number of keys can't be negative or zero"))
+FailedTest(name='brpoplpush command', reason=RedisClusterException('brpoplpush - all keys must map to the same key slot'))
+FailedTest(name='unwatch command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('unwatch',)"))
+FailedTest(name='watch command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('unwatch',)"))
+FailedTest(name='scan command', reason="expected: ['0', ['k']], result: ({'172.16.0.174:6379': 72057594037927936}, ['k'])")
+FailedTest(name='scan with TYPE', reason="expected: ['0', ['geokey']], result: ({'172.16.0.174:6379': 72057594037927936}, ['geokey'])")
+FailedTest(name='brpop with double timeout', reason=RedisClusterException('brpop - all keys must map to the same key slot'))
+FailedTest(name='brpoplpush with double timeout', reason=RedisClusterException('brpoplpush - all keys must map to the same key slot'))
+FailedTest(name='bitfield_ro command', reason=ResponseError("unknown command 'BITFIELD_RO'"))
+FailedTest(name='blpop command', reason=RedisClusterException('blpop - all keys must map to the same key slot'))
+FailedTest(name='brpop command', reason=RedisClusterException('brpop - all keys must map to the same key slot'))
+FailedTest(name='zinterstore command', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zinterstore with WEIGHTS', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zinterstore with AGGREGATE', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zunionstore command', reason=RedisClusterException('zunionstore - all keys must map to the same key slot'))
+FailedTest(name='zunionstore with WEIGHTS and AGGREGATE', reason=RedisClusterException('zunionstore - all keys must map to the same key slot'))
+FailedTest(name='discard command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='psubscribe command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('quit',)"))
+FailedTest(name='georadius with STORE / STOREDIST', reason=RedisClusterException('georadius - all keys must map to the same key slot'))
+FailedTest(name='georadiusbymember with STORE / STOREDIST', reason=RedisClusterException('georadiusbymember - all keys must map to the same key slot'))
+FailedTest(name='pfmerge command', reason=RedisClusterException('pfmerge - all keys must map to the same key slot'))
+FailedTest(name='mset command', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='msetnx command', reason=RedisClusterException('msetnx - all keys must map to the same key slot'))
+</pre>
diff --git a/AliyunRedisCluster-7.0.0.html b/AliyunRedisCluster-7.0.0.html
new file mode 100644
index 0000000..76827c4
--- /dev/null
+++ b/AliyunRedisCluster-7.0.0.html
@@ -0,0 +1,502 @@
+<pre>
+test: del command passed
+test: unlink command passed
+test: rename command failed
+test: rename command tags skipped
+test: renamenx command failed
+test: renamenx command tags skipped
+test: randomkey command passed
+test: exists command passed
+test: ttl command passed
+test: pttl command passed
+test: expire command passed
+test: expire with NX / XX passed
+test: expire with GT / LT passed
+test: expireat command passed
+test: expireat with NX / XX passed
+test: expireat with GT / LT passed
+test: pexpire command passed
+test: pexpire with NX / XX passed
+test: pexpire with GT / LT passed
+test: pexpireat command passed
+test: pexpireat with NX / XX passed
+test: pexpireat with GT / LT passed
+test: expiretime command passed
+test: pexpiretime command passed
+test: persist command passed
+test: dump command passed
+test: touch command passed
+test: restore command passed
+test: restore with REPLACE passed
+test: restore with ABSTTL passed
+test: restore with IDLETIME passed
+test: scan command failed
+test: scan with TYPE failed
+test: keys command failed
+test: move command passed
+test: copy command failed
+test: copy command tags skipped
+test: type command passed
+test: sort command passed
+test: sort_ro command skipped
+test: set command passed
+test: blmove command failed
+test: blmove command tags skipped
+test: blmpop command passed
+test: blmpop with COUNT failed
+test: blmpop with COUNT tags skipped
+test: blpop command failed
+test: blpop command tags skipped
+test: blpop with double timeout passed
+test: blpop with double timeout tags skipped
+test: brpop command failed
+test: brpop command tags skipped
+test: brpop with double timeout failed
+test: brpop with double timeout tags skipped
+test: brpoplpush command failed
+test: brpoplpush command tags skipped
+test: brpoplpush with double timeout failed
+test: brpoplpush with double timeout tags skipped
+test: lindex command passed
+test: linsert command passed
+test: llen command passed
+test: lmove command failed
+test: lmove command tags skipped
+test: lmpop command passed
+test: lmpop with COUNT failed
+test: lmpop with COUNT tags skipped
+test: lpop command passed
+test: lpop with COUNT passed
+test: lpos command passed
+test: lpos with RANK passed
+test: lpos with COUNT passed
+test: lpos with MAXLEN passed
+test: lpos with RANK, COUNT and MAXLEN passed
+test: lpush command passed
+test: lpush with multiple element passed
+test: lpushx command passed
+test: lpushx with multiple element passed
+test: lrange command passed
+test: lrem command passed
+test: lset command passed
+test: ltrim command passed
+test: rpop command passed
+test: rpop with COUNT passed
+test: rpoplpush command failed
+test: rpoplpush command tags skipped
+test: rpush command passed
+test: rpush with multiple element passed
+test: rpushx command passed
+test: rpushx command tags skipped
+test: rpushx with multiple element passed
+test: rpushx with multiple element tags skipped
+test: sadd command passed
+test: sadd command passed
+test: scard command passed
+test: sdiff command failed
+test: sdiff command tags skipped
+test: sdiffstore command failed
+test: sdiffstore command tags skipped
+test: sinter command failed
+test: sinter command tags skipped
+test: sintercard command failed
+test: sintercard command tags skipped
+test: sintercard with LIMIT failed
+test: sintercard with LIMIT tags skipped
+test: sinterstore command failed
+test: sinterstore command tags skipped
+test: sismember command passed
+test: smembers command passed
+test: smismember command passed
+test: smove command failed
+test: smove command tags skipped
+test: spop command passed
+test: spop with COUNT passed
+test: srandmember command passed
+test: srandmember with COUNT passed
+test: srem command passed
+test: srem with multiple member passed
+test: sscan command passed
+test: sscan with MATCH and COUNT passed
+test: sunion command failed
+test: sunion command tags skipped
+test: sunionstore command failed
+test: sunionstore command tags skipped
+test: bzmpop command failed
+test: bzmpop command tags skipped
+test: bzmpop with COUNT failed
+test: bzmpop with COUNT passed
+test: bzpopmax command passed
+test: bzpopmax with double timeout passed
+test: bzpopmin command passed
+test: bzpopmin with double timeout passed
+test: zadd command passed
+test: zadd with multiple elements passed
+test: zadd with XX / NX / CH / INCR passed
+test: zadd with GT / LT passed
+test: zcard command passed
+test: zcount command passed
+test: zdiff command failed
+test: zdiff command tags skipped
+test: zdiffstore command failed
+test: zdiffstore command tags skipped
+test: zincrby command passed
+test: zinter command failed
+test: zinter command tags skipped
+test: zinter with WEIGHTS failed
+test: zinter with WEIGHTS tags skipped
+test: zinter with AGGREGATE failed
+test: zinter with AGGREGATE tags skipped
+test: zinter WITHSCORES failed
+test: zinter WITHSCORES tags skipped
+test: zintercard command failed
+test: zintercard command tags skipped
+test: zintercard with LIMIT failed
+test: zintercard with LIMIT tags skipped
+test: zinterstore command failed
+test: zinterstore command tags skipped
+test: zinterstore with WEIGHTS failed
+test: zinterstore with WEIGHTS tags skipped
+test: zinterstore with AGGREGATE failed
+test: zinterstore with AGGREGATE tags skipped
+test: zlexcount command passed
+test: zmpop command passed
+test: zmpop with COUNT passed
+test: zmscore command passed
+test: zpopmax command passed
+test: zpopmax with COUNT passed
+test: zpopmin command passed
+test: zpopmin command passed
+test: zrandmember command passed
+test: zrandmember with COUNT passed
+test: zrandmember with WITHSCORES passed
+test: zrange command passed
+test: zrange with WITHSCORES passed
+test: zrange with BYSCORE / BYLEX passed
+test: zrange with REV passed
+test: zrange with LIMIT passed
+test: zrangebylex command passed
+test: zrangebylex with LIMIT passed
+test: zrangebyscore command passed
+test: zrangebyscore with LIMIT passed
+test: zrangebyscore with WITHSCORES passed
+test: zrangestore command failed
+test: zrangestore command tags skipped
+test: zrangestore with BYSCORE / BYLEX failed
+test: zrangestore with BYSCORE / BYLEX tags skipped
+test: zrangestore with REV failed
+test: zrangestore with REV tags skipped
+test: zrangestore with LIMIT failed
+test: zrangestore with LIMIT tags skipped
+test: zrank command passed
+test: zrank with WITHSCORE version skipped
+test: zrem command passed
+test: zrem with multiple elements passed
+test: zremrangebylex command passed
+test: zremrangebyrank command passed
+test: zremrangebyscore command passed
+test: zrevrange command passed
+test: zrevrange with WITHSCORES passed
+test: zrevrangebylex command passed
+test: zrevrangebylex with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrangebyscore with WITHSCORES passed
+test: zrevrangebyscore with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrank command passed
+test: zrevrank with WITHSCORE version skipped
+test: zscan command passed
+test: zscan with MATCH and COUNT passed
+test: zscore command passed
+test: zunion command failed
+test: zunion command tags skipped
+test: zunion with WEIGHTS and AGGREGATE failed
+test: zunion with WEIGHTS and AGGREGATE tags skipped
+test: zunion with WITHSCORES failed
+test: zunion with WITHSCORES tags skipped
+test: zunionstore command failed
+test: zunionstore command tags skipped
+test: zunionstore with WEIGHTS and AGGREGATE failed
+test: zunionstore with WEIGHTS and AGGREGATE tags skipped
+test: append command passed
+test: decr command passed
+test: decrby command passed
+test: get command passed
+test: getdel command passed
+test: getex command passed
+test: getex with EX passed
+test: getex with PX passed
+test: getex with EXAT passed
+test: getex with PXAT passed
+test: getex with PERSIST passed
+test: getrange command passed
+test: getset command passed
+test: incr command passed
+test: incrby command passed
+test: incrbyfloat command passed
+test: lcs command failed
+test: lcs command tags skipped
+test: lcs with LEN failed
+test: lcs with LEN tags skipped
+test: lcs with IDX failed
+test: lcs with IDX tags skipped
+test: lcs with MINMATCHLEN failed
+test: lcs with MINMATCHLEN tags skipped
+test: lcs with WITHMATCHLEN failed
+test: lcs with WITHMATCHLEN tags skipped
+test: mget command failed
+test: mget command tags skipped
+test: mset command failed
+test: mset command tags skipped
+test: msetnx command failed
+test: msetnx command tags skipped
+test: psetex command passed
+test: set command passed
+test: set with EX / PX passed
+test: set with NX / XX passed
+test: set with KEEPTTL passed
+test: set with GET passed
+test: set with EXAT / PXAT passed
+test: set with NX and GET passed
+test: setex command passed
+test: setnx command passed
+test: setrange command passed
+test: strlen command passed
+test: substr command passed
+test: hdel command passed
+test: hdel with multiple field passed
+test: hexists command passed
+test: hget command passed
+test: hgetall command passed
+test: hincrby command passed
+test: hincrbyfloat command passed
+test: hkeys command passed
+test: hlen command passed
+test: hmget command passed
+test: hmset command passed
+test: hrandfield command passed
+test: hrandfield with COUNT passed
+test: hrandfield with WITHVALUES passed
+test: hscan command passed
+test: hscan with MATCH and COUNT passed
+test: hset command passed
+test: hset command with multiple field and value passed
+test: hsetnx command passed
+test: hstrlen command passed
+test: hvals command passed
+test: bitcount command passed
+test: bitcount with BYTE / BIT passed
+test: bitfield command passed
+test: bitfield_ro command failed
+test: bitop command failed
+test: bitop command tags skipped
+test: bitpos command passed
+test: bitpos with BYTE / BIT passed
+test: getbit command passed
+test: setbit command passed
+test: pfadd command passed
+test: pfcount command passed
+test: pfmerge command failed
+test: pfmerge command tags skipped
+test: geoadd command passed
+test: geoadd with CH / NX / XX passed
+test: geodist command passed
+test: geodist with M / KM / FT / MI passed
+test: geohash command passed
+test: geopos command passed
+test: georadius command passed
+test: georadius with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius with COUNT passed
+test: georadius with ASC / DESC passed
+test: georadius with STORE / STOREDIST failed
+test: georadius with STORE / STOREDIST tags skipped
+test: georadius with ANY option for COUNT passed
+test: georadius with support for uppercase unit names passed
+test: georadius_ro command passed
+test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius_ro with COUNT passed
+test: georadius_ro with ASC / DESC passed
+test: georadius_ro with ANY option for COUNT passed
+test: georadiusbymember command passed
+test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember with COUNT passed
+test: georadiusbymember with ASC / DESC passed
+test: georadiusbymember with STORE / STOREDIST failed
+test: georadiusbymember with STORE / STOREDIST tags skipped
+test: georadiusbymember with ANY option for COUNT passed
+test: georadiusbymember with support for uppercase unit names passed
+test: georadiusbymember_ro command passed
+test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember_ro with COUNT passed
+test: georadiusbymember_ro with ASC / DESC passed
+test: georadiusbymember_ro with ANY option for COUNT passed
+test: geosearch command passed
+test: geosearch with ASC / DESC passed
+test: geosearch with COUNT passed
+test: geosearch with WITHCOORD / WITHDIST / WITHHASH passed
+test: geosearch with support for uppercase unit names passed
+test: geosearchstore command failed
+test: geosearchstore command tags skipped
+test: geosearchstore with ASC / DESC failed
+test: geosearchstore with ASC / DESC tags skipped
+test: geosearchstore with COUNT failed
+test: geosearchstore with COUNT tags skipped
+test: geosearchstore with STOREDIST failed
+test: geosearchstore with STOREDIST tags skipped
+test: geosearchstore with support for uppercase unit names failed
+test: geosearchstore with support for uppercase unit names tags skipped
+test: dbsize command passed
+test: flushall command passed
+test: flushall with async passed
+test: flushall with sync passed
+test: flushdb command passed
+test: flushdb with async passed
+test: flushdb with sync passed
+test: swapdb command failed
+test: discard command failed
+test: exec command failed
+test: multi command failed
+test: unwatch command failed
+test: watch command failed
+test: eval command failed
+test: eval_ro command failed
+test: evalsha command failed
+test: evalsha_ro command failed
+test: fcall command failed
+test: fcall_ro command failed
+test: function delete command passed
+test: function flush command passed
+test: function flush with SYNC passed
+test: function flush with ASYNC passed
+test: function list command passed
+test: function load command failed
+test: function restore command failed
+test: function stats command failed
+test: script exists command passed
+test: script flush command passed
+test: script flush with SYNC passed
+test: script flush with ASYNC passed
+test: script load command passed
+test: xack command passed
+test: xadd command passed
+test: xadd with NOMKSTREAM/MINID/LIMIT passed
+test: xadd with EXPLICIT ID passed
+test: xclaim command passed
+test: xdel command passed
+test: xgroup create command passed
+test: xgroup create with MKSTREAM passed
+test: xgroup create with ENTRIESREAD passed
+test: xgroup createconsumer command passed
+test: xgroup delconsumer command passed
+test: xgroup destroy command passed
+test: xgroup setid command passed
+test: xgroup setid with ENTRIESREAD passed
+test: xlen command passed
+test: xpending command passed
+test: xrange command passed
+test: xread command passed
+test: xreadgroup command passed
+test: xrevrange command passed
+test: xrevrange command with EXCLUSIVE RANGES passed
+test: xtrim command passed
+test: xtrim command with MINID/LIMIT passed
+test: psubscribe command failed
+test: psubscribe with RESET run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: publish command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub channels command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub numpat command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub numsub command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub shardchannels command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub shardnumsub command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: punsubscribe command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: spublish command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: ssubscribe command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: subscribe command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: subscribe with RESET run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: sunsubscribe command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: unsubscribe command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+-------- The result of tests --------
+Summary: version: 7.0.0, total tests: 336, passed: 255, rate: 75.89%
+This is failed tests for 7.0.0:
+FailedTest(name='rename command', reason=RedisClusterException('rename - all keys must map to the same key slot'))
+FailedTest(name='renamenx command', reason=RedisClusterException('renamenx - all keys must map to the same key slot'))
+FailedTest(name='keys command', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='sdiff command', reason=RedisClusterException('sdiff - all keys must map to the same key slot'))
+FailedTest(name='sdiffstore command', reason=RedisClusterException('sdiffstore - all keys must map to the same key slot'))
+FailedTest(name='sinter command', reason=RedisClusterException('sinter - all keys must map to the same key slot'))
+FailedTest(name='sinterstore command', reason=RedisClusterException('sinterstore - all keys must map to the same key slot'))
+FailedTest(name='smove command', reason=RedisClusterException('smove - all keys must map to the same key slot'))
+FailedTest(name='sunion command', reason=RedisClusterException('sunion - all keys must map to the same key slot'))
+FailedTest(name='sunionstore command', reason=RedisClusterException('sunionstore - all keys must map to the same key slot'))
+FailedTest(name='mget command', reason=RedisClusterException('mget - all keys must map to the same key slot'))
+FailedTest(name='swapdb command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('swapdb', '0', '1')"))
+FailedTest(name='blmpop with COUNT', reason=RedisClusterException('blmpop - all keys must map to the same key slot'))
+FailedTest(name='lmpop with COUNT', reason=RedisClusterException('lmpop - all keys must map to the same key slot'))
+FailedTest(name='sintercard command', reason=RedisClusterException('sintercard - all keys must map to the same key slot'))
+FailedTest(name='sintercard with LIMIT', reason=RedisClusterException('sintercard - all keys must map to the same key slot'))
+FailedTest(name='bzmpop command', reason=RedisClusterException('bzmpop - all keys must map to the same key slot'))
+FailedTest(name='bzmpop with COUNT', reason=RedisClusterException('bzmpop - all keys must map to the same key slot'))
+FailedTest(name='zintercard command', reason=RedisClusterException('zintercard - all keys must map to the same key slot'))
+FailedTest(name='zintercard with LIMIT', reason=RedisClusterException('zintercard - all keys must map to the same key slot'))
+FailedTest(name='lcs command', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='lcs with LEN', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='lcs with IDX', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='lcs with MINMATCHLEN', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='lcs with WITHMATCHLEN', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='geosearchstore with support for uppercase unit names', reason=RedisClusterException('geosearchstore - all keys must map to the same key slot'))
+FailedTest(name='eval_ro command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('eval_ro', 'return', '0', 'hello')"))
+FailedTest(name='evalsha_ro command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('evalsha_ro', '63143b6f8007b98c53ca2149822777b3566f9241', '0')"))
+FailedTest(name='fcall command', reason=ResponseError("for redis cluster, eval/evalsha/fcall number of keys can't be negative or zero"))
+FailedTest(name='fcall_ro command', reason=ResponseError("for redis cluster, eval/evalsha/fcall number of keys can't be negative or zero"))
+FailedTest(name='function load command', reason=ResponseError("for redis cluster, eval/evalsha/fcall number of keys can't be negative or zero"))
+FailedTest(name='function restore command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('function', b'flush')"))
+FailedTest(name='function stats command', reason=ValueError('range() arg 3 must not be zero'))
+FailedTest(name='rpoplpush command', reason=RedisClusterException('rpoplpush - all keys must map to the same key slot'))
+FailedTest(name='exec command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='multi command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='bitop command', reason=RedisClusterException('bitop - all keys must map to the same key slot'))
+FailedTest(name='eval command', reason=ResponseError("for redis cluster, eval/evalsha/fcall number of keys can't be negative or zero"))
+FailedTest(name='evalsha command', reason=ResponseError("for redis cluster, eval/evalsha/fcall number of keys can't be negative or zero"))
+FailedTest(name='brpoplpush command', reason=RedisClusterException('brpoplpush - all keys must map to the same key slot'))
+FailedTest(name='unwatch command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('unwatch',)"))
+FailedTest(name='watch command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('unwatch',)"))
+FailedTest(name='scan command', reason="expected: ['0', ['k']], result: ({'172.16.0.174:6379': 72057594037927936}, ['k'])")
+FailedTest(name='scan with TYPE', reason="expected: ['0', ['geokey']], result: ({'172.16.0.174:6379': 72057594037927936}, ['geokey'])")
+FailedTest(name='brpop with double timeout', reason=RedisClusterException('brpop - all keys must map to the same key slot'))
+FailedTest(name='brpoplpush with double timeout', reason=RedisClusterException('brpoplpush - all keys must map to the same key slot'))
+FailedTest(name='bitfield_ro command', reason=ResponseError("unknown command 'BITFIELD_RO'"))
+FailedTest(name='copy command', reason=RedisClusterException('copy - all keys must map to the same key slot'))
+FailedTest(name='blmove command', reason=RedisClusterException('blmove - all keys must map to the same key slot'))
+FailedTest(name='lmove command', reason=RedisClusterException('lmove - all keys must map to the same key slot'))
+FailedTest(name='zdiff command', reason=RedisClusterException('zdiff - all keys must map to the same key slot'))
+FailedTest(name='zdiffstore command', reason=RedisClusterException('zdiffstore - all keys must map to the same key slot'))
+FailedTest(name='zinter command', reason=RedisClusterException('zinter - all keys must map to the same key slot'))
+FailedTest(name='zinter with WEIGHTS', reason=RedisClusterException('zinter - all keys must map to the same key slot'))
+FailedTest(name='zinter with AGGREGATE', reason=RedisClusterException('zinter - all keys must map to the same key slot'))
+FailedTest(name='zinter WITHSCORES', reason=RedisClusterException('zinter - all keys must map to the same key slot'))
+FailedTest(name='zrangestore command', reason=RedisClusterException('zrangestore - all keys must map to the same key slot'))
+FailedTest(name='zrangestore with BYSCORE / BYLEX', reason=RedisClusterException('zrangestore - all keys must map to the same key slot'))
+FailedTest(name='zrangestore with REV', reason=RedisClusterException('zrangestore - all keys must map to the same key slot'))
+FailedTest(name='zrangestore with LIMIT', reason=RedisClusterException('zrangestore - all keys must map to the same key slot'))
+FailedTest(name='zunion command', reason=RedisClusterException('zunion - all keys must map to the same key slot'))
+FailedTest(name='zunion with WEIGHTS and AGGREGATE', reason=RedisClusterException('zunion - all keys must map to the same key slot'))
+FailedTest(name='zunion with WITHSCORES', reason=RedisClusterException('zunion - all keys must map to the same key slot'))
+FailedTest(name='geosearchstore command', reason=RedisClusterException('geosearchstore - all keys must map to the same key slot'))
+FailedTest(name='geosearchstore with ASC / DESC', reason=RedisClusterException('geosearchstore - all keys must map to the same key slot'))
+FailedTest(name='geosearchstore with COUNT', reason=RedisClusterException('geosearchstore - all keys must map to the same key slot'))
+FailedTest(name='geosearchstore with STOREDIST', reason=RedisClusterException('geosearchstore - all keys must map to the same key slot'))
+FailedTest(name='blpop command', reason=RedisClusterException('blpop - all keys must map to the same key slot'))
+FailedTest(name='brpop command', reason=RedisClusterException('brpop - all keys must map to the same key slot'))
+FailedTest(name='zinterstore command', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zinterstore with WEIGHTS', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zinterstore with AGGREGATE', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zunionstore command', reason=RedisClusterException('zunionstore - all keys must map to the same key slot'))
+FailedTest(name='zunionstore with WEIGHTS and AGGREGATE', reason=RedisClusterException('zunionstore - all keys must map to the same key slot'))
+FailedTest(name='discard command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='psubscribe command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('quit',)"))
+FailedTest(name='georadius with STORE / STOREDIST', reason=RedisClusterException('georadius - all keys must map to the same key slot'))
+FailedTest(name='georadiusbymember with STORE / STOREDIST', reason=RedisClusterException('georadiusbymember - all keys must map to the same key slot'))
+FailedTest(name='pfmerge command', reason=RedisClusterException('pfmerge - all keys must map to the same key slot'))
+FailedTest(name='mset command', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='msetnx command', reason=RedisClusterException('msetnx - all keys must map to the same key slot'))
+</pre>
diff --git a/AliyunTair-4.0.0.html b/AliyunTair-4.0.0.html
new file mode 100644
index 0000000..0091fe0
--- /dev/null
+++ b/AliyunTair-4.0.0.html
@@ -0,0 +1,420 @@
+<pre>
+test: del command passed
+test: unlink command passed
+test: rename command passed
+test: rename command tags skipped
+test: renamenx command passed
+test: renamenx command tags skipped
+test: randomkey command passed
+test: exists command passed
+test: ttl command passed
+test: pttl command passed
+test: expire command passed
+test: expire with NX / XX version skipped
+test: expire with GT / LT version skipped
+test: expireat command passed
+test: expireat with NX / XX version skipped
+test: expireat with GT / LT version skipped
+test: pexpire command passed
+test: pexpire with NX / XX version skipped
+test: pexpire with GT / LT version skipped
+test: pexpireat command passed
+test: pexpireat with NX / XX version skipped
+test: pexpireat with GT / LT version skipped
+test: expiretime command version skipped
+test: pexpiretime command version skipped
+test: persist command passed
+test: dump command passed
+test: touch command passed
+test: restore command passed
+test: restore with REPLACE passed
+test: restore with ABSTTL version skipped
+test: restore with IDLETIME version skipped
+test: scan command passed
+test: scan with TYPE version skipped
+test: keys command passed
+test: move command passed
+test: copy command version skipped
+test: copy command tags skipped
+test: type command passed
+test: sort command passed
+test: sort_ro command skipped
+test: set command passed
+test: blmove command version skipped
+test: blmove command tags skipped
+test: blmpop command version skipped
+test: blmpop with COUNT version skipped
+test: blmpop with COUNT tags skipped
+test: blpop command passed
+test: blpop command tags skipped
+test: blpop with double timeout version skipped
+test: blpop with double timeout tags skipped
+test: brpop command passed
+test: brpop command tags skipped
+test: brpop with double timeout version skipped
+test: brpop with double timeout tags skipped
+test: brpoplpush command passed
+test: brpoplpush command tags skipped
+test: brpoplpush with double timeout version skipped
+test: brpoplpush with double timeout tags skipped
+test: lindex command passed
+test: linsert command passed
+test: llen command passed
+test: lmove command version skipped
+test: lmove command tags skipped
+test: lmpop command version skipped
+test: lmpop with COUNT version skipped
+test: lmpop with COUNT tags skipped
+test: lpop command passed
+test: lpop with COUNT version skipped
+test: lpos command version skipped
+test: lpos with RANK version skipped
+test: lpos with COUNT version skipped
+test: lpos with MAXLEN version skipped
+test: lpos with RANK, COUNT and MAXLEN version skipped
+test: lpush command passed
+test: lpush with multiple element passed
+test: lpushx command passed
+test: lpushx with multiple element passed
+test: lrange command passed
+test: lrem command passed
+test: lset command passed
+test: ltrim command passed
+test: rpop command passed
+test: rpop with COUNT version skipped
+test: rpoplpush command passed
+test: rpoplpush command tags skipped
+test: rpush command passed
+test: rpush with multiple element passed
+test: rpushx command passed
+test: rpushx command tags skipped
+test: rpushx with multiple element passed
+test: rpushx with multiple element tags skipped
+test: sadd command passed
+test: sadd command passed
+test: scard command passed
+test: sdiff command passed
+test: sdiff command tags skipped
+test: sdiffstore command passed
+test: sdiffstore command tags skipped
+test: sinter command passed
+test: sinter command tags skipped
+test: sintercard command version skipped
+test: sintercard command tags skipped
+test: sintercard with LIMIT version skipped
+test: sintercard with LIMIT tags skipped
+test: sinterstore command passed
+test: sinterstore command tags skipped
+test: sismember command passed
+test: smembers command passed
+test: smismember command version skipped
+test: smove command passed
+test: smove command tags skipped
+test: spop command passed
+test: spop with COUNT passed
+test: srandmember command passed
+test: srandmember with COUNT passed
+test: srem command passed
+test: srem with multiple member passed
+test: sscan command passed
+test: sscan with MATCH and COUNT passed
+test: sunion command passed
+test: sunion command tags skipped
+test: sunionstore command passed
+test: sunionstore command tags skipped
+test: bzmpop command version skipped
+test: bzmpop command tags skipped
+test: bzmpop with COUNT version skipped
+test: bzmpop with COUNT version skipped
+test: bzpopmax command version skipped
+test: bzpopmax with double timeout version skipped
+test: bzpopmin command version skipped
+test: bzpopmin with double timeout version skipped
+test: zadd command passed
+test: zadd with multiple elements passed
+test: zadd with XX / NX / CH / INCR passed
+test: zadd with GT / LT version skipped
+test: zcard command passed
+test: zcount command passed
+test: zdiff command version skipped
+test: zdiff command tags skipped
+test: zdiffstore command version skipped
+test: zdiffstore command tags skipped
+test: zincrby command passed
+test: zinter command version skipped
+test: zinter command tags skipped
+test: zinter with WEIGHTS version skipped
+test: zinter with WEIGHTS tags skipped
+test: zinter with AGGREGATE version skipped
+test: zinter with AGGREGATE tags skipped
+test: zinter WITHSCORES version skipped
+test: zinter WITHSCORES tags skipped
+test: zintercard command version skipped
+test: zintercard command tags skipped
+test: zintercard with LIMIT version skipped
+test: zintercard with LIMIT tags skipped
+test: zinterstore command passed
+test: zinterstore command tags skipped
+test: zinterstore with WEIGHTS passed
+test: zinterstore with WEIGHTS tags skipped
+test: zinterstore with AGGREGATE passed
+test: zinterstore with AGGREGATE tags skipped
+test: zlexcount command passed
+test: zmpop command version skipped
+test: zmpop with COUNT version skipped
+test: zmscore command version skipped
+test: zpopmax command version skipped
+test: zpopmax with COUNT version skipped
+test: zpopmin command version skipped
+test: zpopmin command version skipped
+test: zrandmember command version skipped
+test: zrandmember with COUNT version skipped
+test: zrandmember with WITHSCORES version skipped
+test: zrange command passed
+test: zrange with WITHSCORES passed
+test: zrange with BYSCORE / BYLEX version skipped
+test: zrange with REV version skipped
+test: zrange with LIMIT version skipped
+test: zrangebylex command passed
+test: zrangebylex with LIMIT passed
+test: zrangebyscore command passed
+test: zrangebyscore with LIMIT passed
+test: zrangebyscore with WITHSCORES passed
+test: zrangestore command version skipped
+test: zrangestore command tags skipped
+test: zrangestore with BYSCORE / BYLEX version skipped
+test: zrangestore with BYSCORE / BYLEX tags skipped
+test: zrangestore with REV version skipped
+test: zrangestore with REV tags skipped
+test: zrangestore with LIMIT version skipped
+test: zrangestore with LIMIT tags skipped
+test: zrank command passed
+test: zrank with WITHSCORE version skipped
+test: zrem command passed
+test: zrem with multiple elements passed
+test: zremrangebylex command passed
+test: zremrangebyrank command passed
+test: zremrangebyscore command passed
+test: zrevrange command passed
+test: zrevrange with WITHSCORES passed
+test: zrevrangebylex command passed
+test: zrevrangebylex with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrangebyscore with WITHSCORES passed
+test: zrevrangebyscore with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrank command passed
+test: zrevrank with WITHSCORE version skipped
+test: zscan command passed
+test: zscan with MATCH and COUNT passed
+test: zscore command passed
+test: zunion command version skipped
+test: zunion command tags skipped
+test: zunion with WEIGHTS and AGGREGATE version skipped
+test: zunion with WEIGHTS and AGGREGATE tags skipped
+test: zunion with WITHSCORES version skipped
+test: zunion with WITHSCORES tags skipped
+test: zunionstore command passed
+test: zunionstore command tags skipped
+test: zunionstore with WEIGHTS and AGGREGATE passed
+test: zunionstore with WEIGHTS and AGGREGATE tags skipped
+test: append command passed
+test: decr command passed
+test: decrby command passed
+test: get command passed
+test: getdel command version skipped
+test: getex command version skipped
+test: getex with EX version skipped
+test: getex with PX version skipped
+test: getex with EXAT version skipped
+test: getex with PXAT version skipped
+test: getex with PERSIST version skipped
+test: getrange command passed
+test: getset command passed
+test: incr command passed
+test: incrby command passed
+test: incrbyfloat command passed
+test: lcs command version skipped
+test: lcs command tags skipped
+test: lcs with LEN version skipped
+test: lcs with LEN tags skipped
+test: lcs with IDX version skipped
+test: lcs with IDX tags skipped
+test: lcs with MINMATCHLEN version skipped
+test: lcs with MINMATCHLEN tags skipped
+test: lcs with WITHMATCHLEN version skipped
+test: lcs with WITHMATCHLEN tags skipped
+test: mget command passed
+test: mget command tags skipped
+test: mset command passed
+test: mset command tags skipped
+test: msetnx command passed
+test: msetnx command tags skipped
+test: psetex command passed
+test: set command passed
+test: set with EX / PX passed
+test: set with NX / XX passed
+test: set with KEEPTTL version skipped
+test: set with GET version skipped
+test: set with EXAT / PXAT version skipped
+test: set with NX and GET version skipped
+test: setex command passed
+test: setnx command passed
+test: setrange command passed
+test: strlen command passed
+test: substr command passed
+test: hdel command passed
+test: hdel with multiple field passed
+test: hexists command passed
+test: hget command passed
+test: hgetall command passed
+test: hincrby command passed
+test: hincrbyfloat command passed
+test: hkeys command passed
+test: hlen command passed
+test: hmget command passed
+test: hmset command passed
+test: hrandfield command version skipped
+test: hrandfield with COUNT version skipped
+test: hrandfield with WITHVALUES version skipped
+test: hscan command passed
+test: hscan with MATCH and COUNT passed
+test: hset command passed
+test: hset command with multiple field and value passed
+test: hsetnx command passed
+test: hstrlen command passed
+test: hvals command passed
+test: bitcount command passed
+test: bitcount with BYTE / BIT version skipped
+test: bitfield command passed
+test: bitfield_ro command version skipped
+test: bitop command passed
+test: bitop command tags skipped
+test: bitpos command passed
+test: bitpos with BYTE / BIT version skipped
+test: getbit command passed
+test: setbit command passed
+test: pfadd command passed
+test: pfcount command passed
+test: pfmerge command passed
+test: pfmerge command tags skipped
+test: geoadd command passed
+test: geoadd with CH / NX / XX version skipped
+test: geodist command passed
+test: geodist with M / KM / FT / MI passed
+test: geohash command passed
+test: geopos command passed
+test: georadius command passed
+test: georadius with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius with COUNT passed
+test: georadius with ASC / DESC passed
+test: georadius with STORE / STOREDIST passed
+test: georadius with STORE / STOREDIST tags skipped
+test: georadius with ANY option for COUNT version skipped
+test: georadius with support for uppercase unit names version skipped
+test: georadius_ro command passed
+test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius_ro with COUNT passed
+test: georadius_ro with ASC / DESC passed
+test: georadius_ro with ANY option for COUNT version skipped
+test: georadiusbymember command passed
+test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember with COUNT passed
+test: georadiusbymember with ASC / DESC passed
+test: georadiusbymember with STORE / STOREDIST passed
+test: georadiusbymember with STORE / STOREDIST tags skipped
+test: georadiusbymember with ANY option for COUNT version skipped
+test: georadiusbymember with support for uppercase unit names version skipped
+test: georadiusbymember_ro command passed
+test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember_ro with COUNT passed
+test: georadiusbymember_ro with ASC / DESC passed
+test: georadiusbymember_ro with ANY option for COUNT version skipped
+test: geosearch command version skipped
+test: geosearch with ASC / DESC version skipped
+test: geosearch with COUNT version skipped
+test: geosearch with WITHCOORD / WITHDIST / WITHHASH version skipped
+test: geosearch with support for uppercase unit names version skipped
+test: geosearchstore command version skipped
+test: geosearchstore command tags skipped
+test: geosearchstore with ASC / DESC version skipped
+test: geosearchstore with ASC / DESC tags skipped
+test: geosearchstore with COUNT version skipped
+test: geosearchstore with COUNT tags skipped
+test: geosearchstore with STOREDIST version skipped
+test: geosearchstore with STOREDIST tags skipped
+test: geosearchstore with support for uppercase unit names version skipped
+test: geosearchstore with support for uppercase unit names tags skipped
+test: dbsize command passed
+test: flushall command passed
+test: flushall with async passed
+test: flushall with sync version skipped
+test: flushdb command passed
+test: flushdb with async passed
+test: flushdb with sync version skipped
+test: swapdb command passed
+test: discard command passed
+test: exec command passed
+test: multi command passed
+test: unwatch command passed
+test: watch command passed
+test: eval command passed
+test: eval_ro command version skipped
+test: evalsha command passed
+test: evalsha_ro command version skipped
+test: fcall command version skipped
+test: fcall_ro command version skipped
+test: function delete command version skipped
+test: function flush command version skipped
+test: function flush with SYNC version skipped
+test: function flush with ASYNC version skipped
+test: function list command version skipped
+test: function load command version skipped
+test: function restore command version skipped
+test: function stats command version skipped
+test: script exists command passed
+test: script flush command passed
+test: script flush with SYNC version skipped
+test: script flush with ASYNC version skipped
+test: script load command passed
+test: xack command version skipped
+test: xadd command version skipped
+test: xadd with NOMKSTREAM/MINID/LIMIT version skipped
+test: xadd with EXPLICIT ID version skipped
+test: xclaim command version skipped
+test: xdel command version skipped
+test: xgroup create command version skipped
+test: xgroup create with MKSTREAM version skipped
+test: xgroup create with ENTRIESREAD version skipped
+test: xgroup createconsumer command version skipped
+test: xgroup delconsumer command version skipped
+test: xgroup destroy command version skipped
+test: xgroup setid command version skipped
+test: xgroup setid with ENTRIESREAD version skipped
+test: xlen command version skipped
+test: xpending command version skipped
+test: xrange command version skipped
+test: xread command version skipped
+test: xreadgroup command version skipped
+test: xrevrange command version skipped
+test: xrevrange command with EXCLUSIVE RANGES version skipped
+test: xtrim command version skipped
+test: xtrim command with MINID/LIMIT version skipped
+test: psubscribe command passed
+test: psubscribe with RESET version skipped
+test: publish command run test error Connection closed by server.
+test: pubsub channels command passed
+test: pubsub numpat command passed
+test: pubsub numsub command passed
+test: pubsub shardchannels command version skipped
+test: pubsub shardnumsub command version skipped
+test: punsubscribe command passed
+test: spublish command version skipped
+test: ssubscribe command version skipped
+test: subscribe command passed
+test: subscribe with RESET version skipped
+test: sunsubscribe command version skipped
+test: unsubscribe command passed
+-------- The result of tests --------
+Summary: version: 4.0.0, total tests: 195, passed: 195, rate: 100.00%
+</pre>
diff --git a/AliyunTair-5.0.0.html b/AliyunTair-5.0.0.html
new file mode 100644
index 0000000..a5c5a59
--- /dev/null
+++ b/AliyunTair-5.0.0.html
@@ -0,0 +1,420 @@
+<pre>
+test: del command passed
+test: unlink command passed
+test: rename command passed
+test: rename command tags skipped
+test: renamenx command passed
+test: renamenx command tags skipped
+test: randomkey command passed
+test: exists command passed
+test: ttl command passed
+test: pttl command passed
+test: expire command passed
+test: expire with NX / XX version skipped
+test: expire with GT / LT version skipped
+test: expireat command passed
+test: expireat with NX / XX version skipped
+test: expireat with GT / LT version skipped
+test: pexpire command passed
+test: pexpire with NX / XX version skipped
+test: pexpire with GT / LT version skipped
+test: pexpireat command passed
+test: pexpireat with NX / XX version skipped
+test: pexpireat with GT / LT version skipped
+test: expiretime command version skipped
+test: pexpiretime command version skipped
+test: persist command passed
+test: dump command passed
+test: touch command passed
+test: restore command passed
+test: restore with REPLACE passed
+test: restore with ABSTTL passed
+test: restore with IDLETIME passed
+test: scan command passed
+test: scan with TYPE version skipped
+test: keys command passed
+test: move command passed
+test: copy command version skipped
+test: copy command tags skipped
+test: type command passed
+test: sort command passed
+test: sort_ro command skipped
+test: set command passed
+test: blmove command version skipped
+test: blmove command tags skipped
+test: blmpop command version skipped
+test: blmpop with COUNT version skipped
+test: blmpop with COUNT tags skipped
+test: blpop command passed
+test: blpop command tags skipped
+test: blpop with double timeout version skipped
+test: blpop with double timeout tags skipped
+test: brpop command passed
+test: brpop command tags skipped
+test: brpop with double timeout version skipped
+test: brpop with double timeout tags skipped
+test: brpoplpush command passed
+test: brpoplpush command tags skipped
+test: brpoplpush with double timeout version skipped
+test: brpoplpush with double timeout tags skipped
+test: lindex command passed
+test: linsert command passed
+test: llen command passed
+test: lmove command version skipped
+test: lmove command tags skipped
+test: lmpop command version skipped
+test: lmpop with COUNT version skipped
+test: lmpop with COUNT tags skipped
+test: lpop command passed
+test: lpop with COUNT version skipped
+test: lpos command version skipped
+test: lpos with RANK version skipped
+test: lpos with COUNT version skipped
+test: lpos with MAXLEN version skipped
+test: lpos with RANK, COUNT and MAXLEN version skipped
+test: lpush command passed
+test: lpush with multiple element passed
+test: lpushx command passed
+test: lpushx with multiple element passed
+test: lrange command passed
+test: lrem command passed
+test: lset command passed
+test: ltrim command passed
+test: rpop command passed
+test: rpop with COUNT version skipped
+test: rpoplpush command passed
+test: rpoplpush command tags skipped
+test: rpush command passed
+test: rpush with multiple element passed
+test: rpushx command passed
+test: rpushx command tags skipped
+test: rpushx with multiple element passed
+test: rpushx with multiple element tags skipped
+test: sadd command passed
+test: sadd command passed
+test: scard command passed
+test: sdiff command passed
+test: sdiff command tags skipped
+test: sdiffstore command passed
+test: sdiffstore command tags skipped
+test: sinter command passed
+test: sinter command tags skipped
+test: sintercard command version skipped
+test: sintercard command tags skipped
+test: sintercard with LIMIT version skipped
+test: sintercard with LIMIT tags skipped
+test: sinterstore command passed
+test: sinterstore command tags skipped
+test: sismember command passed
+test: smembers command passed
+test: smismember command version skipped
+test: smove command passed
+test: smove command tags skipped
+test: spop command passed
+test: spop with COUNT passed
+test: srandmember command passed
+test: srandmember with COUNT passed
+test: srem command passed
+test: srem with multiple member passed
+test: sscan command passed
+test: sscan with MATCH and COUNT passed
+test: sunion command passed
+test: sunion command tags skipped
+test: sunionstore command passed
+test: sunionstore command tags skipped
+test: bzmpop command version skipped
+test: bzmpop command tags skipped
+test: bzmpop with COUNT version skipped
+test: bzmpop with COUNT version skipped
+test: bzpopmax command passed
+test: bzpopmax with double timeout version skipped
+test: bzpopmin command passed
+test: bzpopmin with double timeout version skipped
+test: zadd command passed
+test: zadd with multiple elements passed
+test: zadd with XX / NX / CH / INCR passed
+test: zadd with GT / LT version skipped
+test: zcard command passed
+test: zcount command passed
+test: zdiff command version skipped
+test: zdiff command tags skipped
+test: zdiffstore command version skipped
+test: zdiffstore command tags skipped
+test: zincrby command passed
+test: zinter command version skipped
+test: zinter command tags skipped
+test: zinter with WEIGHTS version skipped
+test: zinter with WEIGHTS tags skipped
+test: zinter with AGGREGATE version skipped
+test: zinter with AGGREGATE tags skipped
+test: zinter WITHSCORES version skipped
+test: zinter WITHSCORES tags skipped
+test: zintercard command version skipped
+test: zintercard command tags skipped
+test: zintercard with LIMIT version skipped
+test: zintercard with LIMIT tags skipped
+test: zinterstore command passed
+test: zinterstore command tags skipped
+test: zinterstore with WEIGHTS passed
+test: zinterstore with WEIGHTS tags skipped
+test: zinterstore with AGGREGATE passed
+test: zinterstore with AGGREGATE tags skipped
+test: zlexcount command passed
+test: zmpop command version skipped
+test: zmpop with COUNT version skipped
+test: zmscore command version skipped
+test: zpopmax command passed
+test: zpopmax with COUNT passed
+test: zpopmin command passed
+test: zpopmin command passed
+test: zrandmember command version skipped
+test: zrandmember with COUNT version skipped
+test: zrandmember with WITHSCORES version skipped
+test: zrange command passed
+test: zrange with WITHSCORES passed
+test: zrange with BYSCORE / BYLEX version skipped
+test: zrange with REV version skipped
+test: zrange with LIMIT version skipped
+test: zrangebylex command passed
+test: zrangebylex with LIMIT passed
+test: zrangebyscore command passed
+test: zrangebyscore with LIMIT passed
+test: zrangebyscore with WITHSCORES passed
+test: zrangestore command version skipped
+test: zrangestore command tags skipped
+test: zrangestore with BYSCORE / BYLEX version skipped
+test: zrangestore with BYSCORE / BYLEX tags skipped
+test: zrangestore with REV version skipped
+test: zrangestore with REV tags skipped
+test: zrangestore with LIMIT version skipped
+test: zrangestore with LIMIT tags skipped
+test: zrank command passed
+test: zrank with WITHSCORE version skipped
+test: zrem command passed
+test: zrem with multiple elements passed
+test: zremrangebylex command passed
+test: zremrangebyrank command passed
+test: zremrangebyscore command passed
+test: zrevrange command passed
+test: zrevrange with WITHSCORES passed
+test: zrevrangebylex command passed
+test: zrevrangebylex with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrangebyscore with WITHSCORES passed
+test: zrevrangebyscore with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrank command passed
+test: zrevrank with WITHSCORE version skipped
+test: zscan command passed
+test: zscan with MATCH and COUNT passed
+test: zscore command passed
+test: zunion command version skipped
+test: zunion command tags skipped
+test: zunion with WEIGHTS and AGGREGATE version skipped
+test: zunion with WEIGHTS and AGGREGATE tags skipped
+test: zunion with WITHSCORES version skipped
+test: zunion with WITHSCORES tags skipped
+test: zunionstore command passed
+test: zunionstore command tags skipped
+test: zunionstore with WEIGHTS and AGGREGATE passed
+test: zunionstore with WEIGHTS and AGGREGATE tags skipped
+test: append command passed
+test: decr command passed
+test: decrby command passed
+test: get command passed
+test: getdel command version skipped
+test: getex command version skipped
+test: getex with EX version skipped
+test: getex with PX version skipped
+test: getex with EXAT version skipped
+test: getex with PXAT version skipped
+test: getex with PERSIST version skipped
+test: getrange command passed
+test: getset command passed
+test: incr command passed
+test: incrby command passed
+test: incrbyfloat command passed
+test: lcs command version skipped
+test: lcs command tags skipped
+test: lcs with LEN version skipped
+test: lcs with LEN tags skipped
+test: lcs with IDX version skipped
+test: lcs with IDX tags skipped
+test: lcs with MINMATCHLEN version skipped
+test: lcs with MINMATCHLEN tags skipped
+test: lcs with WITHMATCHLEN version skipped
+test: lcs with WITHMATCHLEN tags skipped
+test: mget command passed
+test: mget command tags skipped
+test: mset command passed
+test: mset command tags skipped
+test: msetnx command passed
+test: msetnx command tags skipped
+test: psetex command passed
+test: set command passed
+test: set with EX / PX passed
+test: set with NX / XX passed
+test: set with KEEPTTL version skipped
+test: set with GET version skipped
+test: set with EXAT / PXAT version skipped
+test: set with NX and GET version skipped
+test: setex command passed
+test: setnx command passed
+test: setrange command passed
+test: strlen command passed
+test: substr command passed
+test: hdel command passed
+test: hdel with multiple field passed
+test: hexists command passed
+test: hget command passed
+test: hgetall command passed
+test: hincrby command passed
+test: hincrbyfloat command passed
+test: hkeys command passed
+test: hlen command passed
+test: hmget command passed
+test: hmset command passed
+test: hrandfield command version skipped
+test: hrandfield with COUNT version skipped
+test: hrandfield with WITHVALUES version skipped
+test: hscan command passed
+test: hscan with MATCH and COUNT passed
+test: hset command passed
+test: hset command with multiple field and value passed
+test: hsetnx command passed
+test: hstrlen command passed
+test: hvals command passed
+test: bitcount command passed
+test: bitcount with BYTE / BIT version skipped
+test: bitfield command passed
+test: bitfield_ro command version skipped
+test: bitop command passed
+test: bitop command tags skipped
+test: bitpos command passed
+test: bitpos with BYTE / BIT version skipped
+test: getbit command passed
+test: setbit command passed
+test: pfadd command passed
+test: pfcount command passed
+test: pfmerge command passed
+test: pfmerge command tags skipped
+test: geoadd command passed
+test: geoadd with CH / NX / XX version skipped
+test: geodist command passed
+test: geodist with M / KM / FT / MI passed
+test: geohash command passed
+test: geopos command passed
+test: georadius command passed
+test: georadius with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius with COUNT passed
+test: georadius with ASC / DESC passed
+test: georadius with STORE / STOREDIST passed
+test: georadius with STORE / STOREDIST tags skipped
+test: georadius with ANY option for COUNT version skipped
+test: georadius with support for uppercase unit names version skipped
+test: georadius_ro command passed
+test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius_ro with COUNT passed
+test: georadius_ro with ASC / DESC passed
+test: georadius_ro with ANY option for COUNT version skipped
+test: georadiusbymember command passed
+test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember with COUNT passed
+test: georadiusbymember with ASC / DESC passed
+test: georadiusbymember with STORE / STOREDIST passed
+test: georadiusbymember with STORE / STOREDIST tags skipped
+test: georadiusbymember with ANY option for COUNT version skipped
+test: georadiusbymember with support for uppercase unit names version skipped
+test: georadiusbymember_ro command passed
+test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember_ro with COUNT passed
+test: georadiusbymember_ro with ASC / DESC passed
+test: georadiusbymember_ro with ANY option for COUNT version skipped
+test: geosearch command version skipped
+test: geosearch with ASC / DESC version skipped
+test: geosearch with COUNT version skipped
+test: geosearch with WITHCOORD / WITHDIST / WITHHASH version skipped
+test: geosearch with support for uppercase unit names version skipped
+test: geosearchstore command version skipped
+test: geosearchstore command tags skipped
+test: geosearchstore with ASC / DESC version skipped
+test: geosearchstore with ASC / DESC tags skipped
+test: geosearchstore with COUNT version skipped
+test: geosearchstore with COUNT tags skipped
+test: geosearchstore with STOREDIST version skipped
+test: geosearchstore with STOREDIST tags skipped
+test: geosearchstore with support for uppercase unit names version skipped
+test: geosearchstore with support for uppercase unit names tags skipped
+test: dbsize command passed
+test: flushall command passed
+test: flushall with async passed
+test: flushall with sync version skipped
+test: flushdb command passed
+test: flushdb with async passed
+test: flushdb with sync version skipped
+test: swapdb command passed
+test: discard command passed
+test: exec command passed
+test: multi command passed
+test: unwatch command passed
+test: watch command passed
+test: eval command passed
+test: eval_ro command version skipped
+test: evalsha command passed
+test: evalsha_ro command version skipped
+test: fcall command version skipped
+test: fcall_ro command version skipped
+test: function delete command version skipped
+test: function flush command version skipped
+test: function flush with SYNC version skipped
+test: function flush with ASYNC version skipped
+test: function list command version skipped
+test: function load command version skipped
+test: function restore command version skipped
+test: function stats command version skipped
+test: script exists command passed
+test: script flush command passed
+test: script flush with SYNC version skipped
+test: script flush with ASYNC version skipped
+test: script load command passed
+test: xack command passed
+test: xadd command passed
+test: xadd with NOMKSTREAM/MINID/LIMIT version skipped
+test: xadd with EXPLICIT ID version skipped
+test: xclaim command passed
+test: xdel command passed
+test: xgroup create command passed
+test: xgroup create with MKSTREAM passed
+test: xgroup create with ENTRIESREAD version skipped
+test: xgroup createconsumer command version skipped
+test: xgroup delconsumer command passed
+test: xgroup destroy command passed
+test: xgroup setid command passed
+test: xgroup setid with ENTRIESREAD version skipped
+test: xlen command passed
+test: xpending command passed
+test: xrange command passed
+test: xread command passed
+test: xreadgroup command passed
+test: xrevrange command passed
+test: xrevrange command with EXCLUSIVE RANGES version skipped
+test: xtrim command passed
+test: xtrim command with MINID/LIMIT version skipped
+test: psubscribe command passed
+test: psubscribe with RESET version skipped
+test: publish command run test error Connection closed by server.
+test: pubsub channels command passed
+test: pubsub numpat command passed
+test: pubsub numsub command passed
+test: pubsub shardchannels command version skipped
+test: pubsub shardnumsub command version skipped
+test: punsubscribe command passed
+test: spublish command version skipped
+test: ssubscribe command version skipped
+test: subscribe command passed
+test: subscribe with RESET version skipped
+test: sunsubscribe command version skipped
+test: unsubscribe command passed
+-------- The result of tests --------
+Summary: version: 5.0.0, total tests: 219, passed: 219, rate: 100.00%
+</pre>
diff --git a/AliyunTair-6.0.0.html b/AliyunTair-6.0.0.html
new file mode 100644
index 0000000..8aa0cdc
--- /dev/null
+++ b/AliyunTair-6.0.0.html
@@ -0,0 +1,420 @@
+<pre>
+test: del command passed
+test: unlink command passed
+test: rename command passed
+test: rename command tags skipped
+test: renamenx command passed
+test: renamenx command tags skipped
+test: randomkey command passed
+test: exists command passed
+test: ttl command passed
+test: pttl command passed
+test: expire command passed
+test: expire with NX / XX version skipped
+test: expire with GT / LT version skipped
+test: expireat command passed
+test: expireat with NX / XX version skipped
+test: expireat with GT / LT version skipped
+test: pexpire command passed
+test: pexpire with NX / XX version skipped
+test: pexpire with GT / LT version skipped
+test: pexpireat command passed
+test: pexpireat with NX / XX version skipped
+test: pexpireat with GT / LT version skipped
+test: expiretime command version skipped
+test: pexpiretime command version skipped
+test: persist command passed
+test: dump command passed
+test: touch command passed
+test: restore command passed
+test: restore with REPLACE passed
+test: restore with ABSTTL passed
+test: restore with IDLETIME passed
+test: scan command passed
+test: scan with TYPE passed
+test: keys command passed
+test: move command passed
+test: copy command version skipped
+test: copy command tags skipped
+test: type command passed
+test: sort command passed
+test: sort_ro command skipped
+test: set command passed
+test: blmove command version skipped
+test: blmove command tags skipped
+test: blmpop command version skipped
+test: blmpop with COUNT version skipped
+test: blmpop with COUNT tags skipped
+test: blpop command passed
+test: blpop command tags skipped
+test: blpop with double timeout passed
+test: blpop with double timeout tags skipped
+test: brpop command passed
+test: brpop command tags skipped
+test: brpop with double timeout passed
+test: brpop with double timeout tags skipped
+test: brpoplpush command passed
+test: brpoplpush command tags skipped
+test: brpoplpush with double timeout passed
+test: brpoplpush with double timeout tags skipped
+test: lindex command passed
+test: linsert command passed
+test: llen command passed
+test: lmove command version skipped
+test: lmove command tags skipped
+test: lmpop command version skipped
+test: lmpop with COUNT version skipped
+test: lmpop with COUNT tags skipped
+test: lpop command passed
+test: lpop with COUNT version skipped
+test: lpos command version skipped
+test: lpos with RANK version skipped
+test: lpos with COUNT version skipped
+test: lpos with MAXLEN version skipped
+test: lpos with RANK, COUNT and MAXLEN version skipped
+test: lpush command passed
+test: lpush with multiple element passed
+test: lpushx command passed
+test: lpushx with multiple element passed
+test: lrange command passed
+test: lrem command passed
+test: lset command passed
+test: ltrim command passed
+test: rpop command passed
+test: rpop with COUNT version skipped
+test: rpoplpush command passed
+test: rpoplpush command tags skipped
+test: rpush command passed
+test: rpush with multiple element passed
+test: rpushx command passed
+test: rpushx command tags skipped
+test: rpushx with multiple element passed
+test: rpushx with multiple element tags skipped
+test: sadd command passed
+test: sadd command passed
+test: scard command passed
+test: sdiff command passed
+test: sdiff command tags skipped
+test: sdiffstore command passed
+test: sdiffstore command tags skipped
+test: sinter command passed
+test: sinter command tags skipped
+test: sintercard command version skipped
+test: sintercard command tags skipped
+test: sintercard with LIMIT version skipped
+test: sintercard with LIMIT tags skipped
+test: sinterstore command passed
+test: sinterstore command tags skipped
+test: sismember command passed
+test: smembers command passed
+test: smismember command version skipped
+test: smove command passed
+test: smove command tags skipped
+test: spop command passed
+test: spop with COUNT passed
+test: srandmember command passed
+test: srandmember with COUNT passed
+test: srem command passed
+test: srem with multiple member passed
+test: sscan command passed
+test: sscan with MATCH and COUNT passed
+test: sunion command passed
+test: sunion command tags skipped
+test: sunionstore command passed
+test: sunionstore command tags skipped
+test: bzmpop command version skipped
+test: bzmpop command tags skipped
+test: bzmpop with COUNT version skipped
+test: bzmpop with COUNT version skipped
+test: bzpopmax command passed
+test: bzpopmax with double timeout passed
+test: bzpopmin command passed
+test: bzpopmin with double timeout passed
+test: zadd command passed
+test: zadd with multiple elements passed
+test: zadd with XX / NX / CH / INCR passed
+test: zadd with GT / LT version skipped
+test: zcard command passed
+test: zcount command passed
+test: zdiff command version skipped
+test: zdiff command tags skipped
+test: zdiffstore command version skipped
+test: zdiffstore command tags skipped
+test: zincrby command passed
+test: zinter command version skipped
+test: zinter command tags skipped
+test: zinter with WEIGHTS version skipped
+test: zinter with WEIGHTS tags skipped
+test: zinter with AGGREGATE version skipped
+test: zinter with AGGREGATE tags skipped
+test: zinter WITHSCORES version skipped
+test: zinter WITHSCORES tags skipped
+test: zintercard command version skipped
+test: zintercard command tags skipped
+test: zintercard with LIMIT version skipped
+test: zintercard with LIMIT tags skipped
+test: zinterstore command passed
+test: zinterstore command tags skipped
+test: zinterstore with WEIGHTS passed
+test: zinterstore with WEIGHTS tags skipped
+test: zinterstore with AGGREGATE passed
+test: zinterstore with AGGREGATE tags skipped
+test: zlexcount command passed
+test: zmpop command version skipped
+test: zmpop with COUNT version skipped
+test: zmscore command version skipped
+test: zpopmax command passed
+test: zpopmax with COUNT passed
+test: zpopmin command passed
+test: zpopmin command passed
+test: zrandmember command version skipped
+test: zrandmember with COUNT version skipped
+test: zrandmember with WITHSCORES version skipped
+test: zrange command passed
+test: zrange with WITHSCORES passed
+test: zrange with BYSCORE / BYLEX version skipped
+test: zrange with REV version skipped
+test: zrange with LIMIT version skipped
+test: zrangebylex command passed
+test: zrangebylex with LIMIT passed
+test: zrangebyscore command passed
+test: zrangebyscore with LIMIT passed
+test: zrangebyscore with WITHSCORES passed
+test: zrangestore command version skipped
+test: zrangestore command tags skipped
+test: zrangestore with BYSCORE / BYLEX version skipped
+test: zrangestore with BYSCORE / BYLEX tags skipped
+test: zrangestore with REV version skipped
+test: zrangestore with REV tags skipped
+test: zrangestore with LIMIT version skipped
+test: zrangestore with LIMIT tags skipped
+test: zrank command passed
+test: zrank with WITHSCORE version skipped
+test: zrem command passed
+test: zrem with multiple elements passed
+test: zremrangebylex command passed
+test: zremrangebyrank command passed
+test: zremrangebyscore command passed
+test: zrevrange command passed
+test: zrevrange with WITHSCORES passed
+test: zrevrangebylex command passed
+test: zrevrangebylex with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrangebyscore with WITHSCORES passed
+test: zrevrangebyscore with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrank command passed
+test: zrevrank with WITHSCORE version skipped
+test: zscan command passed
+test: zscan with MATCH and COUNT passed
+test: zscore command passed
+test: zunion command version skipped
+test: zunion command tags skipped
+test: zunion with WEIGHTS and AGGREGATE version skipped
+test: zunion with WEIGHTS and AGGREGATE tags skipped
+test: zunion with WITHSCORES version skipped
+test: zunion with WITHSCORES tags skipped
+test: zunionstore command passed
+test: zunionstore command tags skipped
+test: zunionstore with WEIGHTS and AGGREGATE passed
+test: zunionstore with WEIGHTS and AGGREGATE tags skipped
+test: append command passed
+test: decr command passed
+test: decrby command passed
+test: get command passed
+test: getdel command version skipped
+test: getex command version skipped
+test: getex with EX version skipped
+test: getex with PX version skipped
+test: getex with EXAT version skipped
+test: getex with PXAT version skipped
+test: getex with PERSIST version skipped
+test: getrange command passed
+test: getset command passed
+test: incr command passed
+test: incrby command passed
+test: incrbyfloat command passed
+test: lcs command version skipped
+test: lcs command tags skipped
+test: lcs with LEN version skipped
+test: lcs with LEN tags skipped
+test: lcs with IDX version skipped
+test: lcs with IDX tags skipped
+test: lcs with MINMATCHLEN version skipped
+test: lcs with MINMATCHLEN tags skipped
+test: lcs with WITHMATCHLEN version skipped
+test: lcs with WITHMATCHLEN tags skipped
+test: mget command passed
+test: mget command tags skipped
+test: mset command passed
+test: mset command tags skipped
+test: msetnx command passed
+test: msetnx command tags skipped
+test: psetex command passed
+test: set command passed
+test: set with EX / PX passed
+test: set with NX / XX passed
+test: set with KEEPTTL passed
+test: set with GET version skipped
+test: set with EXAT / PXAT version skipped
+test: set with NX and GET version skipped
+test: setex command passed
+test: setnx command passed
+test: setrange command passed
+test: strlen command passed
+test: substr command passed
+test: hdel command passed
+test: hdel with multiple field passed
+test: hexists command passed
+test: hget command passed
+test: hgetall command passed
+test: hincrby command passed
+test: hincrbyfloat command passed
+test: hkeys command passed
+test: hlen command passed
+test: hmget command passed
+test: hmset command passed
+test: hrandfield command version skipped
+test: hrandfield with COUNT version skipped
+test: hrandfield with WITHVALUES version skipped
+test: hscan command passed
+test: hscan with MATCH and COUNT passed
+test: hset command passed
+test: hset command with multiple field and value passed
+test: hsetnx command passed
+test: hstrlen command passed
+test: hvals command passed
+test: bitcount command passed
+test: bitcount with BYTE / BIT version skipped
+test: bitfield command passed
+test: bitfield_ro command passed
+test: bitop command passed
+test: bitop command tags skipped
+test: bitpos command passed
+test: bitpos with BYTE / BIT version skipped
+test: getbit command passed
+test: setbit command passed
+test: pfadd command passed
+test: pfcount command passed
+test: pfmerge command passed
+test: pfmerge command tags skipped
+test: geoadd command passed
+test: geoadd with CH / NX / XX version skipped
+test: geodist command passed
+test: geodist with M / KM / FT / MI passed
+test: geohash command passed
+test: geopos command passed
+test: georadius command passed
+test: georadius with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius with COUNT passed
+test: georadius with ASC / DESC passed
+test: georadius with STORE / STOREDIST passed
+test: georadius with STORE / STOREDIST tags skipped
+test: georadius with ANY option for COUNT version skipped
+test: georadius with support for uppercase unit names version skipped
+test: georadius_ro command passed
+test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius_ro with COUNT passed
+test: georadius_ro with ASC / DESC passed
+test: georadius_ro with ANY option for COUNT version skipped
+test: georadiusbymember command passed
+test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember with COUNT passed
+test: georadiusbymember with ASC / DESC passed
+test: georadiusbymember with STORE / STOREDIST passed
+test: georadiusbymember with STORE / STOREDIST tags skipped
+test: georadiusbymember with ANY option for COUNT version skipped
+test: georadiusbymember with support for uppercase unit names version skipped
+test: georadiusbymember_ro command passed
+test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember_ro with COUNT passed
+test: georadiusbymember_ro with ASC / DESC passed
+test: georadiusbymember_ro with ANY option for COUNT version skipped
+test: geosearch command version skipped
+test: geosearch with ASC / DESC version skipped
+test: geosearch with COUNT version skipped
+test: geosearch with WITHCOORD / WITHDIST / WITHHASH version skipped
+test: geosearch with support for uppercase unit names version skipped
+test: geosearchstore command version skipped
+test: geosearchstore command tags skipped
+test: geosearchstore with ASC / DESC version skipped
+test: geosearchstore with ASC / DESC tags skipped
+test: geosearchstore with COUNT version skipped
+test: geosearchstore with COUNT tags skipped
+test: geosearchstore with STOREDIST version skipped
+test: geosearchstore with STOREDIST tags skipped
+test: geosearchstore with support for uppercase unit names version skipped
+test: geosearchstore with support for uppercase unit names tags skipped
+test: dbsize command passed
+test: flushall command passed
+test: flushall with async passed
+test: flushall with sync version skipped
+test: flushdb command passed
+test: flushdb with async passed
+test: flushdb with sync version skipped
+test: swapdb command passed
+test: discard command passed
+test: exec command passed
+test: multi command passed
+test: unwatch command passed
+test: watch command passed
+test: eval command passed
+test: eval_ro command version skipped
+test: evalsha command passed
+test: evalsha_ro command version skipped
+test: fcall command version skipped
+test: fcall_ro command version skipped
+test: function delete command version skipped
+test: function flush command version skipped
+test: function flush with SYNC version skipped
+test: function flush with ASYNC version skipped
+test: function list command version skipped
+test: function load command version skipped
+test: function restore command version skipped
+test: function stats command version skipped
+test: script exists command passed
+test: script flush command passed
+test: script flush with SYNC version skipped
+test: script flush with ASYNC version skipped
+test: script load command passed
+test: xack command passed
+test: xadd command passed
+test: xadd with NOMKSTREAM/MINID/LIMIT version skipped
+test: xadd with EXPLICIT ID version skipped
+test: xclaim command passed
+test: xdel command passed
+test: xgroup create command passed
+test: xgroup create with MKSTREAM passed
+test: xgroup create with ENTRIESREAD version skipped
+test: xgroup createconsumer command version skipped
+test: xgroup delconsumer command passed
+test: xgroup destroy command passed
+test: xgroup setid command passed
+test: xgroup setid with ENTRIESREAD version skipped
+test: xlen command passed
+test: xpending command passed
+test: xrange command passed
+test: xread command passed
+test: xreadgroup command passed
+test: xrevrange command passed
+test: xrevrange command with EXCLUSIVE RANGES version skipped
+test: xtrim command passed
+test: xtrim command with MINID/LIMIT version skipped
+test: psubscribe command passed
+test: psubscribe with RESET version skipped
+test: publish command run test error Connection closed by server.
+test: pubsub channels command passed
+test: pubsub numpat command passed
+test: pubsub numsub command passed
+test: pubsub shardchannels command version skipped
+test: pubsub shardnumsub command version skipped
+test: punsubscribe command passed
+test: spublish command version skipped
+test: ssubscribe command version skipped
+test: subscribe command passed
+test: subscribe with RESET version skipped
+test: sunsubscribe command version skipped
+test: unsubscribe command run test error Connection closed by server.
+-------- The result of tests --------
+Summary: version: 6.0.0, total tests: 226, passed: 226, rate: 100.00%
+</pre>
diff --git a/AliyunTair-7.0.0.html b/AliyunTair-7.0.0.html
new file mode 100644
index 0000000..7bd3330
--- /dev/null
+++ b/AliyunTair-7.0.0.html
@@ -0,0 +1,420 @@
+<pre>
+test: del command passed
+test: unlink command passed
+test: rename command passed
+test: rename command tags skipped
+test: renamenx command passed
+test: renamenx command tags skipped
+test: randomkey command passed
+test: exists command passed
+test: ttl command passed
+test: pttl command passed
+test: expire command passed
+test: expire with NX / XX passed
+test: expire with GT / LT passed
+test: expireat command passed
+test: expireat with NX / XX passed
+test: expireat with GT / LT passed
+test: pexpire command passed
+test: pexpire with NX / XX passed
+test: pexpire with GT / LT passed
+test: pexpireat command passed
+test: pexpireat with NX / XX passed
+test: pexpireat with GT / LT passed
+test: expiretime command passed
+test: pexpiretime command passed
+test: persist command passed
+test: dump command passed
+test: touch command passed
+test: restore command passed
+test: restore with REPLACE passed
+test: restore with ABSTTL passed
+test: restore with IDLETIME passed
+test: scan command passed
+test: scan with TYPE passed
+test: keys command passed
+test: move command passed
+test: copy command passed
+test: copy command tags skipped
+test: type command passed
+test: sort command passed
+test: sort_ro command skipped
+test: set command passed
+test: blmove command passed
+test: blmove command tags skipped
+test: blmpop command passed
+test: blmpop with COUNT passed
+test: blmpop with COUNT tags skipped
+test: blpop command passed
+test: blpop command tags skipped
+test: blpop with double timeout passed
+test: blpop with double timeout tags skipped
+test: brpop command passed
+test: brpop command tags skipped
+test: brpop with double timeout passed
+test: brpop with double timeout tags skipped
+test: brpoplpush command passed
+test: brpoplpush command tags skipped
+test: brpoplpush with double timeout passed
+test: brpoplpush with double timeout tags skipped
+test: lindex command passed
+test: linsert command passed
+test: llen command passed
+test: lmove command passed
+test: lmove command tags skipped
+test: lmpop command passed
+test: lmpop with COUNT passed
+test: lmpop with COUNT tags skipped
+test: lpop command passed
+test: lpop with COUNT passed
+test: lpos command passed
+test: lpos with RANK passed
+test: lpos with COUNT passed
+test: lpos with MAXLEN passed
+test: lpos with RANK, COUNT and MAXLEN passed
+test: lpush command passed
+test: lpush with multiple element passed
+test: lpushx command passed
+test: lpushx with multiple element passed
+test: lrange command passed
+test: lrem command passed
+test: lset command passed
+test: ltrim command passed
+test: rpop command passed
+test: rpop with COUNT passed
+test: rpoplpush command passed
+test: rpoplpush command tags skipped
+test: rpush command passed
+test: rpush with multiple element passed
+test: rpushx command passed
+test: rpushx command tags skipped
+test: rpushx with multiple element passed
+test: rpushx with multiple element tags skipped
+test: sadd command passed
+test: sadd command passed
+test: scard command passed
+test: sdiff command passed
+test: sdiff command tags skipped
+test: sdiffstore command passed
+test: sdiffstore command tags skipped
+test: sinter command passed
+test: sinter command tags skipped
+test: sintercard command passed
+test: sintercard command tags skipped
+test: sintercard with LIMIT passed
+test: sintercard with LIMIT tags skipped
+test: sinterstore command passed
+test: sinterstore command tags skipped
+test: sismember command passed
+test: smembers command passed
+test: smismember command passed
+test: smove command passed
+test: smove command tags skipped
+test: spop command passed
+test: spop with COUNT passed
+test: srandmember command passed
+test: srandmember with COUNT passed
+test: srem command passed
+test: srem with multiple member passed
+test: sscan command passed
+test: sscan with MATCH and COUNT passed
+test: sunion command passed
+test: sunion command tags skipped
+test: sunionstore command passed
+test: sunionstore command tags skipped
+test: bzmpop command passed
+test: bzmpop command tags skipped
+test: bzmpop with COUNT passed
+test: bzmpop with COUNT passed
+test: bzpopmax command passed
+test: bzpopmax with double timeout passed
+test: bzpopmin command passed
+test: bzpopmin with double timeout passed
+test: zadd command passed
+test: zadd with multiple elements passed
+test: zadd with XX / NX / CH / INCR passed
+test: zadd with GT / LT passed
+test: zcard command passed
+test: zcount command passed
+test: zdiff command passed
+test: zdiff command tags skipped
+test: zdiffstore command passed
+test: zdiffstore command tags skipped
+test: zincrby command passed
+test: zinter command passed
+test: zinter command tags skipped
+test: zinter with WEIGHTS passed
+test: zinter with WEIGHTS tags skipped
+test: zinter with AGGREGATE passed
+test: zinter with AGGREGATE tags skipped
+test: zinter WITHSCORES passed
+test: zinter WITHSCORES tags skipped
+test: zintercard command passed
+test: zintercard command tags skipped
+test: zintercard with LIMIT passed
+test: zintercard with LIMIT tags skipped
+test: zinterstore command passed
+test: zinterstore command tags skipped
+test: zinterstore with WEIGHTS passed
+test: zinterstore with WEIGHTS tags skipped
+test: zinterstore with AGGREGATE passed
+test: zinterstore with AGGREGATE tags skipped
+test: zlexcount command passed
+test: zmpop command passed
+test: zmpop with COUNT passed
+test: zmscore command passed
+test: zpopmax command passed
+test: zpopmax with COUNT passed
+test: zpopmin command passed
+test: zpopmin command passed
+test: zrandmember command passed
+test: zrandmember with COUNT passed
+test: zrandmember with WITHSCORES passed
+test: zrange command passed
+test: zrange with WITHSCORES passed
+test: zrange with BYSCORE / BYLEX passed
+test: zrange with REV passed
+test: zrange with LIMIT passed
+test: zrangebylex command passed
+test: zrangebylex with LIMIT passed
+test: zrangebyscore command passed
+test: zrangebyscore with LIMIT passed
+test: zrangebyscore with WITHSCORES passed
+test: zrangestore command passed
+test: zrangestore command tags skipped
+test: zrangestore with BYSCORE / BYLEX passed
+test: zrangestore with BYSCORE / BYLEX tags skipped
+test: zrangestore with REV passed
+test: zrangestore with REV tags skipped
+test: zrangestore with LIMIT passed
+test: zrangestore with LIMIT tags skipped
+test: zrank command passed
+test: zrank with WITHSCORE version skipped
+test: zrem command passed
+test: zrem with multiple elements passed
+test: zremrangebylex command passed
+test: zremrangebyrank command passed
+test: zremrangebyscore command passed
+test: zrevrange command passed
+test: zrevrange with WITHSCORES passed
+test: zrevrangebylex command passed
+test: zrevrangebylex with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrangebyscore with WITHSCORES passed
+test: zrevrangebyscore with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrank command passed
+test: zrevrank with WITHSCORE version skipped
+test: zscan command passed
+test: zscan with MATCH and COUNT passed
+test: zscore command passed
+test: zunion command passed
+test: zunion command tags skipped
+test: zunion with WEIGHTS and AGGREGATE passed
+test: zunion with WEIGHTS and AGGREGATE tags skipped
+test: zunion with WITHSCORES passed
+test: zunion with WITHSCORES tags skipped
+test: zunionstore command passed
+test: zunionstore command tags skipped
+test: zunionstore with WEIGHTS and AGGREGATE passed
+test: zunionstore with WEIGHTS and AGGREGATE tags skipped
+test: append command passed
+test: decr command passed
+test: decrby command passed
+test: get command passed
+test: getdel command passed
+test: getex command passed
+test: getex with EX passed
+test: getex with PX passed
+test: getex with EXAT passed
+test: getex with PXAT passed
+test: getex with PERSIST passed
+test: getrange command passed
+test: getset command passed
+test: incr command passed
+test: incrby command passed
+test: incrbyfloat command passed
+test: lcs command passed
+test: lcs command tags skipped
+test: lcs with LEN passed
+test: lcs with LEN tags skipped
+test: lcs with IDX passed
+test: lcs with IDX tags skipped
+test: lcs with MINMATCHLEN passed
+test: lcs with MINMATCHLEN tags skipped
+test: lcs with WITHMATCHLEN passed
+test: lcs with WITHMATCHLEN tags skipped
+test: mget command passed
+test: mget command tags skipped
+test: mset command passed
+test: mset command tags skipped
+test: msetnx command passed
+test: msetnx command tags skipped
+test: psetex command passed
+test: set command passed
+test: set with EX / PX passed
+test: set with NX / XX passed
+test: set with KEEPTTL passed
+test: set with GET passed
+test: set with EXAT / PXAT passed
+test: set with NX and GET passed
+test: setex command passed
+test: setnx command passed
+test: setrange command passed
+test: strlen command passed
+test: substr command passed
+test: hdel command passed
+test: hdel with multiple field passed
+test: hexists command passed
+test: hget command passed
+test: hgetall command passed
+test: hincrby command passed
+test: hincrbyfloat command passed
+test: hkeys command passed
+test: hlen command passed
+test: hmget command passed
+test: hmset command passed
+test: hrandfield command passed
+test: hrandfield with COUNT passed
+test: hrandfield with WITHVALUES passed
+test: hscan command passed
+test: hscan with MATCH and COUNT passed
+test: hset command passed
+test: hset command with multiple field and value passed
+test: hsetnx command passed
+test: hstrlen command passed
+test: hvals command passed
+test: bitcount command passed
+test: bitcount with BYTE / BIT passed
+test: bitfield command passed
+test: bitfield_ro command passed
+test: bitop command passed
+test: bitop command tags skipped
+test: bitpos command passed
+test: bitpos with BYTE / BIT passed
+test: getbit command passed
+test: setbit command passed
+test: pfadd command passed
+test: pfcount command passed
+test: pfmerge command passed
+test: pfmerge command tags skipped
+test: geoadd command passed
+test: geoadd with CH / NX / XX passed
+test: geodist command passed
+test: geodist with M / KM / FT / MI passed
+test: geohash command passed
+test: geopos command passed
+test: georadius command passed
+test: georadius with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius with COUNT passed
+test: georadius with ASC / DESC passed
+test: georadius with STORE / STOREDIST passed
+test: georadius with STORE / STOREDIST tags skipped
+test: georadius with ANY option for COUNT passed
+test: georadius with support for uppercase unit names passed
+test: georadius_ro command passed
+test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius_ro with COUNT passed
+test: georadius_ro with ASC / DESC passed
+test: georadius_ro with ANY option for COUNT passed
+test: georadiusbymember command passed
+test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember with COUNT passed
+test: georadiusbymember with ASC / DESC passed
+test: georadiusbymember with STORE / STOREDIST passed
+test: georadiusbymember with STORE / STOREDIST tags skipped
+test: georadiusbymember with ANY option for COUNT passed
+test: georadiusbymember with support for uppercase unit names passed
+test: georadiusbymember_ro command passed
+test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember_ro with COUNT passed
+test: georadiusbymember_ro with ASC / DESC passed
+test: georadiusbymember_ro with ANY option for COUNT passed
+test: geosearch command passed
+test: geosearch with ASC / DESC passed
+test: geosearch with COUNT passed
+test: geosearch with WITHCOORD / WITHDIST / WITHHASH passed
+test: geosearch with support for uppercase unit names passed
+test: geosearchstore command passed
+test: geosearchstore command tags skipped
+test: geosearchstore with ASC / DESC passed
+test: geosearchstore with ASC / DESC tags skipped
+test: geosearchstore with COUNT passed
+test: geosearchstore with COUNT tags skipped
+test: geosearchstore with STOREDIST passed
+test: geosearchstore with STOREDIST tags skipped
+test: geosearchstore with support for uppercase unit names passed
+test: geosearchstore with support for uppercase unit names tags skipped
+test: dbsize command passed
+test: flushall command passed
+test: flushall with async passed
+test: flushall with sync passed
+test: flushdb command passed
+test: flushdb with async passed
+test: flushdb with sync passed
+test: swapdb command passed
+test: discard command passed
+test: exec command passed
+test: multi command passed
+test: unwatch command passed
+test: watch command passed
+test: eval command passed
+test: eval_ro command passed
+test: evalsha command passed
+test: evalsha_ro command passed
+test: fcall command passed
+test: fcall_ro command passed
+test: function delete command passed
+test: function flush command passed
+test: function flush with SYNC passed
+test: function flush with ASYNC passed
+test: function list command passed
+test: function load command passed
+test: function restore command passed
+test: function stats command passed
+test: script exists command passed
+test: script flush command passed
+test: script flush with SYNC passed
+test: script flush with ASYNC passed
+test: script load command passed
+test: xack command passed
+test: xadd command passed
+test: xadd with NOMKSTREAM/MINID/LIMIT passed
+test: xadd with EXPLICIT ID passed
+test: xclaim command passed
+test: xdel command passed
+test: xgroup create command passed
+test: xgroup create with MKSTREAM passed
+test: xgroup create with ENTRIESREAD passed
+test: xgroup createconsumer command passed
+test: xgroup delconsumer command passed
+test: xgroup destroy command passed
+test: xgroup setid command passed
+test: xgroup setid with ENTRIESREAD passed
+test: xlen command passed
+test: xpending command passed
+test: xrange command passed
+test: xread command passed
+test: xreadgroup command passed
+test: xrevrange command passed
+test: xrevrange command with EXCLUSIVE RANGES passed
+test: xtrim command passed
+test: xtrim command with MINID/LIMIT passed
+test: psubscribe command passed
+test: psubscribe with RESET run test error Connection closed by server.
+test: publish command passed
+test: pubsub channels command passed
+test: pubsub numpat command passed
+test: pubsub numsub command passed
+test: pubsub shardchannels command passed
+test: pubsub shardnumsub command passed
+test: punsubscribe command passed
+test: spublish command passed
+test: ssubscribe command passed
+test: subscribe command passed
+test: subscribe with RESET run test error Connection closed by server.
+test: sunsubscribe command passed
+test: unsubscribe command passed
+-------- The result of tests --------
+Summary: version: 7.0.0, total tests: 348, passed: 348, rate: 100.00%
+</pre>
diff --git a/AliyunTairCluster-4.0.0.html b/AliyunTairCluster-4.0.0.html
new file mode 100644
index 0000000..a61ea07
--- /dev/null
+++ b/AliyunTairCluster-4.0.0.html
@@ -0,0 +1,458 @@
+<pre>
+test: del command passed
+test: unlink command passed
+test: rename command failed
+test: rename command tags skipped
+test: renamenx command failed
+test: renamenx command tags skipped
+test: randomkey command failed
+test: exists command passed
+test: ttl command passed
+test: pttl command passed
+test: expire command passed
+test: expire with NX / XX version skipped
+test: expire with GT / LT version skipped
+test: expireat command passed
+test: expireat with NX / XX version skipped
+test: expireat with GT / LT version skipped
+test: pexpire command passed
+test: pexpire with NX / XX version skipped
+test: pexpire with GT / LT version skipped
+test: pexpireat command passed
+test: pexpireat with NX / XX version skipped
+test: pexpireat with GT / LT version skipped
+test: expiretime command version skipped
+test: pexpiretime command version skipped
+test: persist command passed
+test: dump command passed
+test: touch command passed
+test: restore command passed
+test: restore with REPLACE passed
+test: restore with ABSTTL version skipped
+test: restore with IDLETIME version skipped
+test: scan command failed
+test: scan with TYPE version skipped
+test: keys command failed
+test: move command passed
+test: copy command version skipped
+test: copy command tags skipped
+test: type command passed
+test: sort command passed
+test: sort_ro command skipped
+test: set command passed
+test: blmove command version skipped
+test: blmove command tags skipped
+test: blmpop command version skipped
+test: blmpop with COUNT version skipped
+test: blmpop with COUNT tags skipped
+test: blpop command failed
+test: blpop command tags skipped
+test: blpop with double timeout version skipped
+test: blpop with double timeout tags skipped
+test: brpop command failed
+test: brpop command tags skipped
+test: brpop with double timeout version skipped
+test: brpop with double timeout tags skipped
+test: brpoplpush command failed
+test: brpoplpush command tags skipped
+test: brpoplpush with double timeout version skipped
+test: brpoplpush with double timeout tags skipped
+test: lindex command passed
+test: linsert command passed
+test: llen command passed
+test: lmove command version skipped
+test: lmove command tags skipped
+test: lmpop command version skipped
+test: lmpop with COUNT version skipped
+test: lmpop with COUNT tags skipped
+test: lpop command passed
+test: lpop with COUNT version skipped
+test: lpos command version skipped
+test: lpos with RANK version skipped
+test: lpos with COUNT version skipped
+test: lpos with MAXLEN version skipped
+test: lpos with RANK, COUNT and MAXLEN version skipped
+test: lpush command passed
+test: lpush with multiple element passed
+test: lpushx command passed
+test: lpushx with multiple element passed
+test: lrange command passed
+test: lrem command passed
+test: lset command passed
+test: ltrim command passed
+test: rpop command passed
+test: rpop with COUNT version skipped
+test: rpoplpush command failed
+test: rpoplpush command tags skipped
+test: rpush command passed
+test: rpush with multiple element passed
+test: rpushx command passed
+test: rpushx command tags skipped
+test: rpushx with multiple element passed
+test: rpushx with multiple element tags skipped
+test: sadd command passed
+test: sadd command passed
+test: scard command passed
+test: sdiff command failed
+test: sdiff command tags skipped
+test: sdiffstore command failed
+test: sdiffstore command tags skipped
+test: sinter command failed
+test: sinter command tags skipped
+test: sintercard command version skipped
+test: sintercard command tags skipped
+test: sintercard with LIMIT version skipped
+test: sintercard with LIMIT tags skipped
+test: sinterstore command failed
+test: sinterstore command tags skipped
+test: sismember command passed
+test: smembers command passed
+test: smismember command version skipped
+test: smove command failed
+test: smove command tags skipped
+test: spop command passed
+test: spop with COUNT passed
+test: srandmember command passed
+test: srandmember with COUNT passed
+test: srem command passed
+test: srem with multiple member passed
+test: sscan command passed
+test: sscan with MATCH and COUNT passed
+test: sunion command failed
+test: sunion command tags skipped
+test: sunionstore command failed
+test: sunionstore command tags skipped
+test: bzmpop command version skipped
+test: bzmpop command tags skipped
+test: bzmpop with COUNT version skipped
+test: bzmpop with COUNT version skipped
+test: bzpopmax command version skipped
+test: bzpopmax with double timeout version skipped
+test: bzpopmin command version skipped
+test: bzpopmin with double timeout version skipped
+test: zadd command passed
+test: zadd with multiple elements passed
+test: zadd with XX / NX / CH / INCR passed
+test: zadd with GT / LT version skipped
+test: zcard command passed
+test: zcount command passed
+test: zdiff command version skipped
+test: zdiff command tags skipped
+test: zdiffstore command version skipped
+test: zdiffstore command tags skipped
+test: zincrby command passed
+test: zinter command version skipped
+test: zinter command tags skipped
+test: zinter with WEIGHTS version skipped
+test: zinter with WEIGHTS tags skipped
+test: zinter with AGGREGATE version skipped
+test: zinter with AGGREGATE tags skipped
+test: zinter WITHSCORES version skipped
+test: zinter WITHSCORES tags skipped
+test: zintercard command version skipped
+test: zintercard command tags skipped
+test: zintercard with LIMIT version skipped
+test: zintercard with LIMIT tags skipped
+test: zinterstore command failed
+test: zinterstore command tags skipped
+test: zinterstore with WEIGHTS failed
+test: zinterstore with WEIGHTS tags skipped
+test: zinterstore with AGGREGATE failed
+test: zinterstore with AGGREGATE tags skipped
+test: zlexcount command passed
+test: zmpop command version skipped
+test: zmpop with COUNT version skipped
+test: zmscore command version skipped
+test: zpopmax command version skipped
+test: zpopmax with COUNT version skipped
+test: zpopmin command version skipped
+test: zpopmin command version skipped
+test: zrandmember command version skipped
+test: zrandmember with COUNT version skipped
+test: zrandmember with WITHSCORES version skipped
+test: zrange command passed
+test: zrange with WITHSCORES passed
+test: zrange with BYSCORE / BYLEX version skipped
+test: zrange with REV version skipped
+test: zrange with LIMIT version skipped
+test: zrangebylex command passed
+test: zrangebylex with LIMIT passed
+test: zrangebyscore command passed
+test: zrangebyscore with LIMIT passed
+test: zrangebyscore with WITHSCORES passed
+test: zrangestore command version skipped
+test: zrangestore command tags skipped
+test: zrangestore with BYSCORE / BYLEX version skipped
+test: zrangestore with BYSCORE / BYLEX tags skipped
+test: zrangestore with REV version skipped
+test: zrangestore with REV tags skipped
+test: zrangestore with LIMIT version skipped
+test: zrangestore with LIMIT tags skipped
+test: zrank command passed
+test: zrank with WITHSCORE version skipped
+test: zrem command passed
+test: zrem with multiple elements passed
+test: zremrangebylex command passed
+test: zremrangebyrank command passed
+test: zremrangebyscore command passed
+test: zrevrange command passed
+test: zrevrange with WITHSCORES passed
+test: zrevrangebylex command passed
+test: zrevrangebylex with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrangebyscore with WITHSCORES passed
+test: zrevrangebyscore with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrank command passed
+test: zrevrank with WITHSCORE version skipped
+test: zscan command passed
+test: zscan with MATCH and COUNT passed
+test: zscore command passed
+test: zunion command version skipped
+test: zunion command tags skipped
+test: zunion with WEIGHTS and AGGREGATE version skipped
+test: zunion with WEIGHTS and AGGREGATE tags skipped
+test: zunion with WITHSCORES version skipped
+test: zunion with WITHSCORES tags skipped
+test: zunionstore command failed
+test: zunionstore command tags skipped
+test: zunionstore with WEIGHTS and AGGREGATE failed
+test: zunionstore with WEIGHTS and AGGREGATE tags skipped
+test: append command passed
+test: decr command passed
+test: decrby command passed
+test: get command passed
+test: getdel command version skipped
+test: getex command version skipped
+test: getex with EX version skipped
+test: getex with PX version skipped
+test: getex with EXAT version skipped
+test: getex with PXAT version skipped
+test: getex with PERSIST version skipped
+test: getrange command passed
+test: getset command passed
+test: incr command passed
+test: incrby command passed
+test: incrbyfloat command passed
+test: lcs command version skipped
+test: lcs command tags skipped
+test: lcs with LEN version skipped
+test: lcs with LEN tags skipped
+test: lcs with IDX version skipped
+test: lcs with IDX tags skipped
+test: lcs with MINMATCHLEN version skipped
+test: lcs with MINMATCHLEN tags skipped
+test: lcs with WITHMATCHLEN version skipped
+test: lcs with WITHMATCHLEN tags skipped
+test: mget command failed
+test: mget command tags skipped
+test: mset command failed
+test: mset command tags skipped
+test: msetnx command failed
+test: msetnx command tags skipped
+test: psetex command passed
+test: set command passed
+test: set with EX / PX passed
+test: set with NX / XX passed
+test: set with KEEPTTL version skipped
+test: set with GET version skipped
+test: set with EXAT / PXAT version skipped
+test: set with NX and GET version skipped
+test: setex command passed
+test: setnx command passed
+test: setrange command passed
+test: strlen command passed
+test: substr command passed
+test: hdel command passed
+test: hdel with multiple field passed
+test: hexists command passed
+test: hget command passed
+test: hgetall command passed
+test: hincrby command passed
+test: hincrbyfloat command passed
+test: hkeys command passed
+test: hlen command passed
+test: hmget command passed
+test: hmset command passed
+test: hrandfield command version skipped
+test: hrandfield with COUNT version skipped
+test: hrandfield with WITHVALUES version skipped
+test: hscan command passed
+test: hscan with MATCH and COUNT passed
+test: hset command passed
+test: hset command with multiple field and value passed
+test: hsetnx command passed
+test: hstrlen command passed
+test: hvals command passed
+test: bitcount command passed
+test: bitcount with BYTE / BIT version skipped
+test: bitfield command passed
+test: bitfield_ro command version skipped
+test: bitop command failed
+test: bitop command tags skipped
+test: bitpos command passed
+test: bitpos with BYTE / BIT version skipped
+test: getbit command passed
+test: setbit command passed
+test: pfadd command passed
+test: pfcount command passed
+test: pfmerge command failed
+test: pfmerge command tags skipped
+test: geoadd command passed
+test: geoadd with CH / NX / XX version skipped
+test: geodist command passed
+test: geodist with M / KM / FT / MI passed
+test: geohash command passed
+test: geopos command passed
+test: georadius command passed
+test: georadius with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius with COUNT passed
+test: georadius with ASC / DESC passed
+test: georadius with STORE / STOREDIST failed
+test: georadius with STORE / STOREDIST tags skipped
+test: georadius with ANY option for COUNT version skipped
+test: georadius with support for uppercase unit names version skipped
+test: georadius_ro command passed
+test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius_ro with COUNT passed
+test: georadius_ro with ASC / DESC passed
+test: georadius_ro with ANY option for COUNT version skipped
+test: georadiusbymember command passed
+test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember with COUNT passed
+test: georadiusbymember with ASC / DESC passed
+test: georadiusbymember with STORE / STOREDIST failed
+test: georadiusbymember with STORE / STOREDIST tags skipped
+test: georadiusbymember with ANY option for COUNT version skipped
+test: georadiusbymember with support for uppercase unit names version skipped
+test: georadiusbymember_ro command passed
+test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember_ro with COUNT passed
+test: georadiusbymember_ro with ASC / DESC passed
+test: georadiusbymember_ro with ANY option for COUNT version skipped
+test: geosearch command version skipped
+test: geosearch with ASC / DESC version skipped
+test: geosearch with COUNT version skipped
+test: geosearch with WITHCOORD / WITHDIST / WITHHASH version skipped
+test: geosearch with support for uppercase unit names version skipped
+test: geosearchstore command version skipped
+test: geosearchstore command tags skipped
+test: geosearchstore with ASC / DESC version skipped
+test: geosearchstore with ASC / DESC tags skipped
+test: geosearchstore with COUNT version skipped
+test: geosearchstore with COUNT tags skipped
+test: geosearchstore with STOREDIST version skipped
+test: geosearchstore with STOREDIST tags skipped
+test: geosearchstore with support for uppercase unit names version skipped
+test: geosearchstore with support for uppercase unit names tags skipped
+test: dbsize command passed
+test: flushall command passed
+test: flushall with async passed
+test: flushall with sync version skipped
+test: flushdb command passed
+test: flushdb with async passed
+test: flushdb with sync version skipped
+test: swapdb command failed
+test: discard command failed
+test: exec command failed
+test: multi command failed
+test: unwatch command failed
+test: watch command failed
+test: eval command failed
+test: eval_ro command version skipped
+test: evalsha command failed
+test: evalsha_ro command version skipped
+test: fcall command version skipped
+test: fcall_ro command version skipped
+test: function delete command version skipped
+test: function flush command version skipped
+test: function flush with SYNC version skipped
+test: function flush with ASYNC version skipped
+test: function list command version skipped
+test: function load command version skipped
+test: function restore command version skipped
+test: function stats command version skipped
+test: script exists command passed
+test: script flush command passed
+test: script flush with SYNC version skipped
+test: script flush with ASYNC version skipped
+test: script load command passed
+test: xack command version skipped
+test: xadd command version skipped
+test: xadd with NOMKSTREAM/MINID/LIMIT version skipped
+test: xadd with EXPLICIT ID version skipped
+test: xclaim command version skipped
+test: xdel command version skipped
+test: xgroup create command version skipped
+test: xgroup create with MKSTREAM version skipped
+test: xgroup create with ENTRIESREAD version skipped
+test: xgroup createconsumer command version skipped
+test: xgroup delconsumer command version skipped
+test: xgroup destroy command version skipped
+test: xgroup setid command version skipped
+test: xgroup setid with ENTRIESREAD version skipped
+test: xlen command version skipped
+test: xpending command version skipped
+test: xrange command version skipped
+test: xread command version skipped
+test: xreadgroup command version skipped
+test: xrevrange command version skipped
+test: xrevrange command with EXCLUSIVE RANGES version skipped
+test: xtrim command version skipped
+test: xtrim command with MINID/LIMIT version skipped
+test: psubscribe command failed
+test: psubscribe with RESET version skipped
+test: publish command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub channels command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub numpat command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub numsub command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub shardchannels command version skipped
+test: pubsub shardnumsub command version skipped
+test: punsubscribe command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: spublish command version skipped
+test: ssubscribe command version skipped
+test: subscribe command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: subscribe with RESET version skipped
+test: sunsubscribe command version skipped
+test: unsubscribe command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+-------- The result of tests --------
+Summary: version: 4.0.0, total tests: 189, passed: 152, rate: 80.42%
+This is failed tests for 4.0.0:
+FailedTest(name='rename command', reason=RedisClusterException('rename - all keys must map to the same key slot'))
+FailedTest(name='renamenx command', reason=RedisClusterException('renamenx - all keys must map to the same key slot'))
+FailedTest(name='randomkey command', reason='expected: k, result: None')
+FailedTest(name='keys command', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='sdiff command', reason=RedisClusterException('sdiff - all keys must map to the same key slot'))
+FailedTest(name='sdiffstore command', reason=RedisClusterException('sdiffstore - all keys must map to the same key slot'))
+FailedTest(name='sinter command', reason=RedisClusterException('sinter - all keys must map to the same key slot'))
+FailedTest(name='sinterstore command', reason=RedisClusterException('sinterstore - all keys must map to the same key slot'))
+FailedTest(name='smove command', reason=RedisClusterException('smove - all keys must map to the same key slot'))
+FailedTest(name='sunion command', reason=RedisClusterException('sunion - all keys must map to the same key slot'))
+FailedTest(name='sunionstore command', reason=RedisClusterException('sunionstore - all keys must map to the same key slot'))
+FailedTest(name='mget command', reason=RedisClusterException('mget - all keys must map to the same key slot'))
+FailedTest(name='swapdb command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('swapdb', '0', '1')"))
+FailedTest(name='rpoplpush command', reason=RedisClusterException('rpoplpush - all keys must map to the same key slot'))
+FailedTest(name='exec command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='multi command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='bitop command', reason=RedisClusterException('bitop - all keys must map to the same key slot'))
+FailedTest(name='eval command', reason=ResponseError("for redis cluster, eval/evalsha/fcall number of keys can't be negative or zero"))
+FailedTest(name='evalsha command', reason=ResponseError("for redis cluster, eval/evalsha/fcall number of keys can't be negative or zero"))
+FailedTest(name='brpoplpush command', reason=RedisClusterException('brpoplpush - all keys must map to the same key slot'))
+FailedTest(name='unwatch command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('unwatch',)"))
+FailedTest(name='watch command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('unwatch',)"))
+FailedTest(name='scan command', reason="expected: ['0', ['k']], result: ({'172.16.0.175:6379': 72057594037927936}, ['k'])")
+FailedTest(name='blpop command', reason=RedisClusterException('blpop - all keys must map to the same key slot'))
+FailedTest(name='brpop command', reason=RedisClusterException('brpop - all keys must map to the same key slot'))
+FailedTest(name='zinterstore command', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zinterstore with WEIGHTS', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zinterstore with AGGREGATE', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zunionstore command', reason=RedisClusterException('zunionstore - all keys must map to the same key slot'))
+FailedTest(name='zunionstore with WEIGHTS and AGGREGATE', reason=RedisClusterException('zunionstore - all keys must map to the same key slot'))
+FailedTest(name='discard command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='psubscribe command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('quit',)"))
+FailedTest(name='georadius with STORE / STOREDIST', reason=RedisClusterException('georadius - all keys must map to the same key slot'))
+FailedTest(name='georadiusbymember with STORE / STOREDIST', reason=RedisClusterException('georadiusbymember - all keys must map to the same key slot'))
+FailedTest(name='pfmerge command', reason=RedisClusterException('pfmerge - all keys must map to the same key slot'))
+FailedTest(name='mset command', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='msetnx command', reason=RedisClusterException('msetnx - all keys must map to the same key slot'))
+</pre>
diff --git a/AliyunTairCluster-5.0.0.html b/AliyunTairCluster-5.0.0.html
new file mode 100644
index 0000000..4906b77
--- /dev/null
+++ b/AliyunTairCluster-5.0.0.html
@@ -0,0 +1,457 @@
+<pre>
+test: del command passed
+test: unlink command passed
+test: rename command failed
+test: rename command tags skipped
+test: renamenx command failed
+test: renamenx command tags skipped
+test: randomkey command passed
+test: exists command passed
+test: ttl command passed
+test: pttl command passed
+test: expire command passed
+test: expire with NX / XX version skipped
+test: expire with GT / LT version skipped
+test: expireat command passed
+test: expireat with NX / XX version skipped
+test: expireat with GT / LT version skipped
+test: pexpire command passed
+test: pexpire with NX / XX version skipped
+test: pexpire with GT / LT version skipped
+test: pexpireat command passed
+test: pexpireat with NX / XX version skipped
+test: pexpireat with GT / LT version skipped
+test: expiretime command version skipped
+test: pexpiretime command version skipped
+test: persist command passed
+test: dump command passed
+test: touch command passed
+test: restore command passed
+test: restore with REPLACE passed
+test: restore with ABSTTL passed
+test: restore with IDLETIME passed
+test: scan command failed
+test: scan with TYPE version skipped
+test: keys command failed
+test: move command passed
+test: copy command version skipped
+test: copy command tags skipped
+test: type command passed
+test: sort command passed
+test: sort_ro command skipped
+test: set command passed
+test: blmove command version skipped
+test: blmove command tags skipped
+test: blmpop command version skipped
+test: blmpop with COUNT version skipped
+test: blmpop with COUNT tags skipped
+test: blpop command failed
+test: blpop command tags skipped
+test: blpop with double timeout version skipped
+test: blpop with double timeout tags skipped
+test: brpop command failed
+test: brpop command tags skipped
+test: brpop with double timeout version skipped
+test: brpop with double timeout tags skipped
+test: brpoplpush command failed
+test: brpoplpush command tags skipped
+test: brpoplpush with double timeout version skipped
+test: brpoplpush with double timeout tags skipped
+test: lindex command passed
+test: linsert command passed
+test: llen command passed
+test: lmove command version skipped
+test: lmove command tags skipped
+test: lmpop command version skipped
+test: lmpop with COUNT version skipped
+test: lmpop with COUNT tags skipped
+test: lpop command passed
+test: lpop with COUNT version skipped
+test: lpos command version skipped
+test: lpos with RANK version skipped
+test: lpos with COUNT version skipped
+test: lpos with MAXLEN version skipped
+test: lpos with RANK, COUNT and MAXLEN version skipped
+test: lpush command passed
+test: lpush with multiple element passed
+test: lpushx command passed
+test: lpushx with multiple element passed
+test: lrange command passed
+test: lrem command passed
+test: lset command passed
+test: ltrim command passed
+test: rpop command passed
+test: rpop with COUNT version skipped
+test: rpoplpush command failed
+test: rpoplpush command tags skipped
+test: rpush command passed
+test: rpush with multiple element passed
+test: rpushx command passed
+test: rpushx command tags skipped
+test: rpushx with multiple element passed
+test: rpushx with multiple element tags skipped
+test: sadd command passed
+test: sadd command passed
+test: scard command passed
+test: sdiff command failed
+test: sdiff command tags skipped
+test: sdiffstore command failed
+test: sdiffstore command tags skipped
+test: sinter command failed
+test: sinter command tags skipped
+test: sintercard command version skipped
+test: sintercard command tags skipped
+test: sintercard with LIMIT version skipped
+test: sintercard with LIMIT tags skipped
+test: sinterstore command failed
+test: sinterstore command tags skipped
+test: sismember command passed
+test: smembers command passed
+test: smismember command version skipped
+test: smove command failed
+test: smove command tags skipped
+test: spop command passed
+test: spop with COUNT passed
+test: srandmember command passed
+test: srandmember with COUNT passed
+test: srem command passed
+test: srem with multiple member passed
+test: sscan command passed
+test: sscan with MATCH and COUNT passed
+test: sunion command failed
+test: sunion command tags skipped
+test: sunionstore command failed
+test: sunionstore command tags skipped
+test: bzmpop command version skipped
+test: bzmpop command tags skipped
+test: bzmpop with COUNT version skipped
+test: bzmpop with COUNT version skipped
+test: bzpopmax command passed
+test: bzpopmax with double timeout version skipped
+test: bzpopmin command passed
+test: bzpopmin with double timeout version skipped
+test: zadd command passed
+test: zadd with multiple elements passed
+test: zadd with XX / NX / CH / INCR passed
+test: zadd with GT / LT version skipped
+test: zcard command passed
+test: zcount command passed
+test: zdiff command version skipped
+test: zdiff command tags skipped
+test: zdiffstore command version skipped
+test: zdiffstore command tags skipped
+test: zincrby command passed
+test: zinter command version skipped
+test: zinter command tags skipped
+test: zinter with WEIGHTS version skipped
+test: zinter with WEIGHTS tags skipped
+test: zinter with AGGREGATE version skipped
+test: zinter with AGGREGATE tags skipped
+test: zinter WITHSCORES version skipped
+test: zinter WITHSCORES tags skipped
+test: zintercard command version skipped
+test: zintercard command tags skipped
+test: zintercard with LIMIT version skipped
+test: zintercard with LIMIT tags skipped
+test: zinterstore command failed
+test: zinterstore command tags skipped
+test: zinterstore with WEIGHTS failed
+test: zinterstore with WEIGHTS tags skipped
+test: zinterstore with AGGREGATE failed
+test: zinterstore with AGGREGATE tags skipped
+test: zlexcount command passed
+test: zmpop command version skipped
+test: zmpop with COUNT version skipped
+test: zmscore command version skipped
+test: zpopmax command passed
+test: zpopmax with COUNT passed
+test: zpopmin command passed
+test: zpopmin command passed
+test: zrandmember command version skipped
+test: zrandmember with COUNT version skipped
+test: zrandmember with WITHSCORES version skipped
+test: zrange command passed
+test: zrange with WITHSCORES passed
+test: zrange with BYSCORE / BYLEX version skipped
+test: zrange with REV version skipped
+test: zrange with LIMIT version skipped
+test: zrangebylex command passed
+test: zrangebylex with LIMIT passed
+test: zrangebyscore command passed
+test: zrangebyscore with LIMIT passed
+test: zrangebyscore with WITHSCORES passed
+test: zrangestore command version skipped
+test: zrangestore command tags skipped
+test: zrangestore with BYSCORE / BYLEX version skipped
+test: zrangestore with BYSCORE / BYLEX tags skipped
+test: zrangestore with REV version skipped
+test: zrangestore with REV tags skipped
+test: zrangestore with LIMIT version skipped
+test: zrangestore with LIMIT tags skipped
+test: zrank command passed
+test: zrank with WITHSCORE version skipped
+test: zrem command passed
+test: zrem with multiple elements passed
+test: zremrangebylex command passed
+test: zremrangebyrank command passed
+test: zremrangebyscore command passed
+test: zrevrange command passed
+test: zrevrange with WITHSCORES passed
+test: zrevrangebylex command passed
+test: zrevrangebylex with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrangebyscore with WITHSCORES passed
+test: zrevrangebyscore with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrank command passed
+test: zrevrank with WITHSCORE version skipped
+test: zscan command passed
+test: zscan with MATCH and COUNT passed
+test: zscore command passed
+test: zunion command version skipped
+test: zunion command tags skipped
+test: zunion with WEIGHTS and AGGREGATE version skipped
+test: zunion with WEIGHTS and AGGREGATE tags skipped
+test: zunion with WITHSCORES version skipped
+test: zunion with WITHSCORES tags skipped
+test: zunionstore command failed
+test: zunionstore command tags skipped
+test: zunionstore with WEIGHTS and AGGREGATE failed
+test: zunionstore with WEIGHTS and AGGREGATE tags skipped
+test: append command passed
+test: decr command passed
+test: decrby command passed
+test: get command passed
+test: getdel command version skipped
+test: getex command version skipped
+test: getex with EX version skipped
+test: getex with PX version skipped
+test: getex with EXAT version skipped
+test: getex with PXAT version skipped
+test: getex with PERSIST version skipped
+test: getrange command passed
+test: getset command passed
+test: incr command passed
+test: incrby command passed
+test: incrbyfloat command passed
+test: lcs command version skipped
+test: lcs command tags skipped
+test: lcs with LEN version skipped
+test: lcs with LEN tags skipped
+test: lcs with IDX version skipped
+test: lcs with IDX tags skipped
+test: lcs with MINMATCHLEN version skipped
+test: lcs with MINMATCHLEN tags skipped
+test: lcs with WITHMATCHLEN version skipped
+test: lcs with WITHMATCHLEN tags skipped
+test: mget command failed
+test: mget command tags skipped
+test: mset command failed
+test: mset command tags skipped
+test: msetnx command failed
+test: msetnx command tags skipped
+test: psetex command passed
+test: set command passed
+test: set with EX / PX passed
+test: set with NX / XX passed
+test: set with KEEPTTL version skipped
+test: set with GET version skipped
+test: set with EXAT / PXAT version skipped
+test: set with NX and GET version skipped
+test: setex command passed
+test: setnx command passed
+test: setrange command passed
+test: strlen command passed
+test: substr command passed
+test: hdel command passed
+test: hdel with multiple field passed
+test: hexists command passed
+test: hget command passed
+test: hgetall command passed
+test: hincrby command passed
+test: hincrbyfloat command passed
+test: hkeys command passed
+test: hlen command passed
+test: hmget command passed
+test: hmset command passed
+test: hrandfield command version skipped
+test: hrandfield with COUNT version skipped
+test: hrandfield with WITHVALUES version skipped
+test: hscan command passed
+test: hscan with MATCH and COUNT passed
+test: hset command passed
+test: hset command with multiple field and value passed
+test: hsetnx command passed
+test: hstrlen command passed
+test: hvals command passed
+test: bitcount command passed
+test: bitcount with BYTE / BIT version skipped
+test: bitfield command passed
+test: bitfield_ro command version skipped
+test: bitop command failed
+test: bitop command tags skipped
+test: bitpos command passed
+test: bitpos with BYTE / BIT version skipped
+test: getbit command passed
+test: setbit command passed
+test: pfadd command passed
+test: pfcount command passed
+test: pfmerge command failed
+test: pfmerge command tags skipped
+test: geoadd command passed
+test: geoadd with CH / NX / XX version skipped
+test: geodist command passed
+test: geodist with M / KM / FT / MI passed
+test: geohash command passed
+test: geopos command passed
+test: georadius command passed
+test: georadius with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius with COUNT passed
+test: georadius with ASC / DESC passed
+test: georadius with STORE / STOREDIST failed
+test: georadius with STORE / STOREDIST tags skipped
+test: georadius with ANY option for COUNT version skipped
+test: georadius with support for uppercase unit names version skipped
+test: georadius_ro command passed
+test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius_ro with COUNT passed
+test: georadius_ro with ASC / DESC passed
+test: georadius_ro with ANY option for COUNT version skipped
+test: georadiusbymember command passed
+test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember with COUNT passed
+test: georadiusbymember with ASC / DESC passed
+test: georadiusbymember with STORE / STOREDIST failed
+test: georadiusbymember with STORE / STOREDIST tags skipped
+test: georadiusbymember with ANY option for COUNT version skipped
+test: georadiusbymember with support for uppercase unit names version skipped
+test: georadiusbymember_ro command passed
+test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember_ro with COUNT passed
+test: georadiusbymember_ro with ASC / DESC passed
+test: georadiusbymember_ro with ANY option for COUNT version skipped
+test: geosearch command version skipped
+test: geosearch with ASC / DESC version skipped
+test: geosearch with COUNT version skipped
+test: geosearch with WITHCOORD / WITHDIST / WITHHASH version skipped
+test: geosearch with support for uppercase unit names version skipped
+test: geosearchstore command version skipped
+test: geosearchstore command tags skipped
+test: geosearchstore with ASC / DESC version skipped
+test: geosearchstore with ASC / DESC tags skipped
+test: geosearchstore with COUNT version skipped
+test: geosearchstore with COUNT tags skipped
+test: geosearchstore with STOREDIST version skipped
+test: geosearchstore with STOREDIST tags skipped
+test: geosearchstore with support for uppercase unit names version skipped
+test: geosearchstore with support for uppercase unit names tags skipped
+test: dbsize command passed
+test: flushall command passed
+test: flushall with async passed
+test: flushall with sync version skipped
+test: flushdb command passed
+test: flushdb with async passed
+test: flushdb with sync version skipped
+test: swapdb command failed
+test: discard command failed
+test: exec command failed
+test: multi command failed
+test: unwatch command failed
+test: watch command failed
+test: eval command failed
+test: eval_ro command version skipped
+test: evalsha command failed
+test: evalsha_ro command version skipped
+test: fcall command version skipped
+test: fcall_ro command version skipped
+test: function delete command version skipped
+test: function flush command version skipped
+test: function flush with SYNC version skipped
+test: function flush with ASYNC version skipped
+test: function list command version skipped
+test: function load command version skipped
+test: function restore command version skipped
+test: function stats command version skipped
+test: script exists command passed
+test: script flush command passed
+test: script flush with SYNC version skipped
+test: script flush with ASYNC version skipped
+test: script load command passed
+test: xack command passed
+test: xadd command passed
+test: xadd with NOMKSTREAM/MINID/LIMIT version skipped
+test: xadd with EXPLICIT ID version skipped
+test: xclaim command passed
+test: xdel command passed
+test: xgroup create command passed
+test: xgroup create with MKSTREAM passed
+test: xgroup create with ENTRIESREAD version skipped
+test: xgroup createconsumer command version skipped
+test: xgroup delconsumer command passed
+test: xgroup destroy command passed
+test: xgroup setid command passed
+test: xgroup setid with ENTRIESREAD version skipped
+test: xlen command passed
+test: xpending command passed
+test: xrange command passed
+test: xread command passed
+test: xreadgroup command passed
+test: xrevrange command passed
+test: xrevrange command with EXCLUSIVE RANGES version skipped
+test: xtrim command passed
+test: xtrim command with MINID/LIMIT version skipped
+test: psubscribe command failed
+test: psubscribe with RESET version skipped
+test: publish command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub channels command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub numpat command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub numsub command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub shardchannels command version skipped
+test: pubsub shardnumsub command version skipped
+test: punsubscribe command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: spublish command version skipped
+test: ssubscribe command version skipped
+test: subscribe command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: subscribe with RESET version skipped
+test: sunsubscribe command version skipped
+test: unsubscribe command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+-------- The result of tests --------
+Summary: version: 5.0.0, total tests: 213, passed: 177, rate: 83.10%
+This is failed tests for 5.0.0:
+FailedTest(name='rename command', reason=RedisClusterException('rename - all keys must map to the same key slot'))
+FailedTest(name='renamenx command', reason=RedisClusterException('renamenx - all keys must map to the same key slot'))
+FailedTest(name='keys command', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='sdiff command', reason=RedisClusterException('sdiff - all keys must map to the same key slot'))
+FailedTest(name='sdiffstore command', reason=RedisClusterException('sdiffstore - all keys must map to the same key slot'))
+FailedTest(name='sinter command', reason=RedisClusterException('sinter - all keys must map to the same key slot'))
+FailedTest(name='sinterstore command', reason=RedisClusterException('sinterstore - all keys must map to the same key slot'))
+FailedTest(name='smove command', reason=RedisClusterException('smove - all keys must map to the same key slot'))
+FailedTest(name='sunion command', reason=RedisClusterException('sunion - all keys must map to the same key slot'))
+FailedTest(name='sunionstore command', reason=RedisClusterException('sunionstore - all keys must map to the same key slot'))
+FailedTest(name='mget command', reason=RedisClusterException('mget - all keys must map to the same key slot'))
+FailedTest(name='swapdb command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('swapdb', '0', '1')"))
+FailedTest(name='rpoplpush command', reason=RedisClusterException('rpoplpush - all keys must map to the same key slot'))
+FailedTest(name='exec command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='multi command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='bitop command', reason=RedisClusterException('bitop - all keys must map to the same key slot'))
+FailedTest(name='eval command', reason=ResponseError("for redis cluster, eval/evalsha/fcall number of keys can't be negative or zero"))
+FailedTest(name='evalsha command', reason=ResponseError("for redis cluster, eval/evalsha/fcall number of keys can't be negative or zero"))
+FailedTest(name='brpoplpush command', reason=RedisClusterException('brpoplpush - all keys must map to the same key slot'))
+FailedTest(name='unwatch command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('unwatch',)"))
+FailedTest(name='watch command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('unwatch',)"))
+FailedTest(name='scan command', reason="expected: ['0', ['k']], result: ({'172.16.0.175:6379': 72057594037927936}, ['k'])")
+FailedTest(name='blpop command', reason=RedisClusterException('blpop - all keys must map to the same key slot'))
+FailedTest(name='brpop command', reason=RedisClusterException('brpop - all keys must map to the same key slot'))
+FailedTest(name='zinterstore command', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zinterstore with WEIGHTS', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zinterstore with AGGREGATE', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zunionstore command', reason=RedisClusterException('zunionstore - all keys must map to the same key slot'))
+FailedTest(name='zunionstore with WEIGHTS and AGGREGATE', reason=RedisClusterException('zunionstore - all keys must map to the same key slot'))
+FailedTest(name='discard command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='psubscribe command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('quit',)"))
+FailedTest(name='georadius with STORE / STOREDIST', reason=RedisClusterException('georadius - all keys must map to the same key slot'))
+FailedTest(name='georadiusbymember with STORE / STOREDIST', reason=RedisClusterException('georadiusbymember - all keys must map to the same key slot'))
+FailedTest(name='pfmerge command', reason=RedisClusterException('pfmerge - all keys must map to the same key slot'))
+FailedTest(name='mset command', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='msetnx command', reason=RedisClusterException('msetnx - all keys must map to the same key slot'))
+</pre>
diff --git a/AliyunTairCluster-6.0.0.html b/AliyunTairCluster-6.0.0.html
new file mode 100644
index 0000000..1bd8873
--- /dev/null
+++ b/AliyunTairCluster-6.0.0.html
@@ -0,0 +1,462 @@
+<pre>
+test: del command passed
+test: unlink command passed
+test: rename command failed
+test: rename command tags skipped
+test: renamenx command failed
+test: renamenx command tags skipped
+test: randomkey command failed
+test: exists command passed
+test: ttl command passed
+test: pttl command passed
+test: expire command passed
+test: expire with NX / XX version skipped
+test: expire with GT / LT version skipped
+test: expireat command passed
+test: expireat with NX / XX version skipped
+test: expireat with GT / LT version skipped
+test: pexpire command passed
+test: pexpire with NX / XX version skipped
+test: pexpire with GT / LT version skipped
+test: pexpireat command passed
+test: pexpireat with NX / XX version skipped
+test: pexpireat with GT / LT version skipped
+test: expiretime command version skipped
+test: pexpiretime command version skipped
+test: persist command passed
+test: dump command passed
+test: touch command passed
+test: restore command passed
+test: restore with REPLACE passed
+test: restore with ABSTTL passed
+test: restore with IDLETIME passed
+test: scan command failed
+test: scan with TYPE failed
+test: keys command failed
+test: move command passed
+test: copy command version skipped
+test: copy command tags skipped
+test: type command passed
+test: sort command passed
+test: sort_ro command skipped
+test: set command passed
+test: blmove command version skipped
+test: blmove command tags skipped
+test: blmpop command version skipped
+test: blmpop with COUNT version skipped
+test: blmpop with COUNT tags skipped
+test: blpop command failed
+test: blpop command tags skipped
+test: blpop with double timeout passed
+test: blpop with double timeout tags skipped
+test: brpop command failed
+test: brpop command tags skipped
+test: brpop with double timeout failed
+test: brpop with double timeout tags skipped
+test: brpoplpush command failed
+test: brpoplpush command tags skipped
+test: brpoplpush with double timeout failed
+test: brpoplpush with double timeout tags skipped
+test: lindex command passed
+test: linsert command passed
+test: llen command passed
+test: lmove command version skipped
+test: lmove command tags skipped
+test: lmpop command version skipped
+test: lmpop with COUNT version skipped
+test: lmpop with COUNT tags skipped
+test: lpop command passed
+test: lpop with COUNT version skipped
+test: lpos command version skipped
+test: lpos with RANK version skipped
+test: lpos with COUNT version skipped
+test: lpos with MAXLEN version skipped
+test: lpos with RANK, COUNT and MAXLEN version skipped
+test: lpush command passed
+test: lpush with multiple element passed
+test: lpushx command passed
+test: lpushx with multiple element passed
+test: lrange command passed
+test: lrem command passed
+test: lset command passed
+test: ltrim command passed
+test: rpop command passed
+test: rpop with COUNT version skipped
+test: rpoplpush command failed
+test: rpoplpush command tags skipped
+test: rpush command passed
+test: rpush with multiple element passed
+test: rpushx command passed
+test: rpushx command tags skipped
+test: rpushx with multiple element passed
+test: rpushx with multiple element tags skipped
+test: sadd command passed
+test: sadd command passed
+test: scard command passed
+test: sdiff command failed
+test: sdiff command tags skipped
+test: sdiffstore command failed
+test: sdiffstore command tags skipped
+test: sinter command failed
+test: sinter command tags skipped
+test: sintercard command version skipped
+test: sintercard command tags skipped
+test: sintercard with LIMIT version skipped
+test: sintercard with LIMIT tags skipped
+test: sinterstore command failed
+test: sinterstore command tags skipped
+test: sismember command passed
+test: smembers command passed
+test: smismember command version skipped
+test: smove command failed
+test: smove command tags skipped
+test: spop command passed
+test: spop with COUNT passed
+test: srandmember command passed
+test: srandmember with COUNT passed
+test: srem command passed
+test: srem with multiple member passed
+test: sscan command passed
+test: sscan with MATCH and COUNT passed
+test: sunion command failed
+test: sunion command tags skipped
+test: sunionstore command failed
+test: sunionstore command tags skipped
+test: bzmpop command version skipped
+test: bzmpop command tags skipped
+test: bzmpop with COUNT version skipped
+test: bzmpop with COUNT version skipped
+test: bzpopmax command passed
+test: bzpopmax with double timeout passed
+test: bzpopmin command passed
+test: bzpopmin with double timeout passed
+test: zadd command passed
+test: zadd with multiple elements passed
+test: zadd with XX / NX / CH / INCR passed
+test: zadd with GT / LT version skipped
+test: zcard command passed
+test: zcount command passed
+test: zdiff command version skipped
+test: zdiff command tags skipped
+test: zdiffstore command version skipped
+test: zdiffstore command tags skipped
+test: zincrby command passed
+test: zinter command version skipped
+test: zinter command tags skipped
+test: zinter with WEIGHTS version skipped
+test: zinter with WEIGHTS tags skipped
+test: zinter with AGGREGATE version skipped
+test: zinter with AGGREGATE tags skipped
+test: zinter WITHSCORES version skipped
+test: zinter WITHSCORES tags skipped
+test: zintercard command version skipped
+test: zintercard command tags skipped
+test: zintercard with LIMIT version skipped
+test: zintercard with LIMIT tags skipped
+test: zinterstore command failed
+test: zinterstore command tags skipped
+test: zinterstore with WEIGHTS failed
+test: zinterstore with WEIGHTS tags skipped
+test: zinterstore with AGGREGATE failed
+test: zinterstore with AGGREGATE tags skipped
+test: zlexcount command passed
+test: zmpop command version skipped
+test: zmpop with COUNT version skipped
+test: zmscore command version skipped
+test: zpopmax command passed
+test: zpopmax with COUNT passed
+test: zpopmin command passed
+test: zpopmin command passed
+test: zrandmember command version skipped
+test: zrandmember with COUNT version skipped
+test: zrandmember with WITHSCORES version skipped
+test: zrange command passed
+test: zrange with WITHSCORES passed
+test: zrange with BYSCORE / BYLEX version skipped
+test: zrange with REV version skipped
+test: zrange with LIMIT version skipped
+test: zrangebylex command passed
+test: zrangebylex with LIMIT passed
+test: zrangebyscore command passed
+test: zrangebyscore with LIMIT passed
+test: zrangebyscore with WITHSCORES passed
+test: zrangestore command version skipped
+test: zrangestore command tags skipped
+test: zrangestore with BYSCORE / BYLEX version skipped
+test: zrangestore with BYSCORE / BYLEX tags skipped
+test: zrangestore with REV version skipped
+test: zrangestore with REV tags skipped
+test: zrangestore with LIMIT version skipped
+test: zrangestore with LIMIT tags skipped
+test: zrank command passed
+test: zrank with WITHSCORE version skipped
+test: zrem command passed
+test: zrem with multiple elements passed
+test: zremrangebylex command passed
+test: zremrangebyrank command passed
+test: zremrangebyscore command passed
+test: zrevrange command passed
+test: zrevrange with WITHSCORES passed
+test: zrevrangebylex command passed
+test: zrevrangebylex with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrangebyscore with WITHSCORES passed
+test: zrevrangebyscore with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrank command passed
+test: zrevrank with WITHSCORE version skipped
+test: zscan command passed
+test: zscan with MATCH and COUNT passed
+test: zscore command passed
+test: zunion command version skipped
+test: zunion command tags skipped
+test: zunion with WEIGHTS and AGGREGATE version skipped
+test: zunion with WEIGHTS and AGGREGATE tags skipped
+test: zunion with WITHSCORES version skipped
+test: zunion with WITHSCORES tags skipped
+test: zunionstore command failed
+test: zunionstore command tags skipped
+test: zunionstore with WEIGHTS and AGGREGATE failed
+test: zunionstore with WEIGHTS and AGGREGATE tags skipped
+test: append command passed
+test: decr command passed
+test: decrby command passed
+test: get command passed
+test: getdel command version skipped
+test: getex command version skipped
+test: getex with EX version skipped
+test: getex with PX version skipped
+test: getex with EXAT version skipped
+test: getex with PXAT version skipped
+test: getex with PERSIST version skipped
+test: getrange command passed
+test: getset command passed
+test: incr command passed
+test: incrby command passed
+test: incrbyfloat command passed
+test: lcs command version skipped
+test: lcs command tags skipped
+test: lcs with LEN version skipped
+test: lcs with LEN tags skipped
+test: lcs with IDX version skipped
+test: lcs with IDX tags skipped
+test: lcs with MINMATCHLEN version skipped
+test: lcs with MINMATCHLEN tags skipped
+test: lcs with WITHMATCHLEN version skipped
+test: lcs with WITHMATCHLEN tags skipped
+test: mget command failed
+test: mget command tags skipped
+test: mset command failed
+test: mset command tags skipped
+test: msetnx command failed
+test: msetnx command tags skipped
+test: psetex command passed
+test: set command passed
+test: set with EX / PX passed
+test: set with NX / XX passed
+test: set with KEEPTTL passed
+test: set with GET version skipped
+test: set with EXAT / PXAT version skipped
+test: set with NX and GET version skipped
+test: setex command passed
+test: setnx command passed
+test: setrange command passed
+test: strlen command passed
+test: substr command passed
+test: hdel command passed
+test: hdel with multiple field passed
+test: hexists command passed
+test: hget command passed
+test: hgetall command passed
+test: hincrby command passed
+test: hincrbyfloat command passed
+test: hkeys command passed
+test: hlen command passed
+test: hmget command passed
+test: hmset command passed
+test: hrandfield command version skipped
+test: hrandfield with COUNT version skipped
+test: hrandfield with WITHVALUES version skipped
+test: hscan command passed
+test: hscan with MATCH and COUNT passed
+test: hset command passed
+test: hset command with multiple field and value passed
+test: hsetnx command passed
+test: hstrlen command passed
+test: hvals command passed
+test: bitcount command passed
+test: bitcount with BYTE / BIT version skipped
+test: bitfield command passed
+test: bitfield_ro command failed
+test: bitop command failed
+test: bitop command tags skipped
+test: bitpos command passed
+test: bitpos with BYTE / BIT version skipped
+test: getbit command passed
+test: setbit command passed
+test: pfadd command passed
+test: pfcount command passed
+test: pfmerge command failed
+test: pfmerge command tags skipped
+test: geoadd command passed
+test: geoadd with CH / NX / XX version skipped
+test: geodist command passed
+test: geodist with M / KM / FT / MI passed
+test: geohash command passed
+test: geopos command passed
+test: georadius command passed
+test: georadius with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius with COUNT passed
+test: georadius with ASC / DESC passed
+test: georadius with STORE / STOREDIST failed
+test: georadius with STORE / STOREDIST tags skipped
+test: georadius with ANY option for COUNT version skipped
+test: georadius with support for uppercase unit names version skipped
+test: georadius_ro command passed
+test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius_ro with COUNT passed
+test: georadius_ro with ASC / DESC passed
+test: georadius_ro with ANY option for COUNT version skipped
+test: georadiusbymember command passed
+test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember with COUNT passed
+test: georadiusbymember with ASC / DESC passed
+test: georadiusbymember with STORE / STOREDIST failed
+test: georadiusbymember with STORE / STOREDIST tags skipped
+test: georadiusbymember with ANY option for COUNT version skipped
+test: georadiusbymember with support for uppercase unit names version skipped
+test: georadiusbymember_ro command passed
+test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember_ro with COUNT passed
+test: georadiusbymember_ro with ASC / DESC passed
+test: georadiusbymember_ro with ANY option for COUNT version skipped
+test: geosearch command version skipped
+test: geosearch with ASC / DESC version skipped
+test: geosearch with COUNT version skipped
+test: geosearch with WITHCOORD / WITHDIST / WITHHASH version skipped
+test: geosearch with support for uppercase unit names version skipped
+test: geosearchstore command version skipped
+test: geosearchstore command tags skipped
+test: geosearchstore with ASC / DESC version skipped
+test: geosearchstore with ASC / DESC tags skipped
+test: geosearchstore with COUNT version skipped
+test: geosearchstore with COUNT tags skipped
+test: geosearchstore with STOREDIST version skipped
+test: geosearchstore with STOREDIST tags skipped
+test: geosearchstore with support for uppercase unit names version skipped
+test: geosearchstore with support for uppercase unit names tags skipped
+test: dbsize command passed
+test: flushall command passed
+test: flushall with async passed
+test: flushall with sync version skipped
+test: flushdb command passed
+test: flushdb with async passed
+test: flushdb with sync version skipped
+test: swapdb command failed
+test: discard command failed
+test: exec command failed
+test: multi command failed
+test: unwatch command failed
+test: watch command failed
+test: eval command failed
+test: eval_ro command version skipped
+test: evalsha command failed
+test: evalsha_ro command version skipped
+test: fcall command version skipped
+test: fcall_ro command version skipped
+test: function delete command version skipped
+test: function flush command version skipped
+test: function flush with SYNC version skipped
+test: function flush with ASYNC version skipped
+test: function list command version skipped
+test: function load command version skipped
+test: function restore command version skipped
+test: function stats command version skipped
+test: script exists command passed
+test: script flush command passed
+test: script flush with SYNC version skipped
+test: script flush with ASYNC version skipped
+test: script load command passed
+test: xack command passed
+test: xadd command passed
+test: xadd with NOMKSTREAM/MINID/LIMIT version skipped
+test: xadd with EXPLICIT ID version skipped
+test: xclaim command passed
+test: xdel command passed
+test: xgroup create command passed
+test: xgroup create with MKSTREAM passed
+test: xgroup create with ENTRIESREAD version skipped
+test: xgroup createconsumer command version skipped
+test: xgroup delconsumer command passed
+test: xgroup destroy command passed
+test: xgroup setid command passed
+test: xgroup setid with ENTRIESREAD version skipped
+test: xlen command passed
+test: xpending command passed
+test: xrange command passed
+test: xread command passed
+test: xreadgroup command passed
+test: xrevrange command passed
+test: xrevrange command with EXCLUSIVE RANGES version skipped
+test: xtrim command passed
+test: xtrim command with MINID/LIMIT version skipped
+test: psubscribe command failed
+test: psubscribe with RESET version skipped
+test: publish command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub channels command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub numpat command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub numsub command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub shardchannels command version skipped
+test: pubsub shardnumsub command version skipped
+test: punsubscribe command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: spublish command version skipped
+test: ssubscribe command version skipped
+test: subscribe command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: subscribe with RESET version skipped
+test: sunsubscribe command version skipped
+test: unsubscribe command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+-------- The result of tests --------
+Summary: version: 6.0.0, total tests: 221, passed: 180, rate: 81.45%
+This is failed tests for 6.0.0:
+FailedTest(name='rename command', reason=RedisClusterException('rename - all keys must map to the same key slot'))
+FailedTest(name='renamenx command', reason=RedisClusterException('renamenx - all keys must map to the same key slot'))
+FailedTest(name='randomkey command', reason='expected: k, result: None')
+FailedTest(name='keys command', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='sdiff command', reason=RedisClusterException('sdiff - all keys must map to the same key slot'))
+FailedTest(name='sdiffstore command', reason=RedisClusterException('sdiffstore - all keys must map to the same key slot'))
+FailedTest(name='sinter command', reason=RedisClusterException('sinter - all keys must map to the same key slot'))
+FailedTest(name='sinterstore command', reason=RedisClusterException('sinterstore - all keys must map to the same key slot'))
+FailedTest(name='smove command', reason=RedisClusterException('smove - all keys must map to the same key slot'))
+FailedTest(name='sunion command', reason=RedisClusterException('sunion - all keys must map to the same key slot'))
+FailedTest(name='sunionstore command', reason=RedisClusterException('sunionstore - all keys must map to the same key slot'))
+FailedTest(name='mget command', reason=RedisClusterException('mget - all keys must map to the same key slot'))
+FailedTest(name='swapdb command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('swapdb', '0', '1')"))
+FailedTest(name='rpoplpush command', reason=RedisClusterException('rpoplpush - all keys must map to the same key slot'))
+FailedTest(name='exec command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='multi command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='bitop command', reason=RedisClusterException('bitop - all keys must map to the same key slot'))
+FailedTest(name='eval command', reason=ResponseError("for redis cluster, eval/evalsha/fcall number of keys can't be negative or zero"))
+FailedTest(name='evalsha command', reason=ResponseError("for redis cluster, eval/evalsha/fcall number of keys can't be negative or zero"))
+FailedTest(name='brpoplpush command', reason=RedisClusterException('brpoplpush - all keys must map to the same key slot'))
+FailedTest(name='unwatch command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('unwatch',)"))
+FailedTest(name='watch command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('unwatch',)"))
+FailedTest(name='scan command', reason="expected: ['0', ['k']], result: ({'172.16.0.175:6379': 72057594037927936}, ['k'])")
+FailedTest(name='scan with TYPE', reason="expected: ['0', ['geokey']], result: ({'172.16.0.175:6379': 72057594037927936}, ['geokey'])")
+FailedTest(name='brpop with double timeout', reason=RedisClusterException('brpop - all keys must map to the same key slot'))
+FailedTest(name='brpoplpush with double timeout', reason=RedisClusterException('brpoplpush - all keys must map to the same key slot'))
+FailedTest(name='bitfield_ro command', reason=ResponseError("unknown command 'BITFIELD_RO'"))
+FailedTest(name='blpop command', reason=RedisClusterException('blpop - all keys must map to the same key slot'))
+FailedTest(name='brpop command', reason=RedisClusterException('brpop - all keys must map to the same key slot'))
+FailedTest(name='zinterstore command', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zinterstore with WEIGHTS', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zinterstore with AGGREGATE', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zunionstore command', reason=RedisClusterException('zunionstore - all keys must map to the same key slot'))
+FailedTest(name='zunionstore with WEIGHTS and AGGREGATE', reason=RedisClusterException('zunionstore - all keys must map to the same key slot'))
+FailedTest(name='discard command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='psubscribe command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('quit',)"))
+FailedTest(name='georadius with STORE / STOREDIST', reason=RedisClusterException('georadius - all keys must map to the same key slot'))
+FailedTest(name='georadiusbymember with STORE / STOREDIST', reason=RedisClusterException('georadiusbymember - all keys must map to the same key slot'))
+FailedTest(name='pfmerge command', reason=RedisClusterException('pfmerge - all keys must map to the same key slot'))
+FailedTest(name='mset command', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='msetnx command', reason=RedisClusterException('msetnx - all keys must map to the same key slot'))
+</pre>
diff --git a/AliyunTairCluster-7.0.0.html b/AliyunTairCluster-7.0.0.html
new file mode 100644
index 0000000..19f3545
--- /dev/null
+++ b/AliyunTairCluster-7.0.0.html
@@ -0,0 +1,502 @@
+<pre>
+test: del command passed
+test: unlink command passed
+test: rename command failed
+test: rename command tags skipped
+test: renamenx command failed
+test: renamenx command tags skipped
+test: randomkey command passed
+test: exists command passed
+test: ttl command passed
+test: pttl command passed
+test: expire command passed
+test: expire with NX / XX passed
+test: expire with GT / LT passed
+test: expireat command passed
+test: expireat with NX / XX passed
+test: expireat with GT / LT passed
+test: pexpire command passed
+test: pexpire with NX / XX passed
+test: pexpire with GT / LT passed
+test: pexpireat command passed
+test: pexpireat with NX / XX passed
+test: pexpireat with GT / LT passed
+test: expiretime command passed
+test: pexpiretime command passed
+test: persist command passed
+test: dump command passed
+test: touch command passed
+test: restore command passed
+test: restore with REPLACE passed
+test: restore with ABSTTL passed
+test: restore with IDLETIME passed
+test: scan command failed
+test: scan with TYPE failed
+test: keys command failed
+test: move command passed
+test: copy command failed
+test: copy command tags skipped
+test: type command passed
+test: sort command passed
+test: sort_ro command skipped
+test: set command passed
+test: blmove command failed
+test: blmove command tags skipped
+test: blmpop command passed
+test: blmpop with COUNT failed
+test: blmpop with COUNT tags skipped
+test: blpop command failed
+test: blpop command tags skipped
+test: blpop with double timeout passed
+test: blpop with double timeout tags skipped
+test: brpop command failed
+test: brpop command tags skipped
+test: brpop with double timeout failed
+test: brpop with double timeout tags skipped
+test: brpoplpush command failed
+test: brpoplpush command tags skipped
+test: brpoplpush with double timeout failed
+test: brpoplpush with double timeout tags skipped
+test: lindex command passed
+test: linsert command passed
+test: llen command passed
+test: lmove command failed
+test: lmove command tags skipped
+test: lmpop command passed
+test: lmpop with COUNT failed
+test: lmpop with COUNT tags skipped
+test: lpop command passed
+test: lpop with COUNT passed
+test: lpos command passed
+test: lpos with RANK passed
+test: lpos with COUNT passed
+test: lpos with MAXLEN passed
+test: lpos with RANK, COUNT and MAXLEN passed
+test: lpush command passed
+test: lpush with multiple element passed
+test: lpushx command passed
+test: lpushx with multiple element passed
+test: lrange command passed
+test: lrem command passed
+test: lset command passed
+test: ltrim command passed
+test: rpop command passed
+test: rpop with COUNT passed
+test: rpoplpush command failed
+test: rpoplpush command tags skipped
+test: rpush command passed
+test: rpush with multiple element passed
+test: rpushx command passed
+test: rpushx command tags skipped
+test: rpushx with multiple element passed
+test: rpushx with multiple element tags skipped
+test: sadd command passed
+test: sadd command passed
+test: scard command passed
+test: sdiff command failed
+test: sdiff command tags skipped
+test: sdiffstore command failed
+test: sdiffstore command tags skipped
+test: sinter command failed
+test: sinter command tags skipped
+test: sintercard command failed
+test: sintercard command tags skipped
+test: sintercard with LIMIT failed
+test: sintercard with LIMIT tags skipped
+test: sinterstore command failed
+test: sinterstore command tags skipped
+test: sismember command passed
+test: smembers command passed
+test: smismember command passed
+test: smove command failed
+test: smove command tags skipped
+test: spop command passed
+test: spop with COUNT passed
+test: srandmember command passed
+test: srandmember with COUNT passed
+test: srem command passed
+test: srem with multiple member passed
+test: sscan command passed
+test: sscan with MATCH and COUNT passed
+test: sunion command failed
+test: sunion command tags skipped
+test: sunionstore command failed
+test: sunionstore command tags skipped
+test: bzmpop command failed
+test: bzmpop command tags skipped
+test: bzmpop with COUNT failed
+test: bzmpop with COUNT passed
+test: bzpopmax command passed
+test: bzpopmax with double timeout passed
+test: bzpopmin command passed
+test: bzpopmin with double timeout passed
+test: zadd command passed
+test: zadd with multiple elements passed
+test: zadd with XX / NX / CH / INCR passed
+test: zadd with GT / LT passed
+test: zcard command passed
+test: zcount command passed
+test: zdiff command failed
+test: zdiff command tags skipped
+test: zdiffstore command failed
+test: zdiffstore command tags skipped
+test: zincrby command passed
+test: zinter command failed
+test: zinter command tags skipped
+test: zinter with WEIGHTS failed
+test: zinter with WEIGHTS tags skipped
+test: zinter with AGGREGATE failed
+test: zinter with AGGREGATE tags skipped
+test: zinter WITHSCORES failed
+test: zinter WITHSCORES tags skipped
+test: zintercard command failed
+test: zintercard command tags skipped
+test: zintercard with LIMIT failed
+test: zintercard with LIMIT tags skipped
+test: zinterstore command failed
+test: zinterstore command tags skipped
+test: zinterstore with WEIGHTS failed
+test: zinterstore with WEIGHTS tags skipped
+test: zinterstore with AGGREGATE failed
+test: zinterstore with AGGREGATE tags skipped
+test: zlexcount command passed
+test: zmpop command passed
+test: zmpop with COUNT passed
+test: zmscore command passed
+test: zpopmax command passed
+test: zpopmax with COUNT passed
+test: zpopmin command passed
+test: zpopmin command passed
+test: zrandmember command passed
+test: zrandmember with COUNT passed
+test: zrandmember with WITHSCORES passed
+test: zrange command passed
+test: zrange with WITHSCORES passed
+test: zrange with BYSCORE / BYLEX passed
+test: zrange with REV passed
+test: zrange with LIMIT passed
+test: zrangebylex command passed
+test: zrangebylex with LIMIT passed
+test: zrangebyscore command passed
+test: zrangebyscore with LIMIT passed
+test: zrangebyscore with WITHSCORES passed
+test: zrangestore command failed
+test: zrangestore command tags skipped
+test: zrangestore with BYSCORE / BYLEX failed
+test: zrangestore with BYSCORE / BYLEX tags skipped
+test: zrangestore with REV failed
+test: zrangestore with REV tags skipped
+test: zrangestore with LIMIT failed
+test: zrangestore with LIMIT tags skipped
+test: zrank command passed
+test: zrank with WITHSCORE version skipped
+test: zrem command passed
+test: zrem with multiple elements passed
+test: zremrangebylex command passed
+test: zremrangebyrank command passed
+test: zremrangebyscore command passed
+test: zrevrange command passed
+test: zrevrange with WITHSCORES passed
+test: zrevrangebylex command passed
+test: zrevrangebylex with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrangebyscore with WITHSCORES passed
+test: zrevrangebyscore with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrank command passed
+test: zrevrank with WITHSCORE version skipped
+test: zscan command passed
+test: zscan with MATCH and COUNT passed
+test: zscore command passed
+test: zunion command failed
+test: zunion command tags skipped
+test: zunion with WEIGHTS and AGGREGATE failed
+test: zunion with WEIGHTS and AGGREGATE tags skipped
+test: zunion with WITHSCORES failed
+test: zunion with WITHSCORES tags skipped
+test: zunionstore command failed
+test: zunionstore command tags skipped
+test: zunionstore with WEIGHTS and AGGREGATE failed
+test: zunionstore with WEIGHTS and AGGREGATE tags skipped
+test: append command passed
+test: decr command passed
+test: decrby command passed
+test: get command passed
+test: getdel command passed
+test: getex command passed
+test: getex with EX passed
+test: getex with PX passed
+test: getex with EXAT passed
+test: getex with PXAT passed
+test: getex with PERSIST passed
+test: getrange command passed
+test: getset command passed
+test: incr command passed
+test: incrby command passed
+test: incrbyfloat command passed
+test: lcs command failed
+test: lcs command tags skipped
+test: lcs with LEN failed
+test: lcs with LEN tags skipped
+test: lcs with IDX failed
+test: lcs with IDX tags skipped
+test: lcs with MINMATCHLEN failed
+test: lcs with MINMATCHLEN tags skipped
+test: lcs with WITHMATCHLEN failed
+test: lcs with WITHMATCHLEN tags skipped
+test: mget command failed
+test: mget command tags skipped
+test: mset command failed
+test: mset command tags skipped
+test: msetnx command failed
+test: msetnx command tags skipped
+test: psetex command passed
+test: set command passed
+test: set with EX / PX passed
+test: set with NX / XX passed
+test: set with KEEPTTL passed
+test: set with GET passed
+test: set with EXAT / PXAT passed
+test: set with NX and GET passed
+test: setex command passed
+test: setnx command passed
+test: setrange command passed
+test: strlen command passed
+test: substr command passed
+test: hdel command passed
+test: hdel with multiple field passed
+test: hexists command passed
+test: hget command passed
+test: hgetall command passed
+test: hincrby command passed
+test: hincrbyfloat command passed
+test: hkeys command passed
+test: hlen command passed
+test: hmget command passed
+test: hmset command passed
+test: hrandfield command passed
+test: hrandfield with COUNT passed
+test: hrandfield with WITHVALUES passed
+test: hscan command passed
+test: hscan with MATCH and COUNT passed
+test: hset command passed
+test: hset command with multiple field and value passed
+test: hsetnx command passed
+test: hstrlen command passed
+test: hvals command passed
+test: bitcount command passed
+test: bitcount with BYTE / BIT passed
+test: bitfield command passed
+test: bitfield_ro command failed
+test: bitop command failed
+test: bitop command tags skipped
+test: bitpos command passed
+test: bitpos with BYTE / BIT passed
+test: getbit command passed
+test: setbit command passed
+test: pfadd command passed
+test: pfcount command passed
+test: pfmerge command failed
+test: pfmerge command tags skipped
+test: geoadd command passed
+test: geoadd with CH / NX / XX passed
+test: geodist command passed
+test: geodist with M / KM / FT / MI passed
+test: geohash command passed
+test: geopos command passed
+test: georadius command passed
+test: georadius with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius with COUNT passed
+test: georadius with ASC / DESC passed
+test: georadius with STORE / STOREDIST failed
+test: georadius with STORE / STOREDIST tags skipped
+test: georadius with ANY option for COUNT passed
+test: georadius with support for uppercase unit names passed
+test: georadius_ro command passed
+test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius_ro with COUNT passed
+test: georadius_ro with ASC / DESC passed
+test: georadius_ro with ANY option for COUNT passed
+test: georadiusbymember command passed
+test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember with COUNT passed
+test: georadiusbymember with ASC / DESC passed
+test: georadiusbymember with STORE / STOREDIST failed
+test: georadiusbymember with STORE / STOREDIST tags skipped
+test: georadiusbymember with ANY option for COUNT passed
+test: georadiusbymember with support for uppercase unit names passed
+test: georadiusbymember_ro command passed
+test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember_ro with COUNT passed
+test: georadiusbymember_ro with ASC / DESC passed
+test: georadiusbymember_ro with ANY option for COUNT passed
+test: geosearch command passed
+test: geosearch with ASC / DESC passed
+test: geosearch with COUNT passed
+test: geosearch with WITHCOORD / WITHDIST / WITHHASH passed
+test: geosearch with support for uppercase unit names passed
+test: geosearchstore command failed
+test: geosearchstore command tags skipped
+test: geosearchstore with ASC / DESC failed
+test: geosearchstore with ASC / DESC tags skipped
+test: geosearchstore with COUNT failed
+test: geosearchstore with COUNT tags skipped
+test: geosearchstore with STOREDIST failed
+test: geosearchstore with STOREDIST tags skipped
+test: geosearchstore with support for uppercase unit names failed
+test: geosearchstore with support for uppercase unit names tags skipped
+test: dbsize command passed
+test: flushall command passed
+test: flushall with async passed
+test: flushall with sync passed
+test: flushdb command passed
+test: flushdb with async passed
+test: flushdb with sync passed
+test: swapdb command failed
+test: discard command failed
+test: exec command failed
+test: multi command failed
+test: unwatch command failed
+test: watch command failed
+test: eval command failed
+test: eval_ro command failed
+test: evalsha command failed
+test: evalsha_ro command failed
+test: fcall command failed
+test: fcall_ro command failed
+test: function delete command passed
+test: function flush command passed
+test: function flush with SYNC passed
+test: function flush with ASYNC passed
+test: function list command passed
+test: function load command failed
+test: function restore command failed
+test: function stats command failed
+test: script exists command passed
+test: script flush command passed
+test: script flush with SYNC passed
+test: script flush with ASYNC passed
+test: script load command passed
+test: xack command passed
+test: xadd command passed
+test: xadd with NOMKSTREAM/MINID/LIMIT passed
+test: xadd with EXPLICIT ID passed
+test: xclaim command passed
+test: xdel command passed
+test: xgroup create command passed
+test: xgroup create with MKSTREAM passed
+test: xgroup create with ENTRIESREAD passed
+test: xgroup createconsumer command passed
+test: xgroup delconsumer command passed
+test: xgroup destroy command passed
+test: xgroup setid command passed
+test: xgroup setid with ENTRIESREAD passed
+test: xlen command passed
+test: xpending command passed
+test: xrange command passed
+test: xread command passed
+test: xreadgroup command passed
+test: xrevrange command passed
+test: xrevrange command with EXCLUSIVE RANGES passed
+test: xtrim command passed
+test: xtrim command with MINID/LIMIT passed
+test: psubscribe command failed
+test: psubscribe with RESET run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: publish command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub channels command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub numpat command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub numsub command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub shardchannels command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub shardnumsub command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: punsubscribe command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: spublish command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: ssubscribe command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: subscribe command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: subscribe with RESET run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: sunsubscribe command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: unsubscribe command run test error only (P/S)SUBSCRIBE / (P/S)UNSUBSCRIBE / PING / QUIT allowed in this context
+-------- The result of tests --------
+Summary: version: 7.0.0, total tests: 336, passed: 255, rate: 75.89%
+This is failed tests for 7.0.0:
+FailedTest(name='rename command', reason=RedisClusterException('rename - all keys must map to the same key slot'))
+FailedTest(name='renamenx command', reason=RedisClusterException('renamenx - all keys must map to the same key slot'))
+FailedTest(name='keys command', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='sdiff command', reason=RedisClusterException('sdiff - all keys must map to the same key slot'))
+FailedTest(name='sdiffstore command', reason=RedisClusterException('sdiffstore - all keys must map to the same key slot'))
+FailedTest(name='sinter command', reason=RedisClusterException('sinter - all keys must map to the same key slot'))
+FailedTest(name='sinterstore command', reason=RedisClusterException('sinterstore - all keys must map to the same key slot'))
+FailedTest(name='smove command', reason=RedisClusterException('smove - all keys must map to the same key slot'))
+FailedTest(name='sunion command', reason=RedisClusterException('sunion - all keys must map to the same key slot'))
+FailedTest(name='sunionstore command', reason=RedisClusterException('sunionstore - all keys must map to the same key slot'))
+FailedTest(name='mget command', reason=RedisClusterException('mget - all keys must map to the same key slot'))
+FailedTest(name='swapdb command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('swapdb', '0', '1')"))
+FailedTest(name='blmpop with COUNT', reason=RedisClusterException('blmpop - all keys must map to the same key slot'))
+FailedTest(name='lmpop with COUNT', reason=RedisClusterException('lmpop - all keys must map to the same key slot'))
+FailedTest(name='sintercard command', reason=RedisClusterException('sintercard - all keys must map to the same key slot'))
+FailedTest(name='sintercard with LIMIT', reason=RedisClusterException('sintercard - all keys must map to the same key slot'))
+FailedTest(name='bzmpop command', reason=RedisClusterException('bzmpop - all keys must map to the same key slot'))
+FailedTest(name='bzmpop with COUNT', reason=RedisClusterException('bzmpop - all keys must map to the same key slot'))
+FailedTest(name='zintercard command', reason=RedisClusterException('zintercard - all keys must map to the same key slot'))
+FailedTest(name='zintercard with LIMIT', reason=RedisClusterException('zintercard - all keys must map to the same key slot'))
+FailedTest(name='lcs command', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='lcs with LEN', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='lcs with IDX', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='lcs with MINMATCHLEN', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='lcs with WITHMATCHLEN', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='geosearchstore with support for uppercase unit names', reason=RedisClusterException('geosearchstore - all keys must map to the same key slot'))
+FailedTest(name='eval_ro command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('eval_ro', 'return', '0', 'hello')"))
+FailedTest(name='evalsha_ro command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('evalsha_ro', '63143b6f8007b98c53ca2149822777b3566f9241', '0')"))
+FailedTest(name='fcall command', reason=ResponseError("for redis cluster, eval/evalsha/fcall number of keys can't be negative or zero"))
+FailedTest(name='fcall_ro command', reason=ResponseError("for redis cluster, eval/evalsha/fcall number of keys can't be negative or zero"))
+FailedTest(name='function load command', reason=ResponseError("for redis cluster, eval/evalsha/fcall number of keys can't be negative or zero"))
+FailedTest(name='function restore command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('function', b'flush')"))
+FailedTest(name='function stats command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('function', 'stats')"))
+FailedTest(name='rpoplpush command', reason=RedisClusterException('rpoplpush - all keys must map to the same key slot'))
+FailedTest(name='exec command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='multi command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='bitop command', reason=RedisClusterException('bitop - all keys must map to the same key slot'))
+FailedTest(name='eval command', reason=ResponseError("for redis cluster, eval/evalsha/fcall number of keys can't be negative or zero"))
+FailedTest(name='evalsha command', reason=ResponseError("for redis cluster, eval/evalsha/fcall number of keys can't be negative or zero"))
+FailedTest(name='brpoplpush command', reason=RedisClusterException('brpoplpush - all keys must map to the same key slot'))
+FailedTest(name='unwatch command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('unwatch',)"))
+FailedTest(name='watch command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('unwatch',)"))
+FailedTest(name='scan command', reason="expected: ['0', ['k']], result: ({'172.16.0.175:6379': 72057594037927936}, ['k'])")
+FailedTest(name='scan with TYPE', reason="expected: ['0', ['geokey']], result: ({'172.16.0.175:6379': 72057594037927936}, ['geokey'])")
+FailedTest(name='brpop with double timeout', reason=RedisClusterException('brpop - all keys must map to the same key slot'))
+FailedTest(name='brpoplpush with double timeout', reason=RedisClusterException('brpoplpush - all keys must map to the same key slot'))
+FailedTest(name='bitfield_ro command', reason=ResponseError("unknown command 'BITFIELD_RO'"))
+FailedTest(name='copy command', reason=RedisClusterException('copy - all keys must map to the same key slot'))
+FailedTest(name='blmove command', reason=RedisClusterException('blmove - all keys must map to the same key slot'))
+FailedTest(name='lmove command', reason=RedisClusterException('lmove - all keys must map to the same key slot'))
+FailedTest(name='zdiff command', reason=RedisClusterException('zdiff - all keys must map to the same key slot'))
+FailedTest(name='zdiffstore command', reason=RedisClusterException('zdiffstore - all keys must map to the same key slot'))
+FailedTest(name='zinter command', reason=RedisClusterException('zinter - all keys must map to the same key slot'))
+FailedTest(name='zinter with WEIGHTS', reason=RedisClusterException('zinter - all keys must map to the same key slot'))
+FailedTest(name='zinter with AGGREGATE', reason=RedisClusterException('zinter - all keys must map to the same key slot'))
+FailedTest(name='zinter WITHSCORES', reason=RedisClusterException('zinter - all keys must map to the same key slot'))
+FailedTest(name='zrangestore command', reason=RedisClusterException('zrangestore - all keys must map to the same key slot'))
+FailedTest(name='zrangestore with BYSCORE / BYLEX', reason=RedisClusterException('zrangestore - all keys must map to the same key slot'))
+FailedTest(name='zrangestore with REV', reason=RedisClusterException('zrangestore - all keys must map to the same key slot'))
+FailedTest(name='zrangestore with LIMIT', reason=RedisClusterException('zrangestore - all keys must map to the same key slot'))
+FailedTest(name='zunion command', reason=RedisClusterException('zunion - all keys must map to the same key slot'))
+FailedTest(name='zunion with WEIGHTS and AGGREGATE', reason=RedisClusterException('zunion - all keys must map to the same key slot'))
+FailedTest(name='zunion with WITHSCORES', reason=RedisClusterException('zunion - all keys must map to the same key slot'))
+FailedTest(name='geosearchstore command', reason=RedisClusterException('geosearchstore - all keys must map to the same key slot'))
+FailedTest(name='geosearchstore with ASC / DESC', reason=RedisClusterException('geosearchstore - all keys must map to the same key slot'))
+FailedTest(name='geosearchstore with COUNT', reason=RedisClusterException('geosearchstore - all keys must map to the same key slot'))
+FailedTest(name='geosearchstore with STOREDIST', reason=RedisClusterException('geosearchstore - all keys must map to the same key slot'))
+FailedTest(name='blpop command', reason=RedisClusterException('blpop - all keys must map to the same key slot'))
+FailedTest(name='brpop command', reason=RedisClusterException('brpop - all keys must map to the same key slot'))
+FailedTest(name='zinterstore command', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zinterstore with WEIGHTS', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zinterstore with AGGREGATE', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zunionstore command', reason=RedisClusterException('zunionstore - all keys must map to the same key slot'))
+FailedTest(name='zunionstore with WEIGHTS and AGGREGATE', reason=RedisClusterException('zunionstore - all keys must map to the same key slot'))
+FailedTest(name='discard command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='psubscribe command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('quit',)"))
+FailedTest(name='georadius with STORE / STOREDIST', reason=RedisClusterException('georadius - all keys must map to the same key slot'))
+FailedTest(name='georadiusbymember with STORE / STOREDIST', reason=RedisClusterException('georadiusbymember - all keys must map to the same key slot'))
+FailedTest(name='pfmerge command', reason=RedisClusterException('pfmerge - all keys must map to the same key slot'))
+FailedTest(name='mset command', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='msetnx command', reason=RedisClusterException('msetnx - all keys must map to the same key slot'))
+</pre>
diff --git a/KeyDB-4.0.0.html b/KeyDB-4.0.0.html
new file mode 100644
index 0000000..4e82c89
--- /dev/null
+++ b/KeyDB-4.0.0.html
@@ -0,0 +1,420 @@
+<pre>
+test: del command passed
+test: unlink command passed
+test: rename command passed
+test: rename command tags skipped
+test: renamenx command passed
+test: renamenx command tags skipped
+test: randomkey command passed
+test: exists command passed
+test: ttl command passed
+test: pttl command passed
+test: expire command passed
+test: expire with NX / XX version skipped
+test: expire with GT / LT version skipped
+test: expireat command passed
+test: expireat with NX / XX version skipped
+test: expireat with GT / LT version skipped
+test: pexpire command passed
+test: pexpire with NX / XX version skipped
+test: pexpire with GT / LT version skipped
+test: pexpireat command passed
+test: pexpireat with NX / XX version skipped
+test: pexpireat with GT / LT version skipped
+test: expiretime command version skipped
+test: pexpiretime command version skipped
+test: persist command passed
+test: dump command passed
+test: touch command passed
+test: restore command passed
+test: restore with REPLACE passed
+test: restore with ABSTTL version skipped
+test: restore with IDLETIME version skipped
+test: scan command passed
+test: scan with TYPE version skipped
+test: keys command passed
+test: move command passed
+test: copy command version skipped
+test: copy command tags skipped
+test: type command passed
+test: sort command passed
+test: sort_ro command skipped
+test: set command passed
+test: blmove command version skipped
+test: blmove command tags skipped
+test: blmpop command version skipped
+test: blmpop with COUNT version skipped
+test: blmpop with COUNT tags skipped
+test: blpop command passed
+test: blpop command tags skipped
+test: blpop with double timeout version skipped
+test: blpop with double timeout tags skipped
+test: brpop command passed
+test: brpop command tags skipped
+test: brpop with double timeout version skipped
+test: brpop with double timeout tags skipped
+test: brpoplpush command passed
+test: brpoplpush command tags skipped
+test: brpoplpush with double timeout version skipped
+test: brpoplpush with double timeout tags skipped
+test: lindex command passed
+test: linsert command passed
+test: llen command passed
+test: lmove command version skipped
+test: lmove command tags skipped
+test: lmpop command version skipped
+test: lmpop with COUNT version skipped
+test: lmpop with COUNT tags skipped
+test: lpop command passed
+test: lpop with COUNT version skipped
+test: lpos command version skipped
+test: lpos with RANK version skipped
+test: lpos with COUNT version skipped
+test: lpos with MAXLEN version skipped
+test: lpos with RANK, COUNT and MAXLEN version skipped
+test: lpush command passed
+test: lpush with multiple element passed
+test: lpushx command passed
+test: lpushx with multiple element passed
+test: lrange command passed
+test: lrem command passed
+test: lset command passed
+test: ltrim command passed
+test: rpop command passed
+test: rpop with COUNT version skipped
+test: rpoplpush command passed
+test: rpoplpush command tags skipped
+test: rpush command passed
+test: rpush with multiple element passed
+test: rpushx command passed
+test: rpushx command tags skipped
+test: rpushx with multiple element passed
+test: rpushx with multiple element tags skipped
+test: sadd command passed
+test: sadd command passed
+test: scard command passed
+test: sdiff command passed
+test: sdiff command tags skipped
+test: sdiffstore command passed
+test: sdiffstore command tags skipped
+test: sinter command passed
+test: sinter command tags skipped
+test: sintercard command version skipped
+test: sintercard command tags skipped
+test: sintercard with LIMIT version skipped
+test: sintercard with LIMIT tags skipped
+test: sinterstore command passed
+test: sinterstore command tags skipped
+test: sismember command passed
+test: smembers command passed
+test: smismember command version skipped
+test: smove command passed
+test: smove command tags skipped
+test: spop command passed
+test: spop with COUNT passed
+test: srandmember command passed
+test: srandmember with COUNT passed
+test: srem command passed
+test: srem with multiple member passed
+test: sscan command passed
+test: sscan with MATCH and COUNT passed
+test: sunion command passed
+test: sunion command tags skipped
+test: sunionstore command passed
+test: sunionstore command tags skipped
+test: bzmpop command version skipped
+test: bzmpop command tags skipped
+test: bzmpop with COUNT version skipped
+test: bzmpop with COUNT version skipped
+test: bzpopmax command version skipped
+test: bzpopmax with double timeout version skipped
+test: bzpopmin command version skipped
+test: bzpopmin with double timeout version skipped
+test: zadd command passed
+test: zadd with multiple elements passed
+test: zadd with XX / NX / CH / INCR passed
+test: zadd with GT / LT version skipped
+test: zcard command passed
+test: zcount command passed
+test: zdiff command version skipped
+test: zdiff command tags skipped
+test: zdiffstore command version skipped
+test: zdiffstore command tags skipped
+test: zincrby command passed
+test: zinter command version skipped
+test: zinter command tags skipped
+test: zinter with WEIGHTS version skipped
+test: zinter with WEIGHTS tags skipped
+test: zinter with AGGREGATE version skipped
+test: zinter with AGGREGATE tags skipped
+test: zinter WITHSCORES version skipped
+test: zinter WITHSCORES tags skipped
+test: zintercard command version skipped
+test: zintercard command tags skipped
+test: zintercard with LIMIT version skipped
+test: zintercard with LIMIT tags skipped
+test: zinterstore command passed
+test: zinterstore command tags skipped
+test: zinterstore with WEIGHTS passed
+test: zinterstore with WEIGHTS tags skipped
+test: zinterstore with AGGREGATE passed
+test: zinterstore with AGGREGATE tags skipped
+test: zlexcount command passed
+test: zmpop command version skipped
+test: zmpop with COUNT version skipped
+test: zmscore command version skipped
+test: zpopmax command version skipped
+test: zpopmax with COUNT version skipped
+test: zpopmin command version skipped
+test: zpopmin command version skipped
+test: zrandmember command version skipped
+test: zrandmember with COUNT version skipped
+test: zrandmember with WITHSCORES version skipped
+test: zrange command passed
+test: zrange with WITHSCORES passed
+test: zrange with BYSCORE / BYLEX version skipped
+test: zrange with REV version skipped
+test: zrange with LIMIT version skipped
+test: zrangebylex command passed
+test: zrangebylex with LIMIT passed
+test: zrangebyscore command passed
+test: zrangebyscore with LIMIT passed
+test: zrangebyscore with WITHSCORES passed
+test: zrangestore command version skipped
+test: zrangestore command tags skipped
+test: zrangestore with BYSCORE / BYLEX version skipped
+test: zrangestore with BYSCORE / BYLEX tags skipped
+test: zrangestore with REV version skipped
+test: zrangestore with REV tags skipped
+test: zrangestore with LIMIT version skipped
+test: zrangestore with LIMIT tags skipped
+test: zrank command passed
+test: zrank with WITHSCORE version skipped
+test: zrem command passed
+test: zrem with multiple elements passed
+test: zremrangebylex command passed
+test: zremrangebyrank command passed
+test: zremrangebyscore command passed
+test: zrevrange command passed
+test: zrevrange with WITHSCORES passed
+test: zrevrangebylex command passed
+test: zrevrangebylex with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrangebyscore with WITHSCORES passed
+test: zrevrangebyscore with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrank command passed
+test: zrevrank with WITHSCORE version skipped
+test: zscan command passed
+test: zscan with MATCH and COUNT passed
+test: zscore command passed
+test: zunion command version skipped
+test: zunion command tags skipped
+test: zunion with WEIGHTS and AGGREGATE version skipped
+test: zunion with WEIGHTS and AGGREGATE tags skipped
+test: zunion with WITHSCORES version skipped
+test: zunion with WITHSCORES tags skipped
+test: zunionstore command passed
+test: zunionstore command tags skipped
+test: zunionstore with WEIGHTS and AGGREGATE passed
+test: zunionstore with WEIGHTS and AGGREGATE tags skipped
+test: append command passed
+test: decr command passed
+test: decrby command passed
+test: get command passed
+test: getdel command version skipped
+test: getex command version skipped
+test: getex with EX version skipped
+test: getex with PX version skipped
+test: getex with EXAT version skipped
+test: getex with PXAT version skipped
+test: getex with PERSIST version skipped
+test: getrange command passed
+test: getset command passed
+test: incr command passed
+test: incrby command passed
+test: incrbyfloat command passed
+test: lcs command version skipped
+test: lcs command tags skipped
+test: lcs with LEN version skipped
+test: lcs with LEN tags skipped
+test: lcs with IDX version skipped
+test: lcs with IDX tags skipped
+test: lcs with MINMATCHLEN version skipped
+test: lcs with MINMATCHLEN tags skipped
+test: lcs with WITHMATCHLEN version skipped
+test: lcs with WITHMATCHLEN tags skipped
+test: mget command passed
+test: mget command tags skipped
+test: mset command passed
+test: mset command tags skipped
+test: msetnx command passed
+test: msetnx command tags skipped
+test: psetex command passed
+test: set command passed
+test: set with EX / PX passed
+test: set with NX / XX passed
+test: set with KEEPTTL version skipped
+test: set with GET version skipped
+test: set with EXAT / PXAT version skipped
+test: set with NX and GET version skipped
+test: setex command passed
+test: setnx command passed
+test: setrange command passed
+test: strlen command passed
+test: substr command passed
+test: hdel command passed
+test: hdel with multiple field passed
+test: hexists command passed
+test: hget command passed
+test: hgetall command passed
+test: hincrby command passed
+test: hincrbyfloat command passed
+test: hkeys command passed
+test: hlen command passed
+test: hmget command passed
+test: hmset command passed
+test: hrandfield command version skipped
+test: hrandfield with COUNT version skipped
+test: hrandfield with WITHVALUES version skipped
+test: hscan command passed
+test: hscan with MATCH and COUNT passed
+test: hset command passed
+test: hset command with multiple field and value passed
+test: hsetnx command passed
+test: hstrlen command passed
+test: hvals command passed
+test: bitcount command passed
+test: bitcount with BYTE / BIT version skipped
+test: bitfield command passed
+test: bitfield_ro command version skipped
+test: bitop command passed
+test: bitop command tags skipped
+test: bitpos command passed
+test: bitpos with BYTE / BIT version skipped
+test: getbit command passed
+test: setbit command passed
+test: pfadd command passed
+test: pfcount command passed
+test: pfmerge command passed
+test: pfmerge command tags skipped
+test: geoadd command passed
+test: geoadd with CH / NX / XX version skipped
+test: geodist command passed
+test: geodist with M / KM / FT / MI passed
+test: geohash command passed
+test: geopos command passed
+test: georadius command passed
+test: georadius with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius with COUNT passed
+test: georadius with ASC / DESC passed
+test: georadius with STORE / STOREDIST passed
+test: georadius with STORE / STOREDIST tags skipped
+test: georadius with ANY option for COUNT version skipped
+test: georadius with support for uppercase unit names version skipped
+test: georadius_ro command passed
+test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius_ro with COUNT passed
+test: georadius_ro with ASC / DESC passed
+test: georadius_ro with ANY option for COUNT version skipped
+test: georadiusbymember command passed
+test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember with COUNT passed
+test: georadiusbymember with ASC / DESC passed
+test: georadiusbymember with STORE / STOREDIST passed
+test: georadiusbymember with STORE / STOREDIST tags skipped
+test: georadiusbymember with ANY option for COUNT version skipped
+test: georadiusbymember with support for uppercase unit names version skipped
+test: georadiusbymember_ro command passed
+test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember_ro with COUNT passed
+test: georadiusbymember_ro with ASC / DESC passed
+test: georadiusbymember_ro with ANY option for COUNT version skipped
+test: geosearch command version skipped
+test: geosearch with ASC / DESC version skipped
+test: geosearch with COUNT version skipped
+test: geosearch with WITHCOORD / WITHDIST / WITHHASH version skipped
+test: geosearch with support for uppercase unit names version skipped
+test: geosearchstore command version skipped
+test: geosearchstore command tags skipped
+test: geosearchstore with ASC / DESC version skipped
+test: geosearchstore with ASC / DESC tags skipped
+test: geosearchstore with COUNT version skipped
+test: geosearchstore with COUNT tags skipped
+test: geosearchstore with STOREDIST version skipped
+test: geosearchstore with STOREDIST tags skipped
+test: geosearchstore with support for uppercase unit names version skipped
+test: geosearchstore with support for uppercase unit names tags skipped
+test: dbsize command passed
+test: flushall command passed
+test: flushall with async passed
+test: flushall with sync version skipped
+test: flushdb command passed
+test: flushdb with async passed
+test: flushdb with sync version skipped
+test: swapdb command passed
+test: discard command passed
+test: exec command passed
+test: multi command passed
+test: unwatch command passed
+test: watch command passed
+test: eval command passed
+test: eval_ro command version skipped
+test: evalsha command passed
+test: evalsha_ro command version skipped
+test: fcall command version skipped
+test: fcall_ro command version skipped
+test: function delete command version skipped
+test: function flush command version skipped
+test: function flush with SYNC version skipped
+test: function flush with ASYNC version skipped
+test: function list command version skipped
+test: function load command version skipped
+test: function restore command version skipped
+test: function stats command version skipped
+test: script exists command passed
+test: script flush command passed
+test: script flush with SYNC version skipped
+test: script flush with ASYNC version skipped
+test: script load command passed
+test: xack command version skipped
+test: xadd command version skipped
+test: xadd with NOMKSTREAM/MINID/LIMIT version skipped
+test: xadd with EXPLICIT ID version skipped
+test: xclaim command version skipped
+test: xdel command version skipped
+test: xgroup create command version skipped
+test: xgroup create with MKSTREAM version skipped
+test: xgroup create with ENTRIESREAD version skipped
+test: xgroup createconsumer command version skipped
+test: xgroup delconsumer command version skipped
+test: xgroup destroy command version skipped
+test: xgroup setid command version skipped
+test: xgroup setid with ENTRIESREAD version skipped
+test: xlen command version skipped
+test: xpending command version skipped
+test: xrange command version skipped
+test: xread command version skipped
+test: xreadgroup command version skipped
+test: xrevrange command version skipped
+test: xrevrange command with EXCLUSIVE RANGES version skipped
+test: xtrim command version skipped
+test: xtrim command with MINID/LIMIT version skipped
+test: psubscribe command passed
+test: psubscribe with RESET version skipped
+test: publish command passed
+test: pubsub channels command passed
+test: pubsub numpat command passed
+test: pubsub numsub command passed
+test: pubsub shardchannels command version skipped
+test: pubsub shardnumsub command version skipped
+test: punsubscribe command passed
+test: spublish command version skipped
+test: ssubscribe command version skipped
+test: subscribe command passed
+test: subscribe with RESET version skipped
+test: sunsubscribe command version skipped
+test: unsubscribe command passed
+-------- The result of tests --------
+Summary: version: 4.0.0, total tests: 196, passed: 196, rate: 100.00%
+</pre>
diff --git a/KeyDB-5.0.0.html b/KeyDB-5.0.0.html
new file mode 100644
index 0000000..79ebad2
--- /dev/null
+++ b/KeyDB-5.0.0.html
@@ -0,0 +1,420 @@
+<pre>
+test: del command passed
+test: unlink command passed
+test: rename command passed
+test: rename command tags skipped
+test: renamenx command passed
+test: renamenx command tags skipped
+test: randomkey command passed
+test: exists command passed
+test: ttl command passed
+test: pttl command passed
+test: expire command passed
+test: expire with NX / XX version skipped
+test: expire with GT / LT version skipped
+test: expireat command passed
+test: expireat with NX / XX version skipped
+test: expireat with GT / LT version skipped
+test: pexpire command passed
+test: pexpire with NX / XX version skipped
+test: pexpire with GT / LT version skipped
+test: pexpireat command passed
+test: pexpireat with NX / XX version skipped
+test: pexpireat with GT / LT version skipped
+test: expiretime command version skipped
+test: pexpiretime command version skipped
+test: persist command passed
+test: dump command passed
+test: touch command passed
+test: restore command passed
+test: restore with REPLACE passed
+test: restore with ABSTTL passed
+test: restore with IDLETIME passed
+test: scan command passed
+test: scan with TYPE version skipped
+test: keys command passed
+test: move command passed
+test: copy command version skipped
+test: copy command tags skipped
+test: type command passed
+test: sort command passed
+test: sort_ro command skipped
+test: set command passed
+test: blmove command version skipped
+test: blmove command tags skipped
+test: blmpop command version skipped
+test: blmpop with COUNT version skipped
+test: blmpop with COUNT tags skipped
+test: blpop command passed
+test: blpop command tags skipped
+test: blpop with double timeout version skipped
+test: blpop with double timeout tags skipped
+test: brpop command passed
+test: brpop command tags skipped
+test: brpop with double timeout version skipped
+test: brpop with double timeout tags skipped
+test: brpoplpush command passed
+test: brpoplpush command tags skipped
+test: brpoplpush with double timeout version skipped
+test: brpoplpush with double timeout tags skipped
+test: lindex command passed
+test: linsert command passed
+test: llen command passed
+test: lmove command version skipped
+test: lmove command tags skipped
+test: lmpop command version skipped
+test: lmpop with COUNT version skipped
+test: lmpop with COUNT tags skipped
+test: lpop command passed
+test: lpop with COUNT version skipped
+test: lpos command version skipped
+test: lpos with RANK version skipped
+test: lpos with COUNT version skipped
+test: lpos with MAXLEN version skipped
+test: lpos with RANK, COUNT and MAXLEN version skipped
+test: lpush command passed
+test: lpush with multiple element passed
+test: lpushx command passed
+test: lpushx with multiple element passed
+test: lrange command passed
+test: lrem command passed
+test: lset command passed
+test: ltrim command passed
+test: rpop command passed
+test: rpop with COUNT version skipped
+test: rpoplpush command passed
+test: rpoplpush command tags skipped
+test: rpush command passed
+test: rpush with multiple element passed
+test: rpushx command passed
+test: rpushx command tags skipped
+test: rpushx with multiple element passed
+test: rpushx with multiple element tags skipped
+test: sadd command passed
+test: sadd command passed
+test: scard command passed
+test: sdiff command passed
+test: sdiff command tags skipped
+test: sdiffstore command passed
+test: sdiffstore command tags skipped
+test: sinter command passed
+test: sinter command tags skipped
+test: sintercard command version skipped
+test: sintercard command tags skipped
+test: sintercard with LIMIT version skipped
+test: sintercard with LIMIT tags skipped
+test: sinterstore command passed
+test: sinterstore command tags skipped
+test: sismember command passed
+test: smembers command passed
+test: smismember command version skipped
+test: smove command passed
+test: smove command tags skipped
+test: spop command passed
+test: spop with COUNT passed
+test: srandmember command passed
+test: srandmember with COUNT passed
+test: srem command passed
+test: srem with multiple member passed
+test: sscan command passed
+test: sscan with MATCH and COUNT passed
+test: sunion command passed
+test: sunion command tags skipped
+test: sunionstore command passed
+test: sunionstore command tags skipped
+test: bzmpop command version skipped
+test: bzmpop command tags skipped
+test: bzmpop with COUNT version skipped
+test: bzmpop with COUNT version skipped
+test: bzpopmax command passed
+test: bzpopmax with double timeout version skipped
+test: bzpopmin command passed
+test: bzpopmin with double timeout version skipped
+test: zadd command passed
+test: zadd with multiple elements passed
+test: zadd with XX / NX / CH / INCR passed
+test: zadd with GT / LT version skipped
+test: zcard command passed
+test: zcount command passed
+test: zdiff command version skipped
+test: zdiff command tags skipped
+test: zdiffstore command version skipped
+test: zdiffstore command tags skipped
+test: zincrby command passed
+test: zinter command version skipped
+test: zinter command tags skipped
+test: zinter with WEIGHTS version skipped
+test: zinter with WEIGHTS tags skipped
+test: zinter with AGGREGATE version skipped
+test: zinter with AGGREGATE tags skipped
+test: zinter WITHSCORES version skipped
+test: zinter WITHSCORES tags skipped
+test: zintercard command version skipped
+test: zintercard command tags skipped
+test: zintercard with LIMIT version skipped
+test: zintercard with LIMIT tags skipped
+test: zinterstore command passed
+test: zinterstore command tags skipped
+test: zinterstore with WEIGHTS passed
+test: zinterstore with WEIGHTS tags skipped
+test: zinterstore with AGGREGATE passed
+test: zinterstore with AGGREGATE tags skipped
+test: zlexcount command passed
+test: zmpop command version skipped
+test: zmpop with COUNT version skipped
+test: zmscore command version skipped
+test: zpopmax command passed
+test: zpopmax with COUNT passed
+test: zpopmin command passed
+test: zpopmin command passed
+test: zrandmember command version skipped
+test: zrandmember with COUNT version skipped
+test: zrandmember with WITHSCORES version skipped
+test: zrange command passed
+test: zrange with WITHSCORES passed
+test: zrange with BYSCORE / BYLEX version skipped
+test: zrange with REV version skipped
+test: zrange with LIMIT version skipped
+test: zrangebylex command passed
+test: zrangebylex with LIMIT passed
+test: zrangebyscore command passed
+test: zrangebyscore with LIMIT passed
+test: zrangebyscore with WITHSCORES passed
+test: zrangestore command version skipped
+test: zrangestore command tags skipped
+test: zrangestore with BYSCORE / BYLEX version skipped
+test: zrangestore with BYSCORE / BYLEX tags skipped
+test: zrangestore with REV version skipped
+test: zrangestore with REV tags skipped
+test: zrangestore with LIMIT version skipped
+test: zrangestore with LIMIT tags skipped
+test: zrank command passed
+test: zrank with WITHSCORE version skipped
+test: zrem command passed
+test: zrem with multiple elements passed
+test: zremrangebylex command passed
+test: zremrangebyrank command passed
+test: zremrangebyscore command passed
+test: zrevrange command passed
+test: zrevrange with WITHSCORES passed
+test: zrevrangebylex command passed
+test: zrevrangebylex with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrangebyscore with WITHSCORES passed
+test: zrevrangebyscore with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrank command passed
+test: zrevrank with WITHSCORE version skipped
+test: zscan command passed
+test: zscan with MATCH and COUNT passed
+test: zscore command passed
+test: zunion command version skipped
+test: zunion command tags skipped
+test: zunion with WEIGHTS and AGGREGATE version skipped
+test: zunion with WEIGHTS and AGGREGATE tags skipped
+test: zunion with WITHSCORES version skipped
+test: zunion with WITHSCORES tags skipped
+test: zunionstore command passed
+test: zunionstore command tags skipped
+test: zunionstore with WEIGHTS and AGGREGATE passed
+test: zunionstore with WEIGHTS and AGGREGATE tags skipped
+test: append command passed
+test: decr command passed
+test: decrby command passed
+test: get command passed
+test: getdel command version skipped
+test: getex command version skipped
+test: getex with EX version skipped
+test: getex with PX version skipped
+test: getex with EXAT version skipped
+test: getex with PXAT version skipped
+test: getex with PERSIST version skipped
+test: getrange command passed
+test: getset command passed
+test: incr command passed
+test: incrby command passed
+test: incrbyfloat command passed
+test: lcs command version skipped
+test: lcs command tags skipped
+test: lcs with LEN version skipped
+test: lcs with LEN tags skipped
+test: lcs with IDX version skipped
+test: lcs with IDX tags skipped
+test: lcs with MINMATCHLEN version skipped
+test: lcs with MINMATCHLEN tags skipped
+test: lcs with WITHMATCHLEN version skipped
+test: lcs with WITHMATCHLEN tags skipped
+test: mget command passed
+test: mget command tags skipped
+test: mset command passed
+test: mset command tags skipped
+test: msetnx command passed
+test: msetnx command tags skipped
+test: psetex command passed
+test: set command passed
+test: set with EX / PX passed
+test: set with NX / XX passed
+test: set with KEEPTTL version skipped
+test: set with GET version skipped
+test: set with EXAT / PXAT version skipped
+test: set with NX and GET version skipped
+test: setex command passed
+test: setnx command passed
+test: setrange command passed
+test: strlen command passed
+test: substr command passed
+test: hdel command passed
+test: hdel with multiple field passed
+test: hexists command passed
+test: hget command passed
+test: hgetall command passed
+test: hincrby command passed
+test: hincrbyfloat command passed
+test: hkeys command passed
+test: hlen command passed
+test: hmget command passed
+test: hmset command passed
+test: hrandfield command version skipped
+test: hrandfield with COUNT version skipped
+test: hrandfield with WITHVALUES version skipped
+test: hscan command passed
+test: hscan with MATCH and COUNT passed
+test: hset command passed
+test: hset command with multiple field and value passed
+test: hsetnx command passed
+test: hstrlen command passed
+test: hvals command passed
+test: bitcount command passed
+test: bitcount with BYTE / BIT version skipped
+test: bitfield command passed
+test: bitfield_ro command version skipped
+test: bitop command passed
+test: bitop command tags skipped
+test: bitpos command passed
+test: bitpos with BYTE / BIT version skipped
+test: getbit command passed
+test: setbit command passed
+test: pfadd command passed
+test: pfcount command passed
+test: pfmerge command passed
+test: pfmerge command tags skipped
+test: geoadd command passed
+test: geoadd with CH / NX / XX version skipped
+test: geodist command passed
+test: geodist with M / KM / FT / MI passed
+test: geohash command passed
+test: geopos command passed
+test: georadius command passed
+test: georadius with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius with COUNT passed
+test: georadius with ASC / DESC passed
+test: georadius with STORE / STOREDIST passed
+test: georadius with STORE / STOREDIST tags skipped
+test: georadius with ANY option for COUNT version skipped
+test: georadius with support for uppercase unit names version skipped
+test: georadius_ro command passed
+test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius_ro with COUNT passed
+test: georadius_ro with ASC / DESC passed
+test: georadius_ro with ANY option for COUNT version skipped
+test: georadiusbymember command passed
+test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember with COUNT passed
+test: georadiusbymember with ASC / DESC passed
+test: georadiusbymember with STORE / STOREDIST passed
+test: georadiusbymember with STORE / STOREDIST tags skipped
+test: georadiusbymember with ANY option for COUNT version skipped
+test: georadiusbymember with support for uppercase unit names version skipped
+test: georadiusbymember_ro command passed
+test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember_ro with COUNT passed
+test: georadiusbymember_ro with ASC / DESC passed
+test: georadiusbymember_ro with ANY option for COUNT version skipped
+test: geosearch command version skipped
+test: geosearch with ASC / DESC version skipped
+test: geosearch with COUNT version skipped
+test: geosearch with WITHCOORD / WITHDIST / WITHHASH version skipped
+test: geosearch with support for uppercase unit names version skipped
+test: geosearchstore command version skipped
+test: geosearchstore command tags skipped
+test: geosearchstore with ASC / DESC version skipped
+test: geosearchstore with ASC / DESC tags skipped
+test: geosearchstore with COUNT version skipped
+test: geosearchstore with COUNT tags skipped
+test: geosearchstore with STOREDIST version skipped
+test: geosearchstore with STOREDIST tags skipped
+test: geosearchstore with support for uppercase unit names version skipped
+test: geosearchstore with support for uppercase unit names tags skipped
+test: dbsize command passed
+test: flushall command passed
+test: flushall with async passed
+test: flushall with sync version skipped
+test: flushdb command passed
+test: flushdb with async passed
+test: flushdb with sync version skipped
+test: swapdb command passed
+test: discard command passed
+test: exec command passed
+test: multi command passed
+test: unwatch command passed
+test: watch command passed
+test: eval command passed
+test: eval_ro command version skipped
+test: evalsha command passed
+test: evalsha_ro command version skipped
+test: fcall command version skipped
+test: fcall_ro command version skipped
+test: function delete command version skipped
+test: function flush command version skipped
+test: function flush with SYNC version skipped
+test: function flush with ASYNC version skipped
+test: function list command version skipped
+test: function load command version skipped
+test: function restore command version skipped
+test: function stats command version skipped
+test: script exists command passed
+test: script flush command passed
+test: script flush with SYNC version skipped
+test: script flush with ASYNC version skipped
+test: script load command passed
+test: xack command passed
+test: xadd command passed
+test: xadd with NOMKSTREAM/MINID/LIMIT version skipped
+test: xadd with EXPLICIT ID version skipped
+test: xclaim command passed
+test: xdel command passed
+test: xgroup create command passed
+test: xgroup create with MKSTREAM passed
+test: xgroup create with ENTRIESREAD version skipped
+test: xgroup createconsumer command version skipped
+test: xgroup delconsumer command passed
+test: xgroup destroy command passed
+test: xgroup setid command passed
+test: xgroup setid with ENTRIESREAD version skipped
+test: xlen command passed
+test: xpending command passed
+test: xrange command passed
+test: xread command passed
+test: xreadgroup command passed
+test: xrevrange command passed
+test: xrevrange command with EXCLUSIVE RANGES version skipped
+test: xtrim command passed
+test: xtrim command with MINID/LIMIT version skipped
+test: psubscribe command passed
+test: psubscribe with RESET version skipped
+test: publish command passed
+test: pubsub channels command passed
+test: pubsub numpat command passed
+test: pubsub numsub command passed
+test: pubsub shardchannels command version skipped
+test: pubsub shardnumsub command version skipped
+test: punsubscribe command passed
+test: spublish command version skipped
+test: ssubscribe command version skipped
+test: subscribe command passed
+test: subscribe with RESET version skipped
+test: sunsubscribe command version skipped
+test: unsubscribe command passed
+-------- The result of tests --------
+Summary: version: 5.0.0, total tests: 220, passed: 220, rate: 100.00%
+</pre>
diff --git a/KeyDB-6.0.0.html b/KeyDB-6.0.0.html
new file mode 100644
index 0000000..e5297ad
--- /dev/null
+++ b/KeyDB-6.0.0.html
@@ -0,0 +1,420 @@
+<pre>
+test: del command passed
+test: unlink command passed
+test: rename command passed
+test: rename command tags skipped
+test: renamenx command passed
+test: renamenx command tags skipped
+test: randomkey command passed
+test: exists command passed
+test: ttl command passed
+test: pttl command passed
+test: expire command passed
+test: expire with NX / XX version skipped
+test: expire with GT / LT version skipped
+test: expireat command passed
+test: expireat with NX / XX version skipped
+test: expireat with GT / LT version skipped
+test: pexpire command passed
+test: pexpire with NX / XX version skipped
+test: pexpire with GT / LT version skipped
+test: pexpireat command passed
+test: pexpireat with NX / XX version skipped
+test: pexpireat with GT / LT version skipped
+test: expiretime command version skipped
+test: pexpiretime command version skipped
+test: persist command passed
+test: dump command passed
+test: touch command passed
+test: restore command passed
+test: restore with REPLACE passed
+test: restore with ABSTTL passed
+test: restore with IDLETIME passed
+test: scan command passed
+test: scan with TYPE passed
+test: keys command passed
+test: move command passed
+test: copy command version skipped
+test: copy command tags skipped
+test: type command passed
+test: sort command passed
+test: sort_ro command skipped
+test: set command passed
+test: blmove command version skipped
+test: blmove command tags skipped
+test: blmpop command version skipped
+test: blmpop with COUNT version skipped
+test: blmpop with COUNT tags skipped
+test: blpop command passed
+test: blpop command tags skipped
+test: blpop with double timeout passed
+test: blpop with double timeout tags skipped
+test: brpop command passed
+test: brpop command tags skipped
+test: brpop with double timeout passed
+test: brpop with double timeout tags skipped
+test: brpoplpush command passed
+test: brpoplpush command tags skipped
+test: brpoplpush with double timeout passed
+test: brpoplpush with double timeout tags skipped
+test: lindex command passed
+test: linsert command passed
+test: llen command passed
+test: lmove command version skipped
+test: lmove command tags skipped
+test: lmpop command version skipped
+test: lmpop with COUNT version skipped
+test: lmpop with COUNT tags skipped
+test: lpop command passed
+test: lpop with COUNT version skipped
+test: lpos command version skipped
+test: lpos with RANK version skipped
+test: lpos with COUNT version skipped
+test: lpos with MAXLEN version skipped
+test: lpos with RANK, COUNT and MAXLEN version skipped
+test: lpush command passed
+test: lpush with multiple element passed
+test: lpushx command passed
+test: lpushx with multiple element passed
+test: lrange command passed
+test: lrem command passed
+test: lset command passed
+test: ltrim command passed
+test: rpop command passed
+test: rpop with COUNT version skipped
+test: rpoplpush command passed
+test: rpoplpush command tags skipped
+test: rpush command passed
+test: rpush with multiple element passed
+test: rpushx command passed
+test: rpushx command tags skipped
+test: rpushx with multiple element passed
+test: rpushx with multiple element tags skipped
+test: sadd command passed
+test: sadd command passed
+test: scard command passed
+test: sdiff command passed
+test: sdiff command tags skipped
+test: sdiffstore command passed
+test: sdiffstore command tags skipped
+test: sinter command passed
+test: sinter command tags skipped
+test: sintercard command version skipped
+test: sintercard command tags skipped
+test: sintercard with LIMIT version skipped
+test: sintercard with LIMIT tags skipped
+test: sinterstore command passed
+test: sinterstore command tags skipped
+test: sismember command passed
+test: smembers command passed
+test: smismember command version skipped
+test: smove command passed
+test: smove command tags skipped
+test: spop command passed
+test: spop with COUNT passed
+test: srandmember command passed
+test: srandmember with COUNT passed
+test: srem command passed
+test: srem with multiple member passed
+test: sscan command passed
+test: sscan with MATCH and COUNT passed
+test: sunion command passed
+test: sunion command tags skipped
+test: sunionstore command passed
+test: sunionstore command tags skipped
+test: bzmpop command version skipped
+test: bzmpop command tags skipped
+test: bzmpop with COUNT version skipped
+test: bzmpop with COUNT version skipped
+test: bzpopmax command passed
+test: bzpopmax with double timeout passed
+test: bzpopmin command passed
+test: bzpopmin with double timeout passed
+test: zadd command passed
+test: zadd with multiple elements passed
+test: zadd with XX / NX / CH / INCR passed
+test: zadd with GT / LT version skipped
+test: zcard command passed
+test: zcount command passed
+test: zdiff command version skipped
+test: zdiff command tags skipped
+test: zdiffstore command version skipped
+test: zdiffstore command tags skipped
+test: zincrby command passed
+test: zinter command version skipped
+test: zinter command tags skipped
+test: zinter with WEIGHTS version skipped
+test: zinter with WEIGHTS tags skipped
+test: zinter with AGGREGATE version skipped
+test: zinter with AGGREGATE tags skipped
+test: zinter WITHSCORES version skipped
+test: zinter WITHSCORES tags skipped
+test: zintercard command version skipped
+test: zintercard command tags skipped
+test: zintercard with LIMIT version skipped
+test: zintercard with LIMIT tags skipped
+test: zinterstore command passed
+test: zinterstore command tags skipped
+test: zinterstore with WEIGHTS passed
+test: zinterstore with WEIGHTS tags skipped
+test: zinterstore with AGGREGATE passed
+test: zinterstore with AGGREGATE tags skipped
+test: zlexcount command passed
+test: zmpop command version skipped
+test: zmpop with COUNT version skipped
+test: zmscore command version skipped
+test: zpopmax command passed
+test: zpopmax with COUNT passed
+test: zpopmin command passed
+test: zpopmin command passed
+test: zrandmember command version skipped
+test: zrandmember with COUNT version skipped
+test: zrandmember with WITHSCORES version skipped
+test: zrange command passed
+test: zrange with WITHSCORES passed
+test: zrange with BYSCORE / BYLEX version skipped
+test: zrange with REV version skipped
+test: zrange with LIMIT version skipped
+test: zrangebylex command passed
+test: zrangebylex with LIMIT passed
+test: zrangebyscore command passed
+test: zrangebyscore with LIMIT passed
+test: zrangebyscore with WITHSCORES passed
+test: zrangestore command version skipped
+test: zrangestore command tags skipped
+test: zrangestore with BYSCORE / BYLEX version skipped
+test: zrangestore with BYSCORE / BYLEX tags skipped
+test: zrangestore with REV version skipped
+test: zrangestore with REV tags skipped
+test: zrangestore with LIMIT version skipped
+test: zrangestore with LIMIT tags skipped
+test: zrank command passed
+test: zrank with WITHSCORE version skipped
+test: zrem command passed
+test: zrem with multiple elements passed
+test: zremrangebylex command passed
+test: zremrangebyrank command passed
+test: zremrangebyscore command passed
+test: zrevrange command passed
+test: zrevrange with WITHSCORES passed
+test: zrevrangebylex command passed
+test: zrevrangebylex with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrangebyscore with WITHSCORES passed
+test: zrevrangebyscore with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrank command passed
+test: zrevrank with WITHSCORE version skipped
+test: zscan command passed
+test: zscan with MATCH and COUNT passed
+test: zscore command passed
+test: zunion command version skipped
+test: zunion command tags skipped
+test: zunion with WEIGHTS and AGGREGATE version skipped
+test: zunion with WEIGHTS and AGGREGATE tags skipped
+test: zunion with WITHSCORES version skipped
+test: zunion with WITHSCORES tags skipped
+test: zunionstore command passed
+test: zunionstore command tags skipped
+test: zunionstore with WEIGHTS and AGGREGATE passed
+test: zunionstore with WEIGHTS and AGGREGATE tags skipped
+test: append command passed
+test: decr command passed
+test: decrby command passed
+test: get command passed
+test: getdel command version skipped
+test: getex command version skipped
+test: getex with EX version skipped
+test: getex with PX version skipped
+test: getex with EXAT version skipped
+test: getex with PXAT version skipped
+test: getex with PERSIST version skipped
+test: getrange command passed
+test: getset command passed
+test: incr command passed
+test: incrby command passed
+test: incrbyfloat command passed
+test: lcs command version skipped
+test: lcs command tags skipped
+test: lcs with LEN version skipped
+test: lcs with LEN tags skipped
+test: lcs with IDX version skipped
+test: lcs with IDX tags skipped
+test: lcs with MINMATCHLEN version skipped
+test: lcs with MINMATCHLEN tags skipped
+test: lcs with WITHMATCHLEN version skipped
+test: lcs with WITHMATCHLEN tags skipped
+test: mget command passed
+test: mget command tags skipped
+test: mset command passed
+test: mset command tags skipped
+test: msetnx command passed
+test: msetnx command tags skipped
+test: psetex command passed
+test: set command passed
+test: set with EX / PX passed
+test: set with NX / XX passed
+test: set with KEEPTTL passed
+test: set with GET version skipped
+test: set with EXAT / PXAT version skipped
+test: set with NX and GET version skipped
+test: setex command passed
+test: setnx command passed
+test: setrange command passed
+test: strlen command passed
+test: substr command passed
+test: hdel command passed
+test: hdel with multiple field passed
+test: hexists command passed
+test: hget command passed
+test: hgetall command passed
+test: hincrby command passed
+test: hincrbyfloat command passed
+test: hkeys command passed
+test: hlen command passed
+test: hmget command passed
+test: hmset command passed
+test: hrandfield command version skipped
+test: hrandfield with COUNT version skipped
+test: hrandfield with WITHVALUES version skipped
+test: hscan command passed
+test: hscan with MATCH and COUNT passed
+test: hset command passed
+test: hset command with multiple field and value passed
+test: hsetnx command passed
+test: hstrlen command passed
+test: hvals command passed
+test: bitcount command passed
+test: bitcount with BYTE / BIT version skipped
+test: bitfield command passed
+test: bitfield_ro command passed
+test: bitop command passed
+test: bitop command tags skipped
+test: bitpos command passed
+test: bitpos with BYTE / BIT version skipped
+test: getbit command passed
+test: setbit command passed
+test: pfadd command passed
+test: pfcount command passed
+test: pfmerge command passed
+test: pfmerge command tags skipped
+test: geoadd command passed
+test: geoadd with CH / NX / XX version skipped
+test: geodist command passed
+test: geodist with M / KM / FT / MI passed
+test: geohash command passed
+test: geopos command passed
+test: georadius command passed
+test: georadius with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius with COUNT passed
+test: georadius with ASC / DESC passed
+test: georadius with STORE / STOREDIST passed
+test: georadius with STORE / STOREDIST tags skipped
+test: georadius with ANY option for COUNT version skipped
+test: georadius with support for uppercase unit names version skipped
+test: georadius_ro command passed
+test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius_ro with COUNT passed
+test: georadius_ro with ASC / DESC passed
+test: georadius_ro with ANY option for COUNT version skipped
+test: georadiusbymember command passed
+test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember with COUNT passed
+test: georadiusbymember with ASC / DESC passed
+test: georadiusbymember with STORE / STOREDIST passed
+test: georadiusbymember with STORE / STOREDIST tags skipped
+test: georadiusbymember with ANY option for COUNT version skipped
+test: georadiusbymember with support for uppercase unit names version skipped
+test: georadiusbymember_ro command passed
+test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember_ro with COUNT passed
+test: georadiusbymember_ro with ASC / DESC passed
+test: georadiusbymember_ro with ANY option for COUNT version skipped
+test: geosearch command version skipped
+test: geosearch with ASC / DESC version skipped
+test: geosearch with COUNT version skipped
+test: geosearch with WITHCOORD / WITHDIST / WITHHASH version skipped
+test: geosearch with support for uppercase unit names version skipped
+test: geosearchstore command version skipped
+test: geosearchstore command tags skipped
+test: geosearchstore with ASC / DESC version skipped
+test: geosearchstore with ASC / DESC tags skipped
+test: geosearchstore with COUNT version skipped
+test: geosearchstore with COUNT tags skipped
+test: geosearchstore with STOREDIST version skipped
+test: geosearchstore with STOREDIST tags skipped
+test: geosearchstore with support for uppercase unit names version skipped
+test: geosearchstore with support for uppercase unit names tags skipped
+test: dbsize command passed
+test: flushall command passed
+test: flushall with async passed
+test: flushall with sync version skipped
+test: flushdb command passed
+test: flushdb with async passed
+test: flushdb with sync version skipped
+test: swapdb command passed
+test: discard command passed
+test: exec command passed
+test: multi command passed
+test: unwatch command passed
+test: watch command passed
+test: eval command passed
+test: eval_ro command version skipped
+test: evalsha command passed
+test: evalsha_ro command version skipped
+test: fcall command version skipped
+test: fcall_ro command version skipped
+test: function delete command version skipped
+test: function flush command version skipped
+test: function flush with SYNC version skipped
+test: function flush with ASYNC version skipped
+test: function list command version skipped
+test: function load command version skipped
+test: function restore command version skipped
+test: function stats command version skipped
+test: script exists command passed
+test: script flush command passed
+test: script flush with SYNC version skipped
+test: script flush with ASYNC version skipped
+test: script load command passed
+test: xack command passed
+test: xadd command passed
+test: xadd with NOMKSTREAM/MINID/LIMIT version skipped
+test: xadd with EXPLICIT ID version skipped
+test: xclaim command passed
+test: xdel command passed
+test: xgroup create command passed
+test: xgroup create with MKSTREAM passed
+test: xgroup create with ENTRIESREAD version skipped
+test: xgroup createconsumer command version skipped
+test: xgroup delconsumer command passed
+test: xgroup destroy command passed
+test: xgroup setid command passed
+test: xgroup setid with ENTRIESREAD version skipped
+test: xlen command passed
+test: xpending command passed
+test: xrange command passed
+test: xread command passed
+test: xreadgroup command passed
+test: xrevrange command passed
+test: xrevrange command with EXCLUSIVE RANGES version skipped
+test: xtrim command passed
+test: xtrim command with MINID/LIMIT version skipped
+test: psubscribe command passed
+test: psubscribe with RESET version skipped
+test: publish command passed
+test: pubsub channels command passed
+test: pubsub numpat command passed
+test: pubsub numsub command passed
+test: pubsub shardchannels command version skipped
+test: pubsub shardnumsub command version skipped
+test: punsubscribe command passed
+test: spublish command version skipped
+test: ssubscribe command version skipped
+test: subscribe command passed
+test: subscribe with RESET version skipped
+test: sunsubscribe command version skipped
+test: unsubscribe command passed
+-------- The result of tests --------
+Summary: version: 6.0.0, total tests: 228, passed: 228, rate: 100.00%
+</pre>
diff --git a/KeyDB-7.0.0.html b/KeyDB-7.0.0.html
new file mode 100644
index 0000000..1ae6f03
--- /dev/null
+++ b/KeyDB-7.0.0.html
@@ -0,0 +1,476 @@
+<pre>
+test: del command passed
+test: unlink command passed
+test: rename command passed
+test: rename command tags skipped
+test: renamenx command passed
+test: renamenx command tags skipped
+test: randomkey command passed
+test: exists command passed
+test: ttl command passed
+test: pttl command passed
+test: expire command passed
+test: expire with NX / XX failed
+test: expire with GT / LT failed
+test: expireat command passed
+test: expireat with NX / XX failed
+test: expireat with GT / LT failed
+test: pexpire command passed
+test: pexpire with NX / XX failed
+test: pexpire with GT / LT failed
+test: pexpireat command passed
+test: pexpireat with NX / XX failed
+test: pexpireat with GT / LT failed
+test: expiretime command failed
+test: pexpiretime command failed
+test: persist command passed
+test: dump command passed
+test: touch command passed
+test: restore command passed
+test: restore with REPLACE passed
+test: restore with ABSTTL passed
+test: restore with IDLETIME passed
+test: scan command passed
+test: scan with TYPE passed
+test: keys command passed
+test: move command passed
+test: copy command passed
+test: copy command tags skipped
+test: type command passed
+test: sort command passed
+test: sort_ro command skipped
+test: set command passed
+test: blmove command passed
+test: blmove command tags skipped
+test: blmpop command failed
+test: blmpop with COUNT failed
+test: blmpop with COUNT tags skipped
+test: blpop command passed
+test: blpop command tags skipped
+test: blpop with double timeout passed
+test: blpop with double timeout tags skipped
+test: brpop command passed
+test: brpop command tags skipped
+test: brpop with double timeout passed
+test: brpop with double timeout tags skipped
+test: brpoplpush command passed
+test: brpoplpush command tags skipped
+test: brpoplpush with double timeout passed
+test: brpoplpush with double timeout tags skipped
+test: lindex command passed
+test: linsert command passed
+test: llen command passed
+test: lmove command passed
+test: lmove command tags skipped
+test: lmpop command failed
+test: lmpop with COUNT failed
+test: lmpop with COUNT tags skipped
+test: lpop command passed
+test: lpop with COUNT passed
+test: lpos command passed
+test: lpos with RANK passed
+test: lpos with COUNT passed
+test: lpos with MAXLEN passed
+test: lpos with RANK, COUNT and MAXLEN passed
+test: lpush command passed
+test: lpush with multiple element passed
+test: lpushx command passed
+test: lpushx with multiple element passed
+test: lrange command passed
+test: lrem command passed
+test: lset command passed
+test: ltrim command passed
+test: rpop command passed
+test: rpop with COUNT passed
+test: rpoplpush command passed
+test: rpoplpush command tags skipped
+test: rpush command passed
+test: rpush with multiple element passed
+test: rpushx command passed
+test: rpushx command tags skipped
+test: rpushx with multiple element passed
+test: rpushx with multiple element tags skipped
+test: sadd command passed
+test: sadd command passed
+test: scard command passed
+test: sdiff command passed
+test: sdiff command tags skipped
+test: sdiffstore command passed
+test: sdiffstore command tags skipped
+test: sinter command passed
+test: sinter command tags skipped
+test: sintercard command failed
+test: sintercard command tags skipped
+test: sintercard with LIMIT failed
+test: sintercard with LIMIT tags skipped
+test: sinterstore command passed
+test: sinterstore command tags skipped
+test: sismember command passed
+test: smembers command passed
+test: smismember command passed
+test: smove command passed
+test: smove command tags skipped
+test: spop command passed
+test: spop with COUNT passed
+test: srandmember command passed
+test: srandmember with COUNT passed
+test: srem command passed
+test: srem with multiple member passed
+test: sscan command passed
+test: sscan with MATCH and COUNT passed
+test: sunion command passed
+test: sunion command tags skipped
+test: sunionstore command passed
+test: sunionstore command tags skipped
+test: bzmpop command failed
+test: bzmpop command tags skipped
+test: bzmpop with COUNT failed
+test: bzmpop with COUNT failed
+test: bzpopmax command passed
+test: bzpopmax with double timeout passed
+test: bzpopmin command passed
+test: bzpopmin with double timeout passed
+test: zadd command passed
+test: zadd with multiple elements passed
+test: zadd with XX / NX / CH / INCR passed
+test: zadd with GT / LT passed
+test: zcard command passed
+test: zcount command passed
+test: zdiff command passed
+test: zdiff command tags skipped
+test: zdiffstore command passed
+test: zdiffstore command tags skipped
+test: zincrby command passed
+test: zinter command passed
+test: zinter command tags skipped
+test: zinter with WEIGHTS passed
+test: zinter with WEIGHTS tags skipped
+test: zinter with AGGREGATE passed
+test: zinter with AGGREGATE tags skipped
+test: zinter WITHSCORES passed
+test: zinter WITHSCORES tags skipped
+test: zintercard command failed
+test: zintercard command tags skipped
+test: zintercard with LIMIT failed
+test: zintercard with LIMIT tags skipped
+test: zinterstore command passed
+test: zinterstore command tags skipped
+test: zinterstore with WEIGHTS passed
+test: zinterstore with WEIGHTS tags skipped
+test: zinterstore with AGGREGATE passed
+test: zinterstore with AGGREGATE tags skipped
+test: zlexcount command passed
+test: zmpop command failed
+test: zmpop with COUNT failed
+test: zmscore command passed
+test: zpopmax command passed
+test: zpopmax with COUNT passed
+test: zpopmin command passed
+test: zpopmin command passed
+test: zrandmember command passed
+test: zrandmember with COUNT passed
+test: zrandmember with WITHSCORES passed
+test: zrange command passed
+test: zrange with WITHSCORES passed
+test: zrange with BYSCORE / BYLEX passed
+test: zrange with REV passed
+test: zrange with LIMIT passed
+test: zrangebylex command passed
+test: zrangebylex with LIMIT passed
+test: zrangebyscore command passed
+test: zrangebyscore with LIMIT passed
+test: zrangebyscore with WITHSCORES passed
+test: zrangestore command passed
+test: zrangestore command tags skipped
+test: zrangestore with BYSCORE / BYLEX passed
+test: zrangestore with BYSCORE / BYLEX tags skipped
+test: zrangestore with REV passed
+test: zrangestore with REV tags skipped
+test: zrangestore with LIMIT passed
+test: zrangestore with LIMIT tags skipped
+test: zrank command passed
+test: zrank with WITHSCORE version skipped
+test: zrem command passed
+test: zrem with multiple elements passed
+test: zremrangebylex command passed
+test: zremrangebyrank command passed
+test: zremrangebyscore command passed
+test: zrevrange command passed
+test: zrevrange with WITHSCORES passed
+test: zrevrangebylex command passed
+test: zrevrangebylex with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrangebyscore with WITHSCORES passed
+test: zrevrangebyscore with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrank command passed
+test: zrevrank with WITHSCORE version skipped
+test: zscan command passed
+test: zscan with MATCH and COUNT passed
+test: zscore command passed
+test: zunion command passed
+test: zunion command tags skipped
+test: zunion with WEIGHTS and AGGREGATE passed
+test: zunion with WEIGHTS and AGGREGATE tags skipped
+test: zunion with WITHSCORES passed
+test: zunion with WITHSCORES tags skipped
+test: zunionstore command passed
+test: zunionstore command tags skipped
+test: zunionstore with WEIGHTS and AGGREGATE passed
+test: zunionstore with WEIGHTS and AGGREGATE tags skipped
+test: append command passed
+test: decr command passed
+test: decrby command passed
+test: get command passed
+test: getdel command passed
+test: getex command passed
+test: getex with EX passed
+test: getex with PX passed
+test: getex with EXAT passed
+test: getex with PXAT passed
+test: getex with PERSIST passed
+test: getrange command passed
+test: getset command passed
+test: incr command passed
+test: incrby command passed
+test: incrbyfloat command passed
+test: lcs command failed
+test: lcs command tags skipped
+test: lcs with LEN failed
+test: lcs with LEN tags skipped
+test: lcs with IDX failed
+test: lcs with IDX tags skipped
+test: lcs with MINMATCHLEN failed
+test: lcs with MINMATCHLEN tags skipped
+test: lcs with WITHMATCHLEN failed
+test: lcs with WITHMATCHLEN tags skipped
+test: mget command passed
+test: mget command tags skipped
+test: mset command passed
+test: mset command tags skipped
+test: msetnx command passed
+test: msetnx command tags skipped
+test: psetex command passed
+test: set command passed
+test: set with EX / PX passed
+test: set with NX / XX passed
+test: set with KEEPTTL passed
+test: set with GET passed
+test: set with EXAT / PXAT passed
+test: set with NX and GET failed
+test: setex command passed
+test: setnx command passed
+test: setrange command passed
+test: strlen command passed
+test: substr command passed
+test: hdel command passed
+test: hdel with multiple field passed
+test: hexists command passed
+test: hget command passed
+test: hgetall command passed
+test: hincrby command passed
+test: hincrbyfloat command passed
+test: hkeys command passed
+test: hlen command passed
+test: hmget command passed
+test: hmset command passed
+test: hrandfield command passed
+test: hrandfield with COUNT passed
+test: hrandfield with WITHVALUES passed
+test: hscan command passed
+test: hscan with MATCH and COUNT passed
+test: hset command passed
+test: hset command with multiple field and value passed
+test: hsetnx command passed
+test: hstrlen command passed
+test: hvals command passed
+test: bitcount command passed
+test: bitcount with BYTE / BIT failed
+test: bitfield command passed
+test: bitfield_ro command passed
+test: bitop command passed
+test: bitop command tags skipped
+test: bitpos command passed
+test: bitpos with BYTE / BIT failed
+test: getbit command passed
+test: setbit command passed
+test: pfadd command passed
+test: pfcount command passed
+test: pfmerge command passed
+test: pfmerge command tags skipped
+test: geoadd command passed
+test: geoadd with CH / NX / XX passed
+test: geodist command passed
+test: geodist with M / KM / FT / MI passed
+test: geohash command passed
+test: geopos command passed
+test: georadius command passed
+test: georadius with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius with COUNT passed
+test: georadius with ASC / DESC passed
+test: georadius with STORE / STOREDIST passed
+test: georadius with STORE / STOREDIST tags skipped
+test: georadius with ANY option for COUNT passed
+test: georadius with support for uppercase unit names failed
+test: georadius_ro command passed
+test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius_ro with COUNT passed
+test: georadius_ro with ASC / DESC passed
+test: georadius_ro with ANY option for COUNT passed
+test: georadiusbymember command passed
+test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember with COUNT passed
+test: georadiusbymember with ASC / DESC passed
+test: georadiusbymember with STORE / STOREDIST passed
+test: georadiusbymember with STORE / STOREDIST tags skipped
+test: georadiusbymember with ANY option for COUNT passed
+test: georadiusbymember with support for uppercase unit names failed
+test: georadiusbymember_ro command passed
+test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember_ro with COUNT passed
+test: georadiusbymember_ro with ASC / DESC passed
+test: georadiusbymember_ro with ANY option for COUNT passed
+test: geosearch command passed
+test: geosearch with ASC / DESC passed
+test: geosearch with COUNT passed
+test: geosearch with WITHCOORD / WITHDIST / WITHHASH passed
+test: geosearch with support for uppercase unit names failed
+test: geosearchstore command passed
+test: geosearchstore command tags skipped
+test: geosearchstore with ASC / DESC passed
+test: geosearchstore with ASC / DESC tags skipped
+test: geosearchstore with COUNT passed
+test: geosearchstore with COUNT tags skipped
+test: geosearchstore with STOREDIST passed
+test: geosearchstore with STOREDIST tags skipped
+test: geosearchstore with support for uppercase unit names failed
+test: geosearchstore with support for uppercase unit names tags skipped
+test: dbsize command passed
+test: flushall command passed
+test: flushall with async passed
+test: flushall with sync passed
+test: flushdb command passed
+test: flushdb with async passed
+test: flushdb with sync passed
+test: swapdb command passed
+test: discard command passed
+test: exec command passed
+test: multi command passed
+test: unwatch command passed
+test: watch command passed
+test: eval command passed
+test: eval_ro command failed
+test: evalsha command passed
+test: evalsha_ro command failed
+test: fcall command failed
+test: fcall_ro command failed
+test: function delete command failed
+test: function flush command failed
+test: function flush with SYNC failed
+test: function flush with ASYNC failed
+test: function list command failed
+test: function load command failed
+test: function restore command failed
+test: function stats command failed
+test: script exists command passed
+test: script flush command passed
+test: script flush with SYNC passed
+test: script flush with ASYNC passed
+test: script load command passed
+test: xack command passed
+test: xadd command passed
+test: xadd with NOMKSTREAM/MINID/LIMIT passed
+test: xadd with EXPLICIT ID failed
+test: xclaim command passed
+test: xdel command passed
+test: xgroup create command passed
+test: xgroup create with MKSTREAM passed
+test: xgroup create with ENTRIESREAD failed
+test: xgroup createconsumer command passed
+test: xgroup delconsumer command passed
+test: xgroup destroy command passed
+test: xgroup setid command passed
+test: xgroup setid with ENTRIESREAD failed
+test: xlen command passed
+test: xpending command passed
+test: xrange command passed
+test: xread command passed
+test: xreadgroup command passed
+test: xrevrange command passed
+test: xrevrange command with EXCLUSIVE RANGES passed
+test: xtrim command passed
+test: xtrim command with MINID/LIMIT passed
+test: psubscribe command passed
+test: psubscribe with RESET passed
+test: publish command passed
+test: pubsub channels command passed
+test: pubsub numpat command passed
+test: pubsub numsub command passed
+test: pubsub shardchannels command failed
+test: pubsub shardnumsub command failed
+test: punsubscribe command passed
+test: spublish command failed
+test: ssubscribe command failed
+test: subscribe command passed
+test: subscribe with RESET passed
+test: sunsubscribe command failed
+test: unsubscribe command passed
+-------- The result of tests --------
+Summary: version: 7.0.0, total tests: 350, passed: 295, rate: 84.29%
+This is failed tests for 7.0.0:
+FailedTest(name='expire with NX / XX', reason=ResponseError("wrong number of arguments for 'expire' command"))
+FailedTest(name='expire with GT / LT', reason=ResponseError("wrong number of arguments for 'expire' command"))
+FailedTest(name='expireat with NX / XX', reason=ResponseError("wrong number of arguments for 'expireat' command"))
+FailedTest(name='expireat with GT / LT', reason=ResponseError("wrong number of arguments for 'expireat' command"))
+FailedTest(name='pexpire with NX / XX', reason=ResponseError("wrong number of arguments for 'pexpire' command"))
+FailedTest(name='pexpire with GT / LT', reason=ResponseError("wrong number of arguments for 'pexpire' command"))
+FailedTest(name='pexpireat with NX / XX', reason=ResponseError("wrong number of arguments for 'pexpireat' command"))
+FailedTest(name='pexpireat with GT / LT', reason=ResponseError("wrong number of arguments for 'pexpireat' command"))
+FailedTest(name='expiretime command', reason=ResponseError('unknown command `expiretime`, with args beginning with: `non-exists`, '))
+FailedTest(name='pexpiretime command', reason=ResponseError('unknown command `pexpiretime`, with args beginning with: `non-exists`, '))
+FailedTest(name='blmpop command', reason=ResponseError('unknown command `blmpop`, with args beginning with: `3.14`, `1`, `mylist`, `LEFT`, '))
+FailedTest(name='blmpop with COUNT', reason=ResponseError('unknown command `blmpop`, with args beginning with: `3.14`, `2`, `mylist`, `mylist1`, `right`, `count`, `5`, '))
+FailedTest(name='lmpop command', reason=ResponseError('unknown command `lmpop`, with args beginning with: `1`, `mylist`, `LEFT`, '))
+FailedTest(name='lmpop with COUNT', reason=ResponseError('unknown command `lmpop`, with args beginning with: `2`, `mylist`, `mylist1`, `right`, `count`, `5`, '))
+FailedTest(name='sintercard command', reason=ResponseError('unknown command `sintercard`, with args beginning with: `2`, `myset`, `myset1`, '))
+FailedTest(name='sintercard with LIMIT', reason=ResponseError('unknown command `sintercard`, with args beginning with: `2`, `myset`, `myset1`, `limit`, `1`, '))
+FailedTest(name='bzmpop command', reason=ResponseError('unknown command `bzmpop`, with args beginning with: `0`, `2`, `myzset`, `myzset1`, `MIN`, '))
+FailedTest(name='bzmpop with COUNT', reason=ResponseError('unknown command `bzmpop`, with args beginning with: `3.14`, `2`, `myzset`, `myzset1`, `MIN`, `count`, `2`, '))
+FailedTest(name='bzmpop with COUNT', reason=ResponseError('unknown command `bzmpop`, with args beginning with: `3.14`, `2`, `myzset`, `{myzset}1`, `MIN`, `count`, `2`, '))
+FailedTest(name='zintercard command', reason=ResponseError('unknown command `zintercard`, with args beginning with: `2`, `myzset1`, `myzset2`, '))
+FailedTest(name='zintercard with LIMIT', reason=ResponseError('unknown command `zintercard`, with args beginning with: `2`, `myzset1`, `myzset2`, `limit`, `1`, '))
+FailedTest(name='zmpop command', reason=ResponseError('unknown command `zmpop`, with args beginning with: `1`, `myzset`, `MIN`, '))
+FailedTest(name='zmpop with COUNT', reason=ResponseError('unknown command `zmpop`, with args beginning with: `1`, `myzset`, `MIN`, `count`, `2`, '))
+FailedTest(name='lcs command', reason=ResponseError('unknown command `lcs`, with args beginning with: `key1`, `key2`, '))
+FailedTest(name='lcs with LEN', reason=ResponseError('unknown command `lcs`, with args beginning with: `key1`, `key2`, `len`, '))
+FailedTest(name='lcs with IDX', reason=ResponseError('unknown command `lcs`, with args beginning with: `key1`, `key2`, `idx`, '))
+FailedTest(name='lcs with MINMATCHLEN', reason=ResponseError('unknown command `lcs`, with args beginning with: `key1`, `key2`, `idx`, `minmatchlen`, `1`, '))
+FailedTest(name='lcs with WITHMATCHLEN', reason=ResponseError('unknown command `lcs`, with args beginning with: `key1`, `key2`, `idx`, `minmatchlen`, `1`, `withmatchlen`, '))
+FailedTest(name='set with NX and GET', reason=ResponseError('syntax error'))
+FailedTest(name='bitcount with BYTE / BIT', reason=ResponseError('syntax error'))
+FailedTest(name='bitpos with BYTE / BIT', reason=ResponseError('syntax error'))
+FailedTest(name='georadius with support for uppercase unit names', reason=ResponseError('unsupported unit provided. please use m, km, ft, mi'))
+FailedTest(name='georadiusbymember with support for uppercase unit names', reason=ResponseError('unsupported unit provided. please use m, km, ft, mi'))
+FailedTest(name='geosearch with support for uppercase unit names', reason=ResponseError('unsupported unit provided. please use m, km, ft, mi'))
+FailedTest(name='geosearchstore with support for uppercase unit names', reason=ResponseError('unsupported unit provided. please use m, km, ft, mi'))
+FailedTest(name='eval_ro command', reason=ResponseError('unknown command `eval_ro`, with args beginning with: `return`, `0`, `hello`, '))
+FailedTest(name='evalsha_ro command', reason=ResponseError('unknown command `evalsha_ro`, with args beginning with: `63143b6f8007b98c53ca2149822777b3566f9241`, `0`, '))
+FailedTest(name='fcall command', reason=ResponseError('unknown command `function`, with args beginning with: `flush`, '))
+FailedTest(name='fcall_ro command', reason=ResponseError('unknown command `function`, with args beginning with: `flush`, '))
+FailedTest(name='function delete command', reason=ResponseError('unknown command `function`, with args beginning with: `flush`, '))
+FailedTest(name='function flush command', reason=ResponseError('unknown command `function`, with args beginning with: `flush`, '))
+FailedTest(name='function flush with SYNC', reason=ResponseError('unknown command `function`, with args beginning with: `flush`, `sync`, '))
+FailedTest(name='function flush with ASYNC', reason=ResponseError('unknown command `function`, with args beginning with: `flush`, `async`, '))
+FailedTest(name='function list command', reason=ResponseError('unknown command `function`, with args beginning with: `flush`, '))
+FailedTest(name='function load command', reason=ResponseError('unknown command `function`, with args beginning with: `flush`, '))
+FailedTest(name='function restore command', reason=ResponseError('unknown command `function`, with args beginning with: `flush`, '))
+FailedTest(name='function stats command', reason=ResponseError('unknown command `function`, with args beginning with: `flush`, '))
+FailedTest(name='xadd with EXPLICIT ID', reason=ResponseError('Invalid stream ID specified as stream command argument'))
+FailedTest(name='xgroup create with ENTRIESREAD', reason=ResponseError("Unknown subcommand or wrong number of arguments for 'create'. Try XGROUP HELP."))
+FailedTest(name='xgroup setid with ENTRIESREAD', reason=ResponseError("Unknown subcommand or wrong number of arguments for 'setid'. Try XGROUP HELP."))
+FailedTest(name='pubsub shardchannels command', reason=ResponseError("Unknown subcommand or wrong number of arguments for 'shardchannels'. Try PUBSUB HELP."))
+FailedTest(name='pubsub shardnumsub command', reason=ResponseError("Unknown subcommand or wrong number of arguments for 'shardnumsub'. Try PUBSUB HELP."))
+FailedTest(name='spublish command', reason=ResponseError('unknown command `spublish`, with args beginning with: `hello`, `world`, '))
+FailedTest(name='ssubscribe command', reason=ResponseError('unknown command `ssubscribe`, with args beginning with: `hello`, '))
+FailedTest(name='sunsubscribe command', reason=ResponseError('unknown command `sunsubscribe`, with args beginning with: `hello`, '))
+</pre>
diff --git a/Kvrocks-4.0.0.html b/Kvrocks-4.0.0.html
new file mode 100644
index 0000000..0302b11
--- /dev/null
+++ b/Kvrocks-4.0.0.html
@@ -0,0 +1,437 @@
+<pre>
+test: del command passed
+test: unlink command passed
+test: rename command passed
+test: rename command tags skipped
+test: renamenx command passed
+test: renamenx command tags skipped
+test: randomkey command passed
+test: exists command passed
+test: ttl command passed
+test: pttl command passed
+test: expire command passed
+test: expire with NX / XX version skipped
+test: expire with GT / LT version skipped
+test: expireat command passed
+test: expireat with NX / XX version skipped
+test: expireat with GT / LT version skipped
+test: pexpire command passed
+test: pexpire with NX / XX version skipped
+test: pexpire with GT / LT version skipped
+test: pexpireat command passed
+test: pexpireat with NX / XX version skipped
+test: pexpireat with GT / LT version skipped
+test: expiretime command version skipped
+test: pexpiretime command version skipped
+test: persist command passed
+test: dump command passed
+test: touch command failed
+test: restore command passed
+test: restore with REPLACE passed
+test: restore with ABSTTL version skipped
+test: restore with IDLETIME version skipped
+test: scan command passed
+test: scan with TYPE version skipped
+test: keys command failed
+test: move command passed
+test: copy command version skipped
+test: copy command tags skipped
+test: type command passed
+test: sort command passed
+test: sort_ro command skipped
+test: set command passed
+test: blmove command version skipped
+test: blmove command tags skipped
+test: blmpop command version skipped
+test: blmpop with COUNT version skipped
+test: blmpop with COUNT tags skipped
+test: blpop command passed
+test: blpop command tags skipped
+test: blpop with double timeout version skipped
+test: blpop with double timeout tags skipped
+test: brpop command passed
+test: brpop command tags skipped
+test: brpop with double timeout version skipped
+test: brpop with double timeout tags skipped
+test: brpoplpush command failed
+test: brpoplpush command tags skipped
+test: brpoplpush with double timeout version skipped
+test: brpoplpush with double timeout tags skipped
+test: lindex command passed
+test: linsert command passed
+test: llen command passed
+test: lmove command version skipped
+test: lmove command tags skipped
+test: lmpop command version skipped
+test: lmpop with COUNT version skipped
+test: lmpop with COUNT tags skipped
+test: lpop command passed
+test: lpop with COUNT version skipped
+test: lpos command version skipped
+test: lpos with RANK version skipped
+test: lpos with COUNT version skipped
+test: lpos with MAXLEN version skipped
+test: lpos with RANK, COUNT and MAXLEN version skipped
+test: lpush command passed
+test: lpush with multiple element passed
+test: lpushx command passed
+test: lpushx with multiple element passed
+test: lrange command passed
+test: lrem command passed
+test: lset command passed
+test: ltrim command passed
+test: rpop command passed
+test: rpop with COUNT version skipped
+test: rpoplpush command passed
+test: rpoplpush command tags skipped
+test: rpush command passed
+test: rpush with multiple element passed
+test: rpushx command passed
+test: rpushx command tags skipped
+test: rpushx with multiple element passed
+test: rpushx with multiple element tags skipped
+test: sadd command passed
+test: sadd command passed
+test: scard command passed
+test: sdiff command passed
+test: sdiff command tags skipped
+test: sdiffstore command passed
+test: sdiffstore command tags skipped
+test: sinter command passed
+test: sinter command tags skipped
+test: sintercard command version skipped
+test: sintercard command tags skipped
+test: sintercard with LIMIT version skipped
+test: sintercard with LIMIT tags skipped
+test: sinterstore command passed
+test: sinterstore command tags skipped
+test: sismember command passed
+test: smembers command passed
+test: smismember command version skipped
+test: smove command passed
+test: smove command tags skipped
+test: spop command passed
+test: spop with COUNT passed
+test: srandmember command failed
+test: srandmember with COUNT passed
+test: srem command passed
+test: srem with multiple member passed
+test: sscan command passed
+test: sscan with MATCH and COUNT passed
+test: sunion command passed
+test: sunion command tags skipped
+test: sunionstore command passed
+test: sunionstore command tags skipped
+test: bzmpop command version skipped
+test: bzmpop command tags skipped
+test: bzmpop with COUNT version skipped
+test: bzmpop with COUNT version skipped
+test: bzpopmax command version skipped
+test: bzpopmax with double timeout version skipped
+test: bzpopmin command version skipped
+test: bzpopmin with double timeout version skipped
+test: zadd command passed
+test: zadd with multiple elements passed
+test: zadd with XX / NX / CH / INCR passed
+test: zadd with GT / LT version skipped
+test: zcard command passed
+test: zcount command passed
+test: zdiff command version skipped
+test: zdiff command tags skipped
+test: zdiffstore command version skipped
+test: zdiffstore command tags skipped
+test: zincrby command passed
+test: zinter command version skipped
+test: zinter command tags skipped
+test: zinter with WEIGHTS version skipped
+test: zinter with WEIGHTS tags skipped
+test: zinter with AGGREGATE version skipped
+test: zinter with AGGREGATE tags skipped
+test: zinter WITHSCORES version skipped
+test: zinter WITHSCORES tags skipped
+test: zintercard command version skipped
+test: zintercard command tags skipped
+test: zintercard with LIMIT version skipped
+test: zintercard with LIMIT tags skipped
+test: zinterstore command passed
+test: zinterstore command tags skipped
+test: zinterstore with WEIGHTS passed
+test: zinterstore with WEIGHTS tags skipped
+test: zinterstore with AGGREGATE passed
+test: zinterstore with AGGREGATE tags skipped
+test: zlexcount command passed
+test: zmpop command version skipped
+test: zmpop with COUNT version skipped
+test: zmscore command version skipped
+test: zpopmax command version skipped
+test: zpopmax with COUNT version skipped
+test: zpopmin command version skipped
+test: zpopmin command version skipped
+test: zrandmember command version skipped
+test: zrandmember with COUNT version skipped
+test: zrandmember with WITHSCORES version skipped
+test: zrange command passed
+test: zrange with WITHSCORES passed
+test: zrange with BYSCORE / BYLEX version skipped
+test: zrange with REV version skipped
+test: zrange with LIMIT version skipped
+test: zrangebylex command passed
+test: zrangebylex with LIMIT passed
+test: zrangebyscore command passed
+test: zrangebyscore with LIMIT passed
+test: zrangebyscore with WITHSCORES passed
+test: zrangestore command version skipped
+test: zrangestore command tags skipped
+test: zrangestore with BYSCORE / BYLEX version skipped
+test: zrangestore with BYSCORE / BYLEX tags skipped
+test: zrangestore with REV version skipped
+test: zrangestore with REV tags skipped
+test: zrangestore with LIMIT version skipped
+test: zrangestore with LIMIT tags skipped
+test: zrank command passed
+test: zrank with WITHSCORE version skipped
+test: zrem command passed
+test: zrem with multiple elements passed
+test: zremrangebylex command passed
+test: zremrangebyrank command passed
+test: zremrangebyscore command passed
+test: zrevrange command passed
+test: zrevrange with WITHSCORES passed
+test: zrevrangebylex command passed
+test: zrevrangebylex with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrangebyscore with WITHSCORES passed
+test: zrevrangebyscore with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrank command passed
+test: zrevrank with WITHSCORE version skipped
+test: zscan command passed
+test: zscan with MATCH and COUNT passed
+test: zscore command passed
+test: zunion command version skipped
+test: zunion command tags skipped
+test: zunion with WEIGHTS and AGGREGATE version skipped
+test: zunion with WEIGHTS and AGGREGATE tags skipped
+test: zunion with WITHSCORES version skipped
+test: zunion with WITHSCORES tags skipped
+test: zunionstore command passed
+test: zunionstore command tags skipped
+test: zunionstore with WEIGHTS and AGGREGATE passed
+test: zunionstore with WEIGHTS and AGGREGATE tags skipped
+test: append command passed
+test: decr command passed
+test: decrby command passed
+test: get command passed
+test: getdel command version skipped
+test: getex command version skipped
+test: getex with EX version skipped
+test: getex with PX version skipped
+test: getex with EXAT version skipped
+test: getex with PXAT version skipped
+test: getex with PERSIST version skipped
+test: getrange command passed
+test: getset command passed
+test: incr command passed
+test: incrby command passed
+test: incrbyfloat command failed
+test: lcs command version skipped
+test: lcs command tags skipped
+test: lcs with LEN version skipped
+test: lcs with LEN tags skipped
+test: lcs with IDX version skipped
+test: lcs with IDX tags skipped
+test: lcs with MINMATCHLEN version skipped
+test: lcs with MINMATCHLEN tags skipped
+test: lcs with WITHMATCHLEN version skipped
+test: lcs with WITHMATCHLEN tags skipped
+test: mget command passed
+test: mget command tags skipped
+test: mset command passed
+test: mset command tags skipped
+test: msetnx command passed
+test: msetnx command tags skipped
+test: psetex command passed
+test: set command passed
+test: set with EX / PX passed
+test: set with NX / XX passed
+test: set with KEEPTTL version skipped
+test: set with GET version skipped
+test: set with EXAT / PXAT version skipped
+test: set with NX and GET version skipped
+test: setex command passed
+test: setnx command passed
+test: setrange command passed
+test: strlen command passed
+test: substr command passed
+test: hdel command passed
+test: hdel with multiple field passed
+test: hexists command passed
+test: hget command passed
+test: hgetall command passed
+test: hincrby command passed
+test: hincrbyfloat command passed
+test: hkeys command passed
+test: hlen command passed
+test: hmget command passed
+test: hmset command passed
+test: hrandfield command version skipped
+test: hrandfield with COUNT version skipped
+test: hrandfield with WITHVALUES version skipped
+test: hscan command passed
+test: hscan with MATCH and COUNT passed
+test: hset command passed
+test: hset command with multiple field and value passed
+test: hsetnx command passed
+test: hstrlen command passed
+test: hvals command passed
+test: bitcount command passed
+test: bitcount with BYTE / BIT version skipped
+test: bitfield command passed
+test: bitfield_ro command version skipped
+test: bitop command failed
+test: bitop command tags skipped
+test: bitpos command passed
+test: bitpos with BYTE / BIT version skipped
+test: getbit command passed
+test: setbit command passed
+test: pfadd command passed
+test: pfcount command passed
+test: pfmerge command passed
+test: pfmerge command tags skipped
+test: geoadd command passed
+test: geoadd with CH / NX / XX version skipped
+test: geodist command failed
+test: geodist with M / KM / FT / MI failed
+test: geohash command passed
+test: geopos command failed
+test: georadius command passed
+test: georadius with WITHCOORD / WITHDIST / WITHHASH failed
+test: georadius with COUNT passed
+test: georadius with ASC / DESC passed
+test: georadius with STORE / STOREDIST passed
+test: georadius with STORE / STOREDIST tags skipped
+test: georadius with ANY option for COUNT version skipped
+test: georadius with support for uppercase unit names version skipped
+test: georadius_ro command passed
+test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH failed
+test: georadius_ro with COUNT passed
+test: georadius_ro with ASC / DESC passed
+test: georadius_ro with ANY option for COUNT version skipped
+test: georadiusbymember command passed
+test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH failed
+test: georadiusbymember with COUNT passed
+test: georadiusbymember with ASC / DESC passed
+test: georadiusbymember with STORE / STOREDIST passed
+test: georadiusbymember with STORE / STOREDIST tags skipped
+test: georadiusbymember with ANY option for COUNT version skipped
+test: georadiusbymember with support for uppercase unit names version skipped
+test: georadiusbymember_ro command passed
+test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH failed
+test: georadiusbymember_ro with COUNT passed
+test: georadiusbymember_ro with ASC / DESC passed
+test: georadiusbymember_ro with ANY option for COUNT version skipped
+test: geosearch command version skipped
+test: geosearch with ASC / DESC version skipped
+test: geosearch with COUNT version skipped
+test: geosearch with WITHCOORD / WITHDIST / WITHHASH version skipped
+test: geosearch with support for uppercase unit names version skipped
+test: geosearchstore command version skipped
+test: geosearchstore command tags skipped
+test: geosearchstore with ASC / DESC version skipped
+test: geosearchstore with ASC / DESC tags skipped
+test: geosearchstore with COUNT version skipped
+test: geosearchstore with COUNT tags skipped
+test: geosearchstore with STOREDIST version skipped
+test: geosearchstore with STOREDIST tags skipped
+test: geosearchstore with support for uppercase unit names version skipped
+test: geosearchstore with support for uppercase unit names tags skipped
+test: dbsize command passed
+test: flushall command passed
+test: flushall with async failed
+test: flushall with sync version skipped
+test: flushdb command passed
+test: flushdb with async failed
+test: flushdb with sync version skipped
+test: swapdb command failed
+test: discard command passed
+test: exec command passed
+test: multi command passed
+test: unwatch command passed
+test: watch command passed
+test: eval command passed
+test: eval_ro command version skipped
+test: evalsha command passed
+test: evalsha_ro command version skipped
+test: fcall command version skipped
+test: fcall_ro command version skipped
+test: function delete command version skipped
+test: function flush command version skipped
+test: function flush with SYNC version skipped
+test: function flush with ASYNC version skipped
+test: function list command version skipped
+test: function load command version skipped
+test: function restore command version skipped
+test: function stats command version skipped
+test: script exists command passed
+test: script flush command passed
+test: script flush with SYNC version skipped
+test: script flush with ASYNC version skipped
+test: script load command passed
+test: xack command version skipped
+test: xadd command version skipped
+test: xadd with NOMKSTREAM/MINID/LIMIT version skipped
+test: xadd with EXPLICIT ID version skipped
+test: xclaim command version skipped
+test: xdel command version skipped
+test: xgroup create command version skipped
+test: xgroup create with MKSTREAM version skipped
+test: xgroup create with ENTRIESREAD version skipped
+test: xgroup createconsumer command version skipped
+test: xgroup delconsumer command version skipped
+test: xgroup destroy command version skipped
+test: xgroup setid command version skipped
+test: xgroup setid with ENTRIESREAD version skipped
+test: xlen command version skipped
+test: xpending command version skipped
+test: xrange command version skipped
+test: xread command version skipped
+test: xreadgroup command version skipped
+test: xrevrange command version skipped
+test: xrevrange command with EXCLUSIVE RANGES version skipped
+test: xtrim command version skipped
+test: xtrim command with MINID/LIMIT version skipped
+test: psubscribe command passed
+test: psubscribe with RESET version skipped
+test: publish command passed
+test: pubsub channels command passed
+test: pubsub numpat command passed
+test: pubsub numsub command passed
+test: pubsub shardchannels command version skipped
+test: pubsub shardnumsub command version skipped
+test: punsubscribe command passed
+test: spublish command version skipped
+test: ssubscribe command version skipped
+test: subscribe command passed
+test: subscribe with RESET version skipped
+test: sunsubscribe command version skipped
+test: unsubscribe command passed
+-------- The result of tests --------
+Summary: version: 4.0.0, total tests: 196, passed: 180, rate: 91.84%
+This is failed tests for 4.0.0:
+FailedTest(name='keys command', reason=ResponseError('only keys prefix match was supported'))
+FailedTest(name='srandmember command', reason="expected: 0, result: ['0']")
+FailedTest(name='flushall with async', reason=ResponseError('wrong number of arguments'))
+FailedTest(name='flushdb with async', reason=ResponseError('wrong number of arguments'))
+FailedTest(name='swapdb command', reason=ResponseError('unknown command `swapdb`, with args beginning with: `0`, `1`'))
+FailedTest(name='incrbyfloat command', reason='expected: 1.623, result: 1.623000')
+FailedTest(name='bitop command', reason=ResponseError('Not implemented: WRONGTYPE Operation against a key holding the wrong kind of value'))
+FailedTest(name='brpoplpush command', reason=ResponseError('unknown command `brpoplpush`, with args beginning with: `mylist`, `mylist1`, `0`'))
+FailedTest(name='touch command', reason=ResponseError('unknown command `touch`, with args beginning with: `not-exists`'))
+FailedTest(name='geodist command', reason='expected: 166274.1516, result: 166274.15156960033')
+FailedTest(name='geodist with M / KM / FT / MI', reason='expected: 166274.1516, result: 166274.15156960033')
+FailedTest(name='geopos command', reason="expected: [['13.36138933897018433', '38.11555639549629859'], ['15.08726745843887329', '37.50266842333162032'], None], result: [['13.361389338970184', '38.115556395496299'], ['15.087267458438873', '37.50266842333162'], None]")
+FailedTest(name='georadius with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Palermo', ['13.36138933897018433', '38.11555639549629859']], ['Catania', ['15.08726745843887329', '37.50266842333162032']]], result: [['Palermo', ['13.361389338970184', '38.115556395496299']], ['Catania', ['15.087267458438873', '37.50266842333162']]]")
+FailedTest(name='georadius_ro with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Palermo', ['13.36138933897018433', '38.11555639549629859']], ['Catania', ['15.08726745843887329', '37.50266842333162032']]], result: [['Palermo', ['13.361389338970184', '38.115556395496299']], ['Catania', ['15.087267458438873', '37.50266842333162']]]")
+FailedTest(name='georadiusbymember with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Agrigento', ['13.5833314061164856', '37.31666804993816555']], ['Palermo', ['13.36138933897018433', '38.11555639549629859']]], result: [['Agrigento', ['13.583331406116486', '37.316668049938166']], ['Palermo', ['13.361389338970184', '38.115556395496299']]]")
+FailedTest(name='georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Agrigento', ['13.5833314061164856', '37.31666804993816555']], ['Palermo', ['13.36138933897018433', '38.11555639549629859']]], result: [['Agrigento', ['13.583331406116486', '37.316668049938166']], ['Palermo', ['13.361389338970184', '38.115556395496299']]]")
+</pre>
diff --git a/Kvrocks-5.0.0.html b/Kvrocks-5.0.0.html
new file mode 100644
index 0000000..8a56a39
--- /dev/null
+++ b/Kvrocks-5.0.0.html
@@ -0,0 +1,438 @@
+<pre>
+test: del command passed
+test: unlink command passed
+test: rename command passed
+test: rename command tags skipped
+test: renamenx command passed
+test: renamenx command tags skipped
+test: randomkey command passed
+test: exists command passed
+test: ttl command passed
+test: pttl command passed
+test: expire command passed
+test: expire with NX / XX version skipped
+test: expire with GT / LT version skipped
+test: expireat command passed
+test: expireat with NX / XX version skipped
+test: expireat with GT / LT version skipped
+test: pexpire command passed
+test: pexpire with NX / XX version skipped
+test: pexpire with GT / LT version skipped
+test: pexpireat command passed
+test: pexpireat with NX / XX version skipped
+test: pexpireat with GT / LT version skipped
+test: expiretime command version skipped
+test: pexpiretime command version skipped
+test: persist command passed
+test: dump command passed
+test: touch command failed
+test: restore command passed
+test: restore with REPLACE passed
+test: restore with ABSTTL passed
+test: restore with IDLETIME passed
+test: scan command passed
+test: scan with TYPE version skipped
+test: keys command failed
+test: move command passed
+test: copy command version skipped
+test: copy command tags skipped
+test: type command passed
+test: sort command passed
+test: sort_ro command skipped
+test: set command passed
+test: blmove command version skipped
+test: blmove command tags skipped
+test: blmpop command version skipped
+test: blmpop with COUNT version skipped
+test: blmpop with COUNT tags skipped
+test: blpop command passed
+test: blpop command tags skipped
+test: blpop with double timeout version skipped
+test: blpop with double timeout tags skipped
+test: brpop command passed
+test: brpop command tags skipped
+test: brpop with double timeout version skipped
+test: brpop with double timeout tags skipped
+test: brpoplpush command failed
+test: brpoplpush command tags skipped
+test: brpoplpush with double timeout version skipped
+test: brpoplpush with double timeout tags skipped
+test: lindex command passed
+test: linsert command passed
+test: llen command passed
+test: lmove command version skipped
+test: lmove command tags skipped
+test: lmpop command version skipped
+test: lmpop with COUNT version skipped
+test: lmpop with COUNT tags skipped
+test: lpop command passed
+test: lpop with COUNT version skipped
+test: lpos command version skipped
+test: lpos with RANK version skipped
+test: lpos with COUNT version skipped
+test: lpos with MAXLEN version skipped
+test: lpos with RANK, COUNT and MAXLEN version skipped
+test: lpush command passed
+test: lpush with multiple element passed
+test: lpushx command passed
+test: lpushx with multiple element passed
+test: lrange command passed
+test: lrem command passed
+test: lset command passed
+test: ltrim command passed
+test: rpop command passed
+test: rpop with COUNT version skipped
+test: rpoplpush command passed
+test: rpoplpush command tags skipped
+test: rpush command passed
+test: rpush with multiple element passed
+test: rpushx command passed
+test: rpushx command tags skipped
+test: rpushx with multiple element passed
+test: rpushx with multiple element tags skipped
+test: sadd command passed
+test: sadd command passed
+test: scard command passed
+test: sdiff command passed
+test: sdiff command tags skipped
+test: sdiffstore command passed
+test: sdiffstore command tags skipped
+test: sinter command passed
+test: sinter command tags skipped
+test: sintercard command version skipped
+test: sintercard command tags skipped
+test: sintercard with LIMIT version skipped
+test: sintercard with LIMIT tags skipped
+test: sinterstore command passed
+test: sinterstore command tags skipped
+test: sismember command passed
+test: smembers command passed
+test: smismember command version skipped
+test: smove command passed
+test: smove command tags skipped
+test: spop command passed
+test: spop with COUNT passed
+test: srandmember command failed
+test: srandmember with COUNT passed
+test: srem command passed
+test: srem with multiple member passed
+test: sscan command passed
+test: sscan with MATCH and COUNT passed
+test: sunion command passed
+test: sunion command tags skipped
+test: sunionstore command passed
+test: sunionstore command tags skipped
+test: bzmpop command version skipped
+test: bzmpop command tags skipped
+test: bzmpop with COUNT version skipped
+test: bzmpop with COUNT version skipped
+test: bzpopmax command passed
+test: bzpopmax with double timeout version skipped
+test: bzpopmin command passed
+test: bzpopmin with double timeout version skipped
+test: zadd command passed
+test: zadd with multiple elements passed
+test: zadd with XX / NX / CH / INCR passed
+test: zadd with GT / LT version skipped
+test: zcard command passed
+test: zcount command passed
+test: zdiff command version skipped
+test: zdiff command tags skipped
+test: zdiffstore command version skipped
+test: zdiffstore command tags skipped
+test: zincrby command passed
+test: zinter command version skipped
+test: zinter command tags skipped
+test: zinter with WEIGHTS version skipped
+test: zinter with WEIGHTS tags skipped
+test: zinter with AGGREGATE version skipped
+test: zinter with AGGREGATE tags skipped
+test: zinter WITHSCORES version skipped
+test: zinter WITHSCORES tags skipped
+test: zintercard command version skipped
+test: zintercard command tags skipped
+test: zintercard with LIMIT version skipped
+test: zintercard with LIMIT tags skipped
+test: zinterstore command passed
+test: zinterstore command tags skipped
+test: zinterstore with WEIGHTS passed
+test: zinterstore with WEIGHTS tags skipped
+test: zinterstore with AGGREGATE passed
+test: zinterstore with AGGREGATE tags skipped
+test: zlexcount command passed
+test: zmpop command version skipped
+test: zmpop with COUNT version skipped
+test: zmscore command version skipped
+test: zpopmax command passed
+test: zpopmax with COUNT passed
+test: zpopmin command passed
+test: zpopmin command passed
+test: zrandmember command version skipped
+test: zrandmember with COUNT version skipped
+test: zrandmember with WITHSCORES version skipped
+test: zrange command passed
+test: zrange with WITHSCORES passed
+test: zrange with BYSCORE / BYLEX version skipped
+test: zrange with REV version skipped
+test: zrange with LIMIT version skipped
+test: zrangebylex command passed
+test: zrangebylex with LIMIT passed
+test: zrangebyscore command passed
+test: zrangebyscore with LIMIT passed
+test: zrangebyscore with WITHSCORES passed
+test: zrangestore command version skipped
+test: zrangestore command tags skipped
+test: zrangestore with BYSCORE / BYLEX version skipped
+test: zrangestore with BYSCORE / BYLEX tags skipped
+test: zrangestore with REV version skipped
+test: zrangestore with REV tags skipped
+test: zrangestore with LIMIT version skipped
+test: zrangestore with LIMIT tags skipped
+test: zrank command passed
+test: zrank with WITHSCORE version skipped
+test: zrem command passed
+test: zrem with multiple elements passed
+test: zremrangebylex command passed
+test: zremrangebyrank command passed
+test: zremrangebyscore command passed
+test: zrevrange command passed
+test: zrevrange with WITHSCORES passed
+test: zrevrangebylex command passed
+test: zrevrangebylex with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrangebyscore with WITHSCORES passed
+test: zrevrangebyscore with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrank command passed
+test: zrevrank with WITHSCORE version skipped
+test: zscan command passed
+test: zscan with MATCH and COUNT passed
+test: zscore command passed
+test: zunion command version skipped
+test: zunion command tags skipped
+test: zunion with WEIGHTS and AGGREGATE version skipped
+test: zunion with WEIGHTS and AGGREGATE tags skipped
+test: zunion with WITHSCORES version skipped
+test: zunion with WITHSCORES tags skipped
+test: zunionstore command passed
+test: zunionstore command tags skipped
+test: zunionstore with WEIGHTS and AGGREGATE passed
+test: zunionstore with WEIGHTS and AGGREGATE tags skipped
+test: append command passed
+test: decr command passed
+test: decrby command passed
+test: get command passed
+test: getdel command version skipped
+test: getex command version skipped
+test: getex with EX version skipped
+test: getex with PX version skipped
+test: getex with EXAT version skipped
+test: getex with PXAT version skipped
+test: getex with PERSIST version skipped
+test: getrange command passed
+test: getset command passed
+test: incr command passed
+test: incrby command passed
+test: incrbyfloat command failed
+test: lcs command version skipped
+test: lcs command tags skipped
+test: lcs with LEN version skipped
+test: lcs with LEN tags skipped
+test: lcs with IDX version skipped
+test: lcs with IDX tags skipped
+test: lcs with MINMATCHLEN version skipped
+test: lcs with MINMATCHLEN tags skipped
+test: lcs with WITHMATCHLEN version skipped
+test: lcs with WITHMATCHLEN tags skipped
+test: mget command passed
+test: mget command tags skipped
+test: mset command passed
+test: mset command tags skipped
+test: msetnx command passed
+test: msetnx command tags skipped
+test: psetex command passed
+test: set command passed
+test: set with EX / PX passed
+test: set with NX / XX passed
+test: set with KEEPTTL version skipped
+test: set with GET version skipped
+test: set with EXAT / PXAT version skipped
+test: set with NX and GET version skipped
+test: setex command passed
+test: setnx command passed
+test: setrange command passed
+test: strlen command passed
+test: substr command passed
+test: hdel command passed
+test: hdel with multiple field passed
+test: hexists command passed
+test: hget command passed
+test: hgetall command passed
+test: hincrby command passed
+test: hincrbyfloat command passed
+test: hkeys command passed
+test: hlen command passed
+test: hmget command passed
+test: hmset command passed
+test: hrandfield command version skipped
+test: hrandfield with COUNT version skipped
+test: hrandfield with WITHVALUES version skipped
+test: hscan command passed
+test: hscan with MATCH and COUNT passed
+test: hset command passed
+test: hset command with multiple field and value passed
+test: hsetnx command passed
+test: hstrlen command passed
+test: hvals command passed
+test: bitcount command passed
+test: bitcount with BYTE / BIT version skipped
+test: bitfield command passed
+test: bitfield_ro command version skipped
+test: bitop command failed
+test: bitop command tags skipped
+test: bitpos command passed
+test: bitpos with BYTE / BIT version skipped
+test: getbit command passed
+test: setbit command passed
+test: pfadd command passed
+test: pfcount command passed
+test: pfmerge command passed
+test: pfmerge command tags skipped
+test: geoadd command passed
+test: geoadd with CH / NX / XX version skipped
+test: geodist command failed
+test: geodist with M / KM / FT / MI failed
+test: geohash command passed
+test: geopos command failed
+test: georadius command passed
+test: georadius with WITHCOORD / WITHDIST / WITHHASH failed
+test: georadius with COUNT passed
+test: georadius with ASC / DESC passed
+test: georadius with STORE / STOREDIST passed
+test: georadius with STORE / STOREDIST tags skipped
+test: georadius with ANY option for COUNT version skipped
+test: georadius with support for uppercase unit names version skipped
+test: georadius_ro command passed
+test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH failed
+test: georadius_ro with COUNT passed
+test: georadius_ro with ASC / DESC passed
+test: georadius_ro with ANY option for COUNT version skipped
+test: georadiusbymember command passed
+test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH failed
+test: georadiusbymember with COUNT passed
+test: georadiusbymember with ASC / DESC passed
+test: georadiusbymember with STORE / STOREDIST passed
+test: georadiusbymember with STORE / STOREDIST tags skipped
+test: georadiusbymember with ANY option for COUNT version skipped
+test: georadiusbymember with support for uppercase unit names version skipped
+test: georadiusbymember_ro command passed
+test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH failed
+test: georadiusbymember_ro with COUNT passed
+test: georadiusbymember_ro with ASC / DESC passed
+test: georadiusbymember_ro with ANY option for COUNT version skipped
+test: geosearch command version skipped
+test: geosearch with ASC / DESC version skipped
+test: geosearch with COUNT version skipped
+test: geosearch with WITHCOORD / WITHDIST / WITHHASH version skipped
+test: geosearch with support for uppercase unit names version skipped
+test: geosearchstore command version skipped
+test: geosearchstore command tags skipped
+test: geosearchstore with ASC / DESC version skipped
+test: geosearchstore with ASC / DESC tags skipped
+test: geosearchstore with COUNT version skipped
+test: geosearchstore with COUNT tags skipped
+test: geosearchstore with STOREDIST version skipped
+test: geosearchstore with STOREDIST tags skipped
+test: geosearchstore with support for uppercase unit names version skipped
+test: geosearchstore with support for uppercase unit names tags skipped
+test: dbsize command passed
+test: flushall command passed
+test: flushall with async failed
+test: flushall with sync version skipped
+test: flushdb command passed
+test: flushdb with async failed
+test: flushdb with sync version skipped
+test: swapdb command failed
+test: discard command passed
+test: exec command passed
+test: multi command passed
+test: unwatch command passed
+test: watch command passed
+test: eval command passed
+test: eval_ro command version skipped
+test: evalsha command passed
+test: evalsha_ro command version skipped
+test: fcall command version skipped
+test: fcall_ro command version skipped
+test: function delete command version skipped
+test: function flush command version skipped
+test: function flush with SYNC version skipped
+test: function flush with ASYNC version skipped
+test: function list command version skipped
+test: function load command version skipped
+test: function restore command version skipped
+test: function stats command version skipped
+test: script exists command passed
+test: script flush command passed
+test: script flush with SYNC version skipped
+test: script flush with ASYNC version skipped
+test: script load command passed
+test: xack command passed
+test: xadd command passed
+test: xadd with NOMKSTREAM/MINID/LIMIT version skipped
+test: xadd with EXPLICIT ID version skipped
+test: xclaim command passed
+test: xdel command passed
+test: xgroup create command passed
+test: xgroup create with MKSTREAM passed
+test: xgroup create with ENTRIESREAD version skipped
+test: xgroup createconsumer command version skipped
+test: xgroup delconsumer command passed
+test: xgroup destroy command passed
+test: xgroup setid command passed
+test: xgroup setid with ENTRIESREAD version skipped
+test: xlen command passed
+test: xpending command passed
+test: xrange command passed
+test: xread command passed
+test: xreadgroup command passed
+test: xrevrange command passed
+test: xrevrange command with EXCLUSIVE RANGES version skipped
+test: xtrim command failed
+test: xtrim command with MINID/LIMIT version skipped
+test: psubscribe command passed
+test: psubscribe with RESET version skipped
+test: publish command passed
+test: pubsub channels command passed
+test: pubsub numpat command passed
+test: pubsub numsub command passed
+test: pubsub shardchannels command version skipped
+test: pubsub shardnumsub command version skipped
+test: punsubscribe command passed
+test: spublish command version skipped
+test: ssubscribe command version skipped
+test: subscribe command passed
+test: subscribe with RESET version skipped
+test: sunsubscribe command version skipped
+test: unsubscribe command passed
+-------- The result of tests --------
+Summary: version: 5.0.0, total tests: 220, passed: 203, rate: 92.27%
+This is failed tests for 5.0.0:
+FailedTest(name='keys command', reason=ResponseError('only keys prefix match was supported'))
+FailedTest(name='srandmember command', reason="expected: 0, result: ['0']")
+FailedTest(name='flushall with async', reason=ResponseError('wrong number of arguments'))
+FailedTest(name='flushdb with async', reason=ResponseError('wrong number of arguments'))
+FailedTest(name='swapdb command', reason=ResponseError('unknown command `swapdb`, with args beginning with: `0`, `1`'))
+FailedTest(name='incrbyfloat command', reason='expected: 1.623, result: 1.623000')
+FailedTest(name='bitop command', reason=ResponseError('Not implemented: WRONGTYPE Operation against a key holding the wrong kind of value'))
+FailedTest(name='brpoplpush command', reason=ResponseError('unknown command `brpoplpush`, with args beginning with: `mylist`, `mylist1`, `0`'))
+FailedTest(name='touch command', reason=ResponseError('unknown command `touch`, with args beginning with: `not-exists`'))
+FailedTest(name='xtrim command', reason=ResponseError('value is not an integer or out of range'))
+FailedTest(name='geodist command', reason='expected: 166274.1516, result: 166274.15156960033')
+FailedTest(name='geodist with M / KM / FT / MI', reason='expected: 166274.1516, result: 166274.15156960033')
+FailedTest(name='geopos command', reason="expected: [['13.36138933897018433', '38.11555639549629859'], ['15.08726745843887329', '37.50266842333162032'], None], result: [['13.361389338970184', '38.115556395496299'], ['15.087267458438873', '37.50266842333162'], None]")
+FailedTest(name='georadius with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Palermo', ['13.36138933897018433', '38.11555639549629859']], ['Catania', ['15.08726745843887329', '37.50266842333162032']]], result: [['Palermo', ['13.361389338970184', '38.115556395496299']], ['Catania', ['15.087267458438873', '37.50266842333162']]]")
+FailedTest(name='georadius_ro with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Palermo', ['13.36138933897018433', '38.11555639549629859']], ['Catania', ['15.08726745843887329', '37.50266842333162032']]], result: [['Palermo', ['13.361389338970184', '38.115556395496299']], ['Catania', ['15.087267458438873', '37.50266842333162']]]")
+FailedTest(name='georadiusbymember with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Agrigento', ['13.5833314061164856', '37.31666804993816555']], ['Palermo', ['13.36138933897018433', '38.11555639549629859']]], result: [['Agrigento', ['13.583331406116486', '37.316668049938166']], ['Palermo', ['13.361389338970184', '38.115556395496299']]]")
+FailedTest(name='georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Agrigento', ['13.5833314061164856', '37.31666804993816555']], ['Palermo', ['13.36138933897018433', '38.11555639549629859']]], result: [['Agrigento', ['13.583331406116486', '37.316668049938166']], ['Palermo', ['13.361389338970184', '38.115556395496299']]]")
+</pre>
diff --git a/Kvrocks-6.0.0.html b/Kvrocks-6.0.0.html
new file mode 100644
index 0000000..a3c7423
--- /dev/null
+++ b/Kvrocks-6.0.0.html
@@ -0,0 +1,439 @@
+<pre>
+test: del command passed
+test: unlink command passed
+test: rename command passed
+test: rename command tags skipped
+test: renamenx command passed
+test: renamenx command tags skipped
+test: randomkey command passed
+test: exists command passed
+test: ttl command passed
+test: pttl command passed
+test: expire command passed
+test: expire with NX / XX version skipped
+test: expire with GT / LT version skipped
+test: expireat command passed
+test: expireat with NX / XX version skipped
+test: expireat with GT / LT version skipped
+test: pexpire command passed
+test: pexpire with NX / XX version skipped
+test: pexpire with GT / LT version skipped
+test: pexpireat command passed
+test: pexpireat with NX / XX version skipped
+test: pexpireat with GT / LT version skipped
+test: expiretime command version skipped
+test: pexpiretime command version skipped
+test: persist command passed
+test: dump command passed
+test: touch command failed
+test: restore command passed
+test: restore with REPLACE passed
+test: restore with ABSTTL passed
+test: restore with IDLETIME passed
+test: scan command passed
+test: scan with TYPE passed
+test: keys command failed
+test: move command passed
+test: copy command version skipped
+test: copy command tags skipped
+test: type command passed
+test: sort command passed
+test: sort_ro command skipped
+test: set command passed
+test: blmove command version skipped
+test: blmove command tags skipped
+test: blmpop command version skipped
+test: blmpop with COUNT version skipped
+test: blmpop with COUNT tags skipped
+test: blpop command passed
+test: blpop command tags skipped
+test: blpop with double timeout passed
+test: blpop with double timeout tags skipped
+test: brpop command passed
+test: brpop command tags skipped
+test: brpop with double timeout passed
+test: brpop with double timeout tags skipped
+test: brpoplpush command failed
+test: brpoplpush command tags skipped
+test: brpoplpush with double timeout failed
+test: brpoplpush with double timeout tags skipped
+test: lindex command passed
+test: linsert command passed
+test: llen command passed
+test: lmove command version skipped
+test: lmove command tags skipped
+test: lmpop command version skipped
+test: lmpop with COUNT version skipped
+test: lmpop with COUNT tags skipped
+test: lpop command passed
+test: lpop with COUNT version skipped
+test: lpos command version skipped
+test: lpos with RANK version skipped
+test: lpos with COUNT version skipped
+test: lpos with MAXLEN version skipped
+test: lpos with RANK, COUNT and MAXLEN version skipped
+test: lpush command passed
+test: lpush with multiple element passed
+test: lpushx command passed
+test: lpushx with multiple element passed
+test: lrange command passed
+test: lrem command passed
+test: lset command passed
+test: ltrim command passed
+test: rpop command passed
+test: rpop with COUNT version skipped
+test: rpoplpush command passed
+test: rpoplpush command tags skipped
+test: rpush command passed
+test: rpush with multiple element passed
+test: rpushx command passed
+test: rpushx command tags skipped
+test: rpushx with multiple element passed
+test: rpushx with multiple element tags skipped
+test: sadd command passed
+test: sadd command passed
+test: scard command passed
+test: sdiff command passed
+test: sdiff command tags skipped
+test: sdiffstore command passed
+test: sdiffstore command tags skipped
+test: sinter command passed
+test: sinter command tags skipped
+test: sintercard command version skipped
+test: sintercard command tags skipped
+test: sintercard with LIMIT version skipped
+test: sintercard with LIMIT tags skipped
+test: sinterstore command passed
+test: sinterstore command tags skipped
+test: sismember command passed
+test: smembers command passed
+test: smismember command version skipped
+test: smove command passed
+test: smove command tags skipped
+test: spop command passed
+test: spop with COUNT passed
+test: srandmember command failed
+test: srandmember with COUNT passed
+test: srem command passed
+test: srem with multiple member passed
+test: sscan command passed
+test: sscan with MATCH and COUNT passed
+test: sunion command passed
+test: sunion command tags skipped
+test: sunionstore command passed
+test: sunionstore command tags skipped
+test: bzmpop command version skipped
+test: bzmpop command tags skipped
+test: bzmpop with COUNT version skipped
+test: bzmpop with COUNT version skipped
+test: bzpopmax command passed
+test: bzpopmax with double timeout passed
+test: bzpopmin command passed
+test: bzpopmin with double timeout passed
+test: zadd command passed
+test: zadd with multiple elements passed
+test: zadd with XX / NX / CH / INCR passed
+test: zadd with GT / LT version skipped
+test: zcard command passed
+test: zcount command passed
+test: zdiff command version skipped
+test: zdiff command tags skipped
+test: zdiffstore command version skipped
+test: zdiffstore command tags skipped
+test: zincrby command passed
+test: zinter command version skipped
+test: zinter command tags skipped
+test: zinter with WEIGHTS version skipped
+test: zinter with WEIGHTS tags skipped
+test: zinter with AGGREGATE version skipped
+test: zinter with AGGREGATE tags skipped
+test: zinter WITHSCORES version skipped
+test: zinter WITHSCORES tags skipped
+test: zintercard command version skipped
+test: zintercard command tags skipped
+test: zintercard with LIMIT version skipped
+test: zintercard with LIMIT tags skipped
+test: zinterstore command passed
+test: zinterstore command tags skipped
+test: zinterstore with WEIGHTS passed
+test: zinterstore with WEIGHTS tags skipped
+test: zinterstore with AGGREGATE passed
+test: zinterstore with AGGREGATE tags skipped
+test: zlexcount command passed
+test: zmpop command version skipped
+test: zmpop with COUNT version skipped
+test: zmscore command version skipped
+test: zpopmax command passed
+test: zpopmax with COUNT passed
+test: zpopmin command passed
+test: zpopmin command passed
+test: zrandmember command version skipped
+test: zrandmember with COUNT version skipped
+test: zrandmember with WITHSCORES version skipped
+test: zrange command passed
+test: zrange with WITHSCORES passed
+test: zrange with BYSCORE / BYLEX version skipped
+test: zrange with REV version skipped
+test: zrange with LIMIT version skipped
+test: zrangebylex command passed
+test: zrangebylex with LIMIT passed
+test: zrangebyscore command passed
+test: zrangebyscore with LIMIT passed
+test: zrangebyscore with WITHSCORES passed
+test: zrangestore command version skipped
+test: zrangestore command tags skipped
+test: zrangestore with BYSCORE / BYLEX version skipped
+test: zrangestore with BYSCORE / BYLEX tags skipped
+test: zrangestore with REV version skipped
+test: zrangestore with REV tags skipped
+test: zrangestore with LIMIT version skipped
+test: zrangestore with LIMIT tags skipped
+test: zrank command passed
+test: zrank with WITHSCORE version skipped
+test: zrem command passed
+test: zrem with multiple elements passed
+test: zremrangebylex command passed
+test: zremrangebyrank command passed
+test: zremrangebyscore command passed
+test: zrevrange command passed
+test: zrevrange with WITHSCORES passed
+test: zrevrangebylex command passed
+test: zrevrangebylex with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrangebyscore with WITHSCORES passed
+test: zrevrangebyscore with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrank command passed
+test: zrevrank with WITHSCORE version skipped
+test: zscan command passed
+test: zscan with MATCH and COUNT passed
+test: zscore command passed
+test: zunion command version skipped
+test: zunion command tags skipped
+test: zunion with WEIGHTS and AGGREGATE version skipped
+test: zunion with WEIGHTS and AGGREGATE tags skipped
+test: zunion with WITHSCORES version skipped
+test: zunion with WITHSCORES tags skipped
+test: zunionstore command passed
+test: zunionstore command tags skipped
+test: zunionstore with WEIGHTS and AGGREGATE passed
+test: zunionstore with WEIGHTS and AGGREGATE tags skipped
+test: append command passed
+test: decr command passed
+test: decrby command passed
+test: get command passed
+test: getdel command version skipped
+test: getex command version skipped
+test: getex with EX version skipped
+test: getex with PX version skipped
+test: getex with EXAT version skipped
+test: getex with PXAT version skipped
+test: getex with PERSIST version skipped
+test: getrange command passed
+test: getset command passed
+test: incr command passed
+test: incrby command passed
+test: incrbyfloat command failed
+test: lcs command version skipped
+test: lcs command tags skipped
+test: lcs with LEN version skipped
+test: lcs with LEN tags skipped
+test: lcs with IDX version skipped
+test: lcs with IDX tags skipped
+test: lcs with MINMATCHLEN version skipped
+test: lcs with MINMATCHLEN tags skipped
+test: lcs with WITHMATCHLEN version skipped
+test: lcs with WITHMATCHLEN tags skipped
+test: mget command passed
+test: mget command tags skipped
+test: mset command passed
+test: mset command tags skipped
+test: msetnx command passed
+test: msetnx command tags skipped
+test: psetex command passed
+test: set command passed
+test: set with EX / PX passed
+test: set with NX / XX passed
+test: set with KEEPTTL passed
+test: set with GET version skipped
+test: set with EXAT / PXAT version skipped
+test: set with NX and GET version skipped
+test: setex command passed
+test: setnx command passed
+test: setrange command passed
+test: strlen command passed
+test: substr command passed
+test: hdel command passed
+test: hdel with multiple field passed
+test: hexists command passed
+test: hget command passed
+test: hgetall command passed
+test: hincrby command passed
+test: hincrbyfloat command passed
+test: hkeys command passed
+test: hlen command passed
+test: hmget command passed
+test: hmset command passed
+test: hrandfield command version skipped
+test: hrandfield with COUNT version skipped
+test: hrandfield with WITHVALUES version skipped
+test: hscan command passed
+test: hscan with MATCH and COUNT passed
+test: hset command passed
+test: hset command with multiple field and value passed
+test: hsetnx command passed
+test: hstrlen command passed
+test: hvals command passed
+test: bitcount command passed
+test: bitcount with BYTE / BIT version skipped
+test: bitfield command passed
+test: bitfield_ro command passed
+test: bitop command failed
+test: bitop command tags skipped
+test: bitpos command passed
+test: bitpos with BYTE / BIT version skipped
+test: getbit command passed
+test: setbit command passed
+test: pfadd command passed
+test: pfcount command passed
+test: pfmerge command passed
+test: pfmerge command tags skipped
+test: geoadd command passed
+test: geoadd with CH / NX / XX version skipped
+test: geodist command failed
+test: geodist with M / KM / FT / MI failed
+test: geohash command passed
+test: geopos command failed
+test: georadius command passed
+test: georadius with WITHCOORD / WITHDIST / WITHHASH failed
+test: georadius with COUNT passed
+test: georadius with ASC / DESC passed
+test: georadius with STORE / STOREDIST passed
+test: georadius with STORE / STOREDIST tags skipped
+test: georadius with ANY option for COUNT version skipped
+test: georadius with support for uppercase unit names version skipped
+test: georadius_ro command passed
+test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH failed
+test: georadius_ro with COUNT passed
+test: georadius_ro with ASC / DESC passed
+test: georadius_ro with ANY option for COUNT version skipped
+test: georadiusbymember command passed
+test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH failed
+test: georadiusbymember with COUNT passed
+test: georadiusbymember with ASC / DESC passed
+test: georadiusbymember with STORE / STOREDIST passed
+test: georadiusbymember with STORE / STOREDIST tags skipped
+test: georadiusbymember with ANY option for COUNT version skipped
+test: georadiusbymember with support for uppercase unit names version skipped
+test: georadiusbymember_ro command passed
+test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH failed
+test: georadiusbymember_ro with COUNT passed
+test: georadiusbymember_ro with ASC / DESC passed
+test: georadiusbymember_ro with ANY option for COUNT version skipped
+test: geosearch command version skipped
+test: geosearch with ASC / DESC version skipped
+test: geosearch with COUNT version skipped
+test: geosearch with WITHCOORD / WITHDIST / WITHHASH version skipped
+test: geosearch with support for uppercase unit names version skipped
+test: geosearchstore command version skipped
+test: geosearchstore command tags skipped
+test: geosearchstore with ASC / DESC version skipped
+test: geosearchstore with ASC / DESC tags skipped
+test: geosearchstore with COUNT version skipped
+test: geosearchstore with COUNT tags skipped
+test: geosearchstore with STOREDIST version skipped
+test: geosearchstore with STOREDIST tags skipped
+test: geosearchstore with support for uppercase unit names version skipped
+test: geosearchstore with support for uppercase unit names tags skipped
+test: dbsize command passed
+test: flushall command passed
+test: flushall with async failed
+test: flushall with sync version skipped
+test: flushdb command passed
+test: flushdb with async failed
+test: flushdb with sync version skipped
+test: swapdb command failed
+test: discard command passed
+test: exec command passed
+test: multi command passed
+test: unwatch command passed
+test: watch command passed
+test: eval command passed
+test: eval_ro command version skipped
+test: evalsha command passed
+test: evalsha_ro command version skipped
+test: fcall command version skipped
+test: fcall_ro command version skipped
+test: function delete command version skipped
+test: function flush command version skipped
+test: function flush with SYNC version skipped
+test: function flush with ASYNC version skipped
+test: function list command version skipped
+test: function load command version skipped
+test: function restore command version skipped
+test: function stats command version skipped
+test: script exists command passed
+test: script flush command passed
+test: script flush with SYNC version skipped
+test: script flush with ASYNC version skipped
+test: script load command passed
+test: xack command passed
+test: xadd command passed
+test: xadd with NOMKSTREAM/MINID/LIMIT version skipped
+test: xadd with EXPLICIT ID version skipped
+test: xclaim command passed
+test: xdel command passed
+test: xgroup create command passed
+test: xgroup create with MKSTREAM passed
+test: xgroup create with ENTRIESREAD version skipped
+test: xgroup createconsumer command version skipped
+test: xgroup delconsumer command passed
+test: xgroup destroy command passed
+test: xgroup setid command passed
+test: xgroup setid with ENTRIESREAD version skipped
+test: xlen command passed
+test: xpending command passed
+test: xrange command passed
+test: xread command passed
+test: xreadgroup command passed
+test: xrevrange command passed
+test: xrevrange command with EXCLUSIVE RANGES version skipped
+test: xtrim command failed
+test: xtrim command with MINID/LIMIT version skipped
+test: psubscribe command passed
+test: psubscribe with RESET version skipped
+test: publish command passed
+test: pubsub channels command passed
+test: pubsub numpat command passed
+test: pubsub numsub command passed
+test: pubsub shardchannels command version skipped
+test: pubsub shardnumsub command version skipped
+test: punsubscribe command passed
+test: spublish command version skipped
+test: ssubscribe command version skipped
+test: subscribe command passed
+test: subscribe with RESET version skipped
+test: sunsubscribe command version skipped
+test: unsubscribe command passed
+-------- The result of tests --------
+Summary: version: 6.0.0, total tests: 228, passed: 210, rate: 92.11%
+This is failed tests for 6.0.0:
+FailedTest(name='keys command', reason=ResponseError('only keys prefix match was supported'))
+FailedTest(name='srandmember command', reason="expected: 0, result: ['0']")
+FailedTest(name='flushall with async', reason=ResponseError('wrong number of arguments'))
+FailedTest(name='flushdb with async', reason=ResponseError('wrong number of arguments'))
+FailedTest(name='swapdb command', reason=ResponseError('unknown command `swapdb`, with args beginning with: `0`, `1`'))
+FailedTest(name='incrbyfloat command', reason='expected: 1.623, result: 1.623000')
+FailedTest(name='bitop command', reason=ResponseError('Not implemented: WRONGTYPE Operation against a key holding the wrong kind of value'))
+FailedTest(name='brpoplpush command', reason=ResponseError('unknown command `brpoplpush`, with args beginning with: `mylist`, `mylist1`, `0`'))
+FailedTest(name='touch command', reason=ResponseError('unknown command `touch`, with args beginning with: `not-exists`'))
+FailedTest(name='xtrim command', reason=ResponseError('value is not an integer or out of range'))
+FailedTest(name='brpoplpush with double timeout', reason=ResponseError('unknown command `brpoplpush`, with args beginning with: `mylist`, `mylist1`, `3.14`'))
+FailedTest(name='geodist command', reason='expected: 166274.1516, result: 166274.15156960033')
+FailedTest(name='geodist with M / KM / FT / MI', reason='expected: 166274.1516, result: 166274.15156960033')
+FailedTest(name='geopos command', reason="expected: [['13.36138933897018433', '38.11555639549629859'], ['15.08726745843887329', '37.50266842333162032'], None], result: [['13.361389338970184', '38.115556395496299'], ['15.087267458438873', '37.50266842333162'], None]")
+FailedTest(name='georadius with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Palermo', ['13.36138933897018433', '38.11555639549629859']], ['Catania', ['15.08726745843887329', '37.50266842333162032']]], result: [['Palermo', ['13.361389338970184', '38.115556395496299']], ['Catania', ['15.087267458438873', '37.50266842333162']]]")
+FailedTest(name='georadius_ro with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Palermo', ['13.36138933897018433', '38.11555639549629859']], ['Catania', ['15.08726745843887329', '37.50266842333162032']]], result: [['Palermo', ['13.361389338970184', '38.115556395496299']], ['Catania', ['15.087267458438873', '37.50266842333162']]]")
+FailedTest(name='georadiusbymember with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Agrigento', ['13.5833314061164856', '37.31666804993816555']], ['Palermo', ['13.36138933897018433', '38.11555639549629859']]], result: [['Agrigento', ['13.583331406116486', '37.316668049938166']], ['Palermo', ['13.361389338970184', '38.115556395496299']]]")
+FailedTest(name='georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Agrigento', ['13.5833314061164856', '37.31666804993816555']], ['Palermo', ['13.36138933897018433', '38.11555639549629859']]], result: [['Agrigento', ['13.583331406116486', '37.316668049938166']], ['Palermo', ['13.361389338970184', '38.115556395496299']]]")
+</pre>
diff --git a/Kvrocks-7.0.0.html b/Kvrocks-7.0.0.html
new file mode 100644
index 0000000..74f0249
--- /dev/null
+++ b/Kvrocks-7.0.0.html
@@ -0,0 +1,482 @@
+<pre>
+test: del command passed
+test: unlink command passed
+test: rename command passed
+test: rename command tags skipped
+test: renamenx command passed
+test: renamenx command tags skipped
+test: randomkey command passed
+test: exists command passed
+test: ttl command passed
+test: pttl command passed
+test: expire command passed
+test: expire with NX / XX failed
+test: expire with GT / LT failed
+test: expireat command passed
+test: expireat with NX / XX failed
+test: expireat with GT / LT failed
+test: pexpire command passed
+test: pexpire with NX / XX failed
+test: pexpire with GT / LT failed
+test: pexpireat command passed
+test: pexpireat with NX / XX failed
+test: pexpireat with GT / LT failed
+test: expiretime command passed
+test: pexpiretime command passed
+test: persist command passed
+test: dump command passed
+test: touch command failed
+test: restore command passed
+test: restore with REPLACE passed
+test: restore with ABSTTL passed
+test: restore with IDLETIME passed
+test: scan command passed
+test: scan with TYPE passed
+test: keys command failed
+test: move command passed
+test: copy command passed
+test: copy command tags skipped
+test: type command passed
+test: sort command passed
+test: sort_ro command skipped
+test: set command passed
+test: blmove command passed
+test: blmove command tags skipped
+test: blmpop command passed
+test: blmpop with COUNT passed
+test: blmpop with COUNT tags skipped
+test: blpop command passed
+test: blpop command tags skipped
+test: blpop with double timeout passed
+test: blpop with double timeout tags skipped
+test: brpop command passed
+test: brpop command tags skipped
+test: brpop with double timeout passed
+test: brpop with double timeout tags skipped
+test: brpoplpush command failed
+test: brpoplpush command tags skipped
+test: brpoplpush with double timeout failed
+test: brpoplpush with double timeout tags skipped
+test: lindex command passed
+test: linsert command passed
+test: llen command passed
+test: lmove command passed
+test: lmove command tags skipped
+test: lmpop command passed
+test: lmpop with COUNT passed
+test: lmpop with COUNT tags skipped
+test: lpop command passed
+test: lpop with COUNT passed
+test: lpos command passed
+test: lpos with RANK passed
+test: lpos with COUNT failed
+test: lpos with MAXLEN passed
+test: lpos with RANK, COUNT and MAXLEN failed
+test: lpush command passed
+test: lpush with multiple element passed
+test: lpushx command passed
+test: lpushx with multiple element passed
+test: lrange command passed
+test: lrem command passed
+test: lset command passed
+test: ltrim command passed
+test: rpop command passed
+test: rpop with COUNT passed
+test: rpoplpush command passed
+test: rpoplpush command tags skipped
+test: rpush command passed
+test: rpush with multiple element passed
+test: rpushx command passed
+test: rpushx command tags skipped
+test: rpushx with multiple element passed
+test: rpushx with multiple element tags skipped
+test: sadd command passed
+test: sadd command passed
+test: scard command passed
+test: sdiff command passed
+test: sdiff command tags skipped
+test: sdiffstore command passed
+test: sdiffstore command tags skipped
+test: sinter command passed
+test: sinter command tags skipped
+test: sintercard command passed
+test: sintercard command tags skipped
+test: sintercard with LIMIT passed
+test: sintercard with LIMIT tags skipped
+test: sinterstore command passed
+test: sinterstore command tags skipped
+test: sismember command passed
+test: smembers command passed
+test: smismember command passed
+test: smove command passed
+test: smove command tags skipped
+test: spop command passed
+test: spop with COUNT passed
+test: srandmember command failed
+test: srandmember with COUNT passed
+test: srem command passed
+test: srem with multiple member passed
+test: sscan command passed
+test: sscan with MATCH and COUNT passed
+test: sunion command passed
+test: sunion command tags skipped
+test: sunionstore command passed
+test: sunionstore command tags skipped
+test: bzmpop command failed
+test: bzmpop command tags skipped
+test: bzmpop with COUNT failed
+test: bzmpop with COUNT failed
+test: bzpopmax command passed
+test: bzpopmax with double timeout passed
+test: bzpopmin command passed
+test: bzpopmin with double timeout passed
+test: zadd command passed
+test: zadd with multiple elements passed
+test: zadd with XX / NX / CH / INCR passed
+test: zadd with GT / LT passed
+test: zcard command passed
+test: zcount command passed
+test: zdiff command passed
+test: zdiff command tags skipped
+test: zdiffstore command passed
+test: zdiffstore command tags skipped
+test: zincrby command passed
+test: zinter command passed
+test: zinter command tags skipped
+test: zinter with WEIGHTS passed
+test: zinter with WEIGHTS tags skipped
+test: zinter with AGGREGATE passed
+test: zinter with AGGREGATE tags skipped
+test: zinter WITHSCORES passed
+test: zinter WITHSCORES tags skipped
+test: zintercard command passed
+test: zintercard command tags skipped
+test: zintercard with LIMIT passed
+test: zintercard with LIMIT tags skipped
+test: zinterstore command passed
+test: zinterstore command tags skipped
+test: zinterstore with WEIGHTS passed
+test: zinterstore with WEIGHTS tags skipped
+test: zinterstore with AGGREGATE passed
+test: zinterstore with AGGREGATE tags skipped
+test: zlexcount command passed
+test: zmpop command failed
+test: zmpop with COUNT failed
+test: zmscore command failed
+test: zpopmax command passed
+test: zpopmax with COUNT passed
+test: zpopmin command passed
+test: zpopmin command passed
+test: zrandmember command failed
+test: zrandmember with COUNT passed
+test: zrandmember with WITHSCORES passed
+test: zrange command passed
+test: zrange with WITHSCORES passed
+test: zrange with BYSCORE / BYLEX passed
+test: zrange with REV passed
+test: zrange with LIMIT passed
+test: zrangebylex command passed
+test: zrangebylex with LIMIT passed
+test: zrangebyscore command passed
+test: zrangebyscore with LIMIT passed
+test: zrangebyscore with WITHSCORES passed
+test: zrangestore command passed
+test: zrangestore command tags skipped
+test: zrangestore with BYSCORE / BYLEX passed
+test: zrangestore with BYSCORE / BYLEX tags skipped
+test: zrangestore with REV passed
+test: zrangestore with REV tags skipped
+test: zrangestore with LIMIT passed
+test: zrangestore with LIMIT tags skipped
+test: zrank command passed
+test: zrank with WITHSCORE version skipped
+test: zrem command passed
+test: zrem with multiple elements passed
+test: zremrangebylex command passed
+test: zremrangebyrank command passed
+test: zremrangebyscore command passed
+test: zrevrange command passed
+test: zrevrange with WITHSCORES passed
+test: zrevrangebylex command passed
+test: zrevrangebylex with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrangebyscore with WITHSCORES passed
+test: zrevrangebyscore with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrank command passed
+test: zrevrank with WITHSCORE version skipped
+test: zscan command passed
+test: zscan with MATCH and COUNT passed
+test: zscore command passed
+test: zunion command passed
+test: zunion command tags skipped
+test: zunion with WEIGHTS and AGGREGATE passed
+test: zunion with WEIGHTS and AGGREGATE tags skipped
+test: zunion with WITHSCORES passed
+test: zunion with WITHSCORES tags skipped
+test: zunionstore command passed
+test: zunionstore command tags skipped
+test: zunionstore with WEIGHTS and AGGREGATE passed
+test: zunionstore with WEIGHTS and AGGREGATE tags skipped
+test: append command passed
+test: decr command passed
+test: decrby command passed
+test: get command passed
+test: getdel command passed
+test: getex command passed
+test: getex with EX passed
+test: getex with PX passed
+test: getex with EXAT passed
+test: getex with PXAT passed
+test: getex with PERSIST passed
+test: getrange command passed
+test: getset command passed
+test: incr command passed
+test: incrby command passed
+test: incrbyfloat command failed
+test: lcs command passed
+test: lcs command tags skipped
+test: lcs with LEN passed
+test: lcs with LEN tags skipped
+test: lcs with IDX passed
+test: lcs with IDX tags skipped
+test: lcs with MINMATCHLEN passed
+test: lcs with MINMATCHLEN tags skipped
+test: lcs with WITHMATCHLEN passed
+test: lcs with WITHMATCHLEN tags skipped
+test: mget command passed
+test: mget command tags skipped
+test: mset command passed
+test: mset command tags skipped
+test: msetnx command passed
+test: msetnx command tags skipped
+test: psetex command passed
+test: set command passed
+test: set with EX / PX passed
+test: set with NX / XX passed
+test: set with KEEPTTL passed
+test: set with GET passed
+test: set with EXAT / PXAT passed
+test: set with NX and GET passed
+test: setex command passed
+test: setnx command passed
+test: setrange command passed
+test: strlen command passed
+test: substr command passed
+test: hdel command passed
+test: hdel with multiple field passed
+test: hexists command passed
+test: hget command passed
+test: hgetall command passed
+test: hincrby command passed
+test: hincrbyfloat command passed
+test: hkeys command passed
+test: hlen command passed
+test: hmget command passed
+test: hmset command passed
+test: hrandfield command passed
+test: hrandfield with COUNT passed
+test: hrandfield with WITHVALUES passed
+test: hscan command passed
+test: hscan with MATCH and COUNT passed
+test: hset command passed
+test: hset command with multiple field and value passed
+test: hsetnx command passed
+test: hstrlen command passed
+test: hvals command passed
+test: bitcount command passed
+test: bitcount with BYTE / BIT passed
+test: bitfield command passed
+test: bitfield_ro command passed
+test: bitop command failed
+test: bitop command tags skipped
+test: bitpos command passed
+test: bitpos with BYTE / BIT passed
+test: getbit command passed
+test: setbit command passed
+test: pfadd command passed
+test: pfcount command passed
+test: pfmerge command passed
+test: pfmerge command tags skipped
+test: geoadd command passed
+test: geoadd with CH / NX / XX failed
+test: geodist command failed
+test: geodist with M / KM / FT / MI failed
+test: geohash command passed
+test: geopos command failed
+test: georadius command passed
+test: georadius with WITHCOORD / WITHDIST / WITHHASH failed
+test: georadius with COUNT passed
+test: georadius with ASC / DESC passed
+test: georadius with STORE / STOREDIST passed
+test: georadius with STORE / STOREDIST tags skipped
+test: georadius with ANY option for COUNT failed
+test: georadius with support for uppercase unit names passed
+test: georadius_ro command passed
+test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH failed
+test: georadius_ro with COUNT passed
+test: georadius_ro with ASC / DESC passed
+test: georadius_ro with ANY option for COUNT failed
+test: georadiusbymember command passed
+test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH failed
+test: georadiusbymember with COUNT passed
+test: georadiusbymember with ASC / DESC passed
+test: georadiusbymember with STORE / STOREDIST passed
+test: georadiusbymember with STORE / STOREDIST tags skipped
+test: georadiusbymember with ANY option for COUNT failed
+test: georadiusbymember with support for uppercase unit names passed
+test: georadiusbymember_ro command passed
+test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH failed
+test: georadiusbymember_ro with COUNT passed
+test: georadiusbymember_ro with ASC / DESC passed
+test: georadiusbymember_ro with ANY option for COUNT failed
+test: geosearch command passed
+test: geosearch with ASC / DESC passed
+test: geosearch with COUNT failed
+test: geosearch with WITHCOORD / WITHDIST / WITHHASH failed
+test: geosearch with support for uppercase unit names passed
+test: geosearchstore command failed
+test: geosearchstore command tags skipped
+test: geosearchstore with ASC / DESC passed
+test: geosearchstore with ASC / DESC tags skipped
+test: geosearchstore with COUNT failed
+test: geosearchstore with COUNT tags skipped
+test: geosearchstore with STOREDIST passed
+test: geosearchstore with STOREDIST tags skipped
+test: geosearchstore with support for uppercase unit names passed
+test: geosearchstore with support for uppercase unit names tags skipped
+test: dbsize command passed
+test: flushall command passed
+test: flushall with async failed
+test: flushall with sync failed
+test: flushdb command passed
+test: flushdb with async failed
+test: flushdb with sync failed
+test: swapdb command failed
+test: discard command passed
+test: exec command passed
+test: multi command passed
+test: unwatch command passed
+test: watch command passed
+test: eval command passed
+test: eval_ro command passed
+test: evalsha command passed
+test: evalsha_ro command passed
+test: fcall command failed
+test: fcall_ro command failed
+test: function delete command failed
+test: function flush command failed
+test: function flush with SYNC failed
+test: function flush with ASYNC failed
+test: function list command failed
+test: function load command failed
+test: function restore command failed
+test: function stats command failed
+test: script exists command passed
+test: script flush command passed
+test: script flush with SYNC failed
+test: script flush with ASYNC failed
+test: script load command passed
+test: xack command passed
+test: xadd command passed
+test: xadd with NOMKSTREAM/MINID/LIMIT failed
+test: xadd with EXPLICIT ID passed
+test: xclaim command passed
+test: xdel command passed
+test: xgroup create command passed
+test: xgroup create with MKSTREAM passed
+test: xgroup create with ENTRIESREAD passed
+test: xgroup createconsumer command passed
+test: xgroup delconsumer command passed
+test: xgroup destroy command passed
+test: xgroup setid command passed
+test: xgroup setid with ENTRIESREAD passed
+test: xlen command passed
+test: xpending command passed
+test: xrange command passed
+test: xread command passed
+test: xreadgroup command passed
+test: xrevrange command passed
+test: xrevrange command with EXCLUSIVE RANGES passed
+test: xtrim command failed
+test: xtrim command with MINID/LIMIT failed
+test: psubscribe command passed
+test: psubscribe with RESET passed
+test: publish command passed
+test: pubsub channels command passed
+test: pubsub numpat command passed
+test: pubsub numsub command passed
+test: pubsub shardchannels command passed
+test: pubsub shardnumsub command passed
+test: punsubscribe command passed
+test: spublish command failed
+test: ssubscribe command passed
+test: subscribe command passed
+test: subscribe with RESET passed
+test: sunsubscribe command passed
+test: unsubscribe command passed
+-------- The result of tests --------
+Summary: version: 7.0.0, total tests: 350, passed: 289, rate: 82.57%
+This is failed tests for 7.0.0:
+FailedTest(name='keys command', reason=ResponseError('only keys prefix match was supported'))
+FailedTest(name='srandmember command', reason="expected: 0, result: ['0']")
+FailedTest(name='flushall with async', reason=ResponseError('wrong number of arguments'))
+FailedTest(name='flushdb with async', reason=ResponseError('wrong number of arguments'))
+FailedTest(name='swapdb command', reason=ResponseError('unknown command `swapdb`, with args beginning with: `0`, `1`'))
+FailedTest(name='expire with NX / XX', reason=ResponseError('wrong number of arguments'))
+FailedTest(name='expire with GT / LT', reason=ResponseError('wrong number of arguments'))
+FailedTest(name='expireat with NX / XX', reason=ResponseError('wrong number of arguments'))
+FailedTest(name='expireat with GT / LT', reason=ResponseError('wrong number of arguments'))
+FailedTest(name='pexpire with NX / XX', reason=ResponseError('wrong number of arguments'))
+FailedTest(name='pexpire with GT / LT', reason=ResponseError('wrong number of arguments'))
+FailedTest(name='pexpireat with NX / XX', reason=ResponseError('wrong number of arguments'))
+FailedTest(name='pexpireat with GT / LT', reason=ResponseError('wrong number of arguments'))
+FailedTest(name='bzmpop command', reason="expected: ['myzset', [['one', '1']]], result: ['myzset', ['one', '1']]")
+FailedTest(name='bzmpop with COUNT', reason="expected: ['myzset', [['one', '1'], ['two', '2']]], result: ['myzset', ['one', '1', 'two', '2']]")
+FailedTest(name='bzmpop with COUNT', reason="expected: ['myzset', [['one', '1'], ['two', '2']]], result: ['myzset', ['one', '1', 'two', '2']]")
+FailedTest(name='zmpop command', reason="expected: ['myzset', [['one', '1']]], result: ['myzset', ['one', '1']]")
+FailedTest(name='zmpop with COUNT', reason="expected: ['myzset', [['one', '1'], ['two', '2']]], result: ['myzset', ['one', '1', 'two', '2']]")
+FailedTest(name='fcall command', reason=ResponseError('no such subcommand'))
+FailedTest(name='fcall_ro command', reason=ResponseError('no such subcommand'))
+FailedTest(name='function delete command', reason=ResponseError('no such subcommand'))
+FailedTest(name='function flush command', reason=ResponseError('no such subcommand'))
+FailedTest(name='function flush with SYNC', reason=ResponseError('no such subcommand'))
+FailedTest(name='function flush with ASYNC', reason=ResponseError('no such subcommand'))
+FailedTest(name='function list command', reason=ResponseError('no such subcommand'))
+FailedTest(name='function load command', reason=ResponseError('no such subcommand'))
+FailedTest(name='function restore command', reason=ResponseError('no such subcommand'))
+FailedTest(name='function stats command', reason=ResponseError('no such subcommand'))
+FailedTest(name='spublish command', reason=ResponseError('unknown command `spublish`, with args beginning with: `hello`, `world`'))
+FailedTest(name='incrbyfloat command', reason='expected: 1.623, result: 1.623000')
+FailedTest(name='bitop command', reason=ResponseError('Not implemented: WRONGTYPE Operation against a key holding the wrong kind of value'))
+FailedTest(name='brpoplpush command', reason=ResponseError('unknown command `brpoplpush`, with args beginning with: `mylist`, `mylist1`, `0`'))
+FailedTest(name='touch command', reason=ResponseError('unknown command `touch`, with args beginning with: `not-exists`'))
+FailedTest(name='xtrim command', reason=ResponseError('value is not an integer or out of range'))
+FailedTest(name='brpoplpush with double timeout', reason=ResponseError('unknown command `brpoplpush`, with args beginning with: `mylist`, `mylist1`, `3.14`'))
+FailedTest(name='zmscore command', reason="expected: ['1', '2', None], result: ['$1\\r\\n1\\r\\n', '$1\\r\\n2\\r\\n', '$-1\\r\\n']")
+FailedTest(name='zrandmember command', reason='expected: a, result: $1\r\na\r\n')
+FailedTest(name='geoadd with CH / NX / XX', reason=ResponseError('wrong number of arguments'))
+FailedTest(name='georadius with ANY option for COUNT', reason=ResponseError('syntax error'))
+FailedTest(name='georadius_ro with ANY option for COUNT', reason=ResponseError('syntax error'))
+FailedTest(name='georadiusbymember with ANY option for COUNT', reason=ResponseError('syntax error'))
+FailedTest(name='georadiusbymember_ro with ANY option for COUNT', reason=ResponseError('syntax error'))
+FailedTest(name='geosearch with COUNT', reason="expected: ['Catania'], result: ['Palermo']")
+FailedTest(name='geosearch with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Palermo', ['13.36138933897018433', '38.11555639549629859']], ['Catania', ['15.08726745843887329', '37.50266842333162032']]], result: [['Palermo', ['13.361389338970184', '38.115556395496299']], ['Catania', ['15.087267458438873', '37.50266842333162']]]")
+FailedTest(name='geosearchstore command', reason=ResponseError('NotFound: '))
+FailedTest(name='geosearchstore with COUNT', reason='expected: 1, result: 2')
+FailedTest(name='flushall with sync', reason=ResponseError('wrong number of arguments'))
+FailedTest(name='flushdb with sync', reason=ResponseError('wrong number of arguments'))
+FailedTest(name='script flush with SYNC', reason=ResponseError('Unknown SCRIPT subcommand or wrong number of arguments'))
+FailedTest(name='script flush with ASYNC', reason=ResponseError('Unknown SCRIPT subcommand or wrong number of arguments'))
+FailedTest(name='xadd with NOMKSTREAM/MINID/LIMIT', reason=ResponseError('value is not an integer or out of range'))
+FailedTest(name='xtrim command with MINID/LIMIT', reason=ResponseError('Invalid stream ID specified as stream command argument'))
+FailedTest(name='lpos with COUNT', reason="expected: [2, 6], result: ['2', '6']")
+FailedTest(name='lpos with RANK, COUNT and MAXLEN', reason="expected: [7, 6, 2], result: ['7', '6', '2']")
+FailedTest(name='geodist command', reason='expected: 166274.1516, result: 166274.15156960033')
+FailedTest(name='geodist with M / KM / FT / MI', reason='expected: 166274.1516, result: 166274.15156960033')
+FailedTest(name='geopos command', reason="expected: [['13.36138933897018433', '38.11555639549629859'], ['15.08726745843887329', '37.50266842333162032'], None], result: [['13.361389338970184', '38.115556395496299'], ['15.087267458438873', '37.50266842333162'], None]")
+FailedTest(name='georadius with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Palermo', ['13.36138933897018433', '38.11555639549629859']], ['Catania', ['15.08726745843887329', '37.50266842333162032']]], result: [['Palermo', ['13.361389338970184', '38.115556395496299']], ['Catania', ['15.087267458438873', '37.50266842333162']]]")
+FailedTest(name='georadius_ro with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Palermo', ['13.36138933897018433', '38.11555639549629859']], ['Catania', ['15.08726745843887329', '37.50266842333162032']]], result: [['Palermo', ['13.361389338970184', '38.115556395496299']], ['Catania', ['15.087267458438873', '37.50266842333162']]]")
+FailedTest(name='georadiusbymember with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Agrigento', ['13.5833314061164856', '37.31666804993816555']], ['Palermo', ['13.36138933897018433', '38.11555639549629859']]], result: [['Agrigento', ['13.583331406116486', '37.316668049938166']], ['Palermo', ['13.361389338970184', '38.115556395496299']]]")
+FailedTest(name='georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Agrigento', ['13.5833314061164856', '37.31666804993816555']], ['Palermo', ['13.36138933897018433', '38.11555639549629859']]], result: [['Agrigento', ['13.583331406116486', '37.316668049938166']], ['Palermo', ['13.361389338970184', '38.115556395496299']]]")
+</pre>
diff --git a/Pika-4.0.0.html b/Pika-4.0.0.html
new file mode 100644
index 0000000..b8308b8
--- /dev/null
+++ b/Pika-4.0.0.html
@@ -0,0 +1,459 @@
+<pre>
+test: del command passed
+test: unlink command passed
+test: rename command failed
+test: rename command tags skipped
+test: renamenx command failed
+test: renamenx command tags skipped
+test: randomkey command failed
+test: exists command passed
+test: ttl command passed
+test: pttl command passed
+test: expire command passed
+test: expire with NX / XX version skipped
+test: expire with GT / LT version skipped
+test: expireat command passed
+test: expireat with NX / XX version skipped
+test: expireat with GT / LT version skipped
+test: pexpire command passed
+test: pexpire with NX / XX version skipped
+test: pexpire with GT / LT version skipped
+test: pexpireat command passed
+test: pexpireat with NX / XX version skipped
+test: pexpireat with GT / LT version skipped
+test: expiretime command version skipped
+test: pexpiretime command version skipped
+test: persist command passed
+test: dump command failed
+test: touch command failed
+test: restore command failed
+test: restore with REPLACE failed
+test: restore with ABSTTL version skipped
+test: restore with IDLETIME version skipped
+test: scan command passed
+test: scan with TYPE version skipped
+test: keys command passed
+test: move command failed
+test: copy command version skipped
+test: copy command tags skipped
+test: type command passed
+test: sort command failed
+test: sort_ro command skipped
+test: set command passed
+test: blmove command version skipped
+test: blmove command tags skipped
+test: blmpop command version skipped
+test: blmpop with COUNT version skipped
+test: blmpop with COUNT tags skipped
+test: blpop command passed
+test: blpop command tags skipped
+test: blpop with double timeout version skipped
+test: blpop with double timeout tags skipped
+test: brpop command passed
+test: brpop command tags skipped
+test: brpop with double timeout version skipped
+test: brpop with double timeout tags skipped
+test: brpoplpush command failed
+test: brpoplpush command tags skipped
+test: brpoplpush with double timeout version skipped
+test: brpoplpush with double timeout tags skipped
+test: lindex command passed
+test: linsert command passed
+test: llen command passed
+test: lmove command version skipped
+test: lmove command tags skipped
+test: lmpop command version skipped
+test: lmpop with COUNT version skipped
+test: lmpop with COUNT tags skipped
+test: lpop command passed
+test: lpop with COUNT version skipped
+test: lpos command version skipped
+test: lpos with RANK version skipped
+test: lpos with COUNT version skipped
+test: lpos with MAXLEN version skipped
+test: lpos with RANK, COUNT and MAXLEN version skipped
+test: lpush command passed
+test: lpush with multiple element passed
+test: lpushx command passed
+test: lpushx with multiple element passed
+test: lrange command passed
+test: lrem command passed
+test: lset command passed
+test: ltrim command passed
+test: rpop command passed
+test: rpop with COUNT version skipped
+test: rpoplpush command passed
+test: rpoplpush command tags skipped
+test: rpush command passed
+test: rpush with multiple element passed
+test: rpushx command passed
+test: rpushx command tags skipped
+test: rpushx with multiple element passed
+test: rpushx with multiple element tags skipped
+test: sadd command passed
+test: sadd command passed
+test: scard command passed
+test: sdiff command passed
+test: sdiff command tags skipped
+test: sdiffstore command passed
+test: sdiffstore command tags skipped
+test: sinter command passed
+test: sinter command tags skipped
+test: sintercard command version skipped
+test: sintercard command tags skipped
+test: sintercard with LIMIT version skipped
+test: sintercard with LIMIT tags skipped
+test: sinterstore command passed
+test: sinterstore command tags skipped
+test: sismember command passed
+test: smembers command passed
+test: smismember command version skipped
+test: smove command passed
+test: smove command tags skipped
+test: spop command failed
+test: spop with COUNT passed
+test: srandmember command passed
+test: srandmember with COUNT passed
+test: srem command passed
+test: srem with multiple member passed
+test: sscan command passed
+test: sscan with MATCH and COUNT passed
+test: sunion command passed
+test: sunion command tags skipped
+test: sunionstore command passed
+test: sunionstore command tags skipped
+test: bzmpop command version skipped
+test: bzmpop command tags skipped
+test: bzmpop with COUNT version skipped
+test: bzmpop with COUNT version skipped
+test: bzpopmax command version skipped
+test: bzpopmax with double timeout version skipped
+test: bzpopmin command version skipped
+test: bzpopmin with double timeout version skipped
+test: zadd command passed
+test: zadd with multiple elements passed
+test: zadd with XX / NX / CH / INCR failed
+test: zadd with GT / LT version skipped
+test: zcard command passed
+test: zcount command passed
+test: zdiff command version skipped
+test: zdiff command tags skipped
+test: zdiffstore command version skipped
+test: zdiffstore command tags skipped
+test: zincrby command passed
+test: zinter command version skipped
+test: zinter command tags skipped
+test: zinter with WEIGHTS version skipped
+test: zinter with WEIGHTS tags skipped
+test: zinter with AGGREGATE version skipped
+test: zinter with AGGREGATE tags skipped
+test: zinter WITHSCORES version skipped
+test: zinter WITHSCORES tags skipped
+test: zintercard command version skipped
+test: zintercard command tags skipped
+test: zintercard with LIMIT version skipped
+test: zintercard with LIMIT tags skipped
+test: zinterstore command passed
+test: zinterstore command tags skipped
+test: zinterstore with WEIGHTS passed
+test: zinterstore with WEIGHTS tags skipped
+test: zinterstore with AGGREGATE passed
+test: zinterstore with AGGREGATE tags skipped
+test: zlexcount command passed
+test: zmpop command version skipped
+test: zmpop with COUNT version skipped
+test: zmscore command version skipped
+test: zpopmax command version skipped
+test: zpopmax with COUNT version skipped
+test: zpopmin command version skipped
+test: zpopmin command version skipped
+test: zrandmember command version skipped
+test: zrandmember with COUNT version skipped
+test: zrandmember with WITHSCORES version skipped
+test: zrange command passed
+test: zrange with WITHSCORES passed
+test: zrange with BYSCORE / BYLEX version skipped
+test: zrange with REV version skipped
+test: zrange with LIMIT version skipped
+test: zrangebylex command passed
+test: zrangebylex with LIMIT passed
+test: zrangebyscore command passed
+test: zrangebyscore with LIMIT passed
+test: zrangebyscore with WITHSCORES passed
+test: zrangestore command version skipped
+test: zrangestore command tags skipped
+test: zrangestore with BYSCORE / BYLEX version skipped
+test: zrangestore with BYSCORE / BYLEX tags skipped
+test: zrangestore with REV version skipped
+test: zrangestore with REV tags skipped
+test: zrangestore with LIMIT version skipped
+test: zrangestore with LIMIT tags skipped
+test: zrank command passed
+test: zrank with WITHSCORE version skipped
+test: zrem command passed
+test: zrem with multiple elements passed
+test: zremrangebylex command passed
+test: zremrangebyrank command passed
+test: zremrangebyscore command passed
+test: zrevrange command passed
+test: zrevrange with WITHSCORES passed
+test: zrevrangebylex command passed
+test: zrevrangebylex with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrangebyscore with WITHSCORES passed
+test: zrevrangebyscore with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrank command passed
+test: zrevrank with WITHSCORE version skipped
+test: zscan command passed
+test: zscan with MATCH and COUNT passed
+test: zscore command passed
+test: zunion command version skipped
+test: zunion command tags skipped
+test: zunion with WEIGHTS and AGGREGATE version skipped
+test: zunion with WEIGHTS and AGGREGATE tags skipped
+test: zunion with WITHSCORES version skipped
+test: zunion with WITHSCORES tags skipped
+test: zunionstore command passed
+test: zunionstore command tags skipped
+test: zunionstore with WEIGHTS and AGGREGATE passed
+test: zunionstore with WEIGHTS and AGGREGATE tags skipped
+test: append command passed
+test: decr command passed
+test: decrby command passed
+test: get command passed
+test: getdel command version skipped
+test: getex command version skipped
+test: getex with EX version skipped
+test: getex with PX version skipped
+test: getex with EXAT version skipped
+test: getex with PXAT version skipped
+test: getex with PERSIST version skipped
+test: getrange command passed
+test: getset command passed
+test: incr command passed
+test: incrby command passed
+test: incrbyfloat command passed
+test: lcs command version skipped
+test: lcs command tags skipped
+test: lcs with LEN version skipped
+test: lcs with LEN tags skipped
+test: lcs with IDX version skipped
+test: lcs with IDX tags skipped
+test: lcs with MINMATCHLEN version skipped
+test: lcs with MINMATCHLEN tags skipped
+test: lcs with WITHMATCHLEN version skipped
+test: lcs with WITHMATCHLEN tags skipped
+test: mget command passed
+test: mget command tags skipped
+test: mset command passed
+test: mset command tags skipped
+test: msetnx command passed
+test: msetnx command tags skipped
+test: psetex command failed
+test: set command passed
+test: set with EX / PX failed
+test: set with NX / XX passed
+test: set with KEEPTTL version skipped
+test: set with GET version skipped
+test: set with EXAT / PXAT version skipped
+test: set with NX and GET version skipped
+test: setex command passed
+test: setnx command passed
+test: setrange command passed
+test: strlen command passed
+test: substr command failed
+test: hdel command passed
+test: hdel with multiple field passed
+test: hexists command passed
+test: hget command passed
+test: hgetall command passed
+test: hincrby command passed
+test: hincrbyfloat command passed
+test: hkeys command passed
+test: hlen command passed
+test: hmget command passed
+test: hmset command passed
+test: hrandfield command version skipped
+test: hrandfield with COUNT version skipped
+test: hrandfield with WITHVALUES version skipped
+test: hscan command passed
+test: hscan with MATCH and COUNT passed
+test: hset command passed
+test: hset command with multiple field and value failed
+test: hsetnx command passed
+test: hstrlen command passed
+test: hvals command passed
+test: bitcount command passed
+test: bitcount with BYTE / BIT version skipped
+test: bitfield command failed
+test: bitfield_ro command version skipped
+test: bitop command passed
+test: bitop command tags skipped
+test: bitpos command passed
+test: bitpos with BYTE / BIT version skipped
+test: getbit command passed
+test: setbit command passed
+test: pfadd command passed
+test: pfcount command passed
+test: pfmerge command passed
+test: pfmerge command tags skipped
+test: geoadd command passed
+test: geoadd with CH / NX / XX version skipped
+test: geodist command passed
+test: geodist with M / KM / FT / MI passed
+test: geohash command passed
+test: geopos command failed
+test: georadius command passed
+test: georadius with WITHCOORD / WITHDIST / WITHHASH failed
+test: georadius with COUNT failed
+test: georadius with ASC / DESC passed
+test: georadius with STORE / STOREDIST passed
+test: georadius with STORE / STOREDIST tags skipped
+test: georadius with ANY option for COUNT version skipped
+test: georadius with support for uppercase unit names version skipped
+test: georadius_ro command failed
+test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH failed
+test: georadius_ro with COUNT failed
+test: georadius_ro with ASC / DESC failed
+test: georadius_ro with ANY option for COUNT version skipped
+test: georadiusbymember command passed
+test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH failed
+test: georadiusbymember with COUNT passed
+test: georadiusbymember with ASC / DESC passed
+test: georadiusbymember with STORE / STOREDIST passed
+test: georadiusbymember with STORE / STOREDIST tags skipped
+test: georadiusbymember with ANY option for COUNT version skipped
+test: georadiusbymember with support for uppercase unit names version skipped
+test: georadiusbymember_ro command failed
+test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH failed
+test: georadiusbymember_ro with COUNT failed
+test: georadiusbymember_ro with ASC / DESC failed
+test: georadiusbymember_ro with ANY option for COUNT version skipped
+test: geosearch command version skipped
+test: geosearch with ASC / DESC version skipped
+test: geosearch with COUNT version skipped
+test: geosearch with WITHCOORD / WITHDIST / WITHHASH version skipped
+test: geosearch with support for uppercase unit names version skipped
+test: geosearchstore command version skipped
+test: geosearchstore command tags skipped
+test: geosearchstore with ASC / DESC version skipped
+test: geosearchstore with ASC / DESC tags skipped
+test: geosearchstore with COUNT version skipped
+test: geosearchstore with COUNT tags skipped
+test: geosearchstore with STOREDIST version skipped
+test: geosearchstore with STOREDIST tags skipped
+test: geosearchstore with support for uppercase unit names version skipped
+test: geosearchstore with support for uppercase unit names tags skipped
+test: dbsize command passed
+test: flushall command passed
+test: flushall with async failed
+test: flushall with sync version skipped
+test: flushdb command passed
+test: flushdb with async failed
+test: flushdb with sync version skipped
+test: swapdb command failed
+test: discard command passed
+test: exec command passed
+test: multi command passed
+test: unwatch command passed
+test: watch command passed
+test: eval command failed
+test: eval_ro command version skipped
+test: evalsha command failed
+test: evalsha_ro command version skipped
+test: fcall command version skipped
+test: fcall_ro command version skipped
+test: function delete command version skipped
+test: function flush command version skipped
+test: function flush with SYNC version skipped
+test: function flush with ASYNC version skipped
+test: function list command version skipped
+test: function load command version skipped
+test: function restore command version skipped
+test: function stats command version skipped
+test: script exists command failed
+test: script flush command failed
+test: script flush with SYNC version skipped
+test: script flush with ASYNC version skipped
+test: script load command failed
+test: xack command version skipped
+test: xadd command version skipped
+test: xadd with NOMKSTREAM/MINID/LIMIT version skipped
+test: xadd with EXPLICIT ID version skipped
+test: xclaim command version skipped
+test: xdel command version skipped
+test: xgroup create command version skipped
+test: xgroup create with MKSTREAM version skipped
+test: xgroup create with ENTRIESREAD version skipped
+test: xgroup createconsumer command version skipped
+test: xgroup delconsumer command version skipped
+test: xgroup destroy command version skipped
+test: xgroup setid command version skipped
+test: xgroup setid with ENTRIESREAD version skipped
+test: xlen command version skipped
+test: xpending command version skipped
+test: xrange command version skipped
+test: xread command version skipped
+test: xreadgroup command version skipped
+test: xrevrange command version skipped
+test: xrevrange command with EXCLUSIVE RANGES version skipped
+test: xtrim command version skipped
+test: xtrim command with MINID/LIMIT version skipped
+test: psubscribe command failed
+test: psubscribe with RESET version skipped
+test: publish command run test error only (P)SUBSCRIBE / (P)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub channels command run test error only (P)SUBSCRIBE / (P)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub numpat command run test error only (P)SUBSCRIBE / (P)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub numsub command run test error only (P)SUBSCRIBE / (P)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: pubsub shardchannels command version skipped
+test: pubsub shardnumsub command version skipped
+test: punsubscribe command run test error only (P)SUBSCRIBE / (P)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: spublish command version skipped
+test: ssubscribe command version skipped
+test: subscribe command run test error only (P)SUBSCRIBE / (P)UNSUBSCRIBE / PING / QUIT allowed in this context
+test: subscribe with RESET version skipped
+test: sunsubscribe command version skipped
+test: unsubscribe command run test error only (P)SUBSCRIBE / (P)UNSUBSCRIBE / PING / QUIT allowed in this context
+-------- The result of tests --------
+Summary: version: 4.0.0, total tests: 189, passed: 151, rate: 79.89%
+This is failed tests for 4.0.0:
+FailedTest(name='rename command', reason=ResponseError('unknown command "rename"'))
+FailedTest(name='renamenx command', reason=ResponseError('unknown command "renamenx"'))
+FailedTest(name='randomkey command', reason=ResponseError('unknown command "randomkey"'))
+FailedTest(name='move command', reason=ResponseError('unknown command "move"'))
+FailedTest(name='sort command', reason=ResponseError('unknown command "sort"'))
+FailedTest(name='spop command', reason="expected: 0, result: ['0']")
+FailedTest(name='substr command', reason=ResponseError('unknown command "substr"'))
+FailedTest(name='hset command with multiple field and value', reason=ResponseError("wrong number of arguments for 'hset' command"))
+FailedTest(name='flushall with async', reason=ResponseError("wrong number of arguments for 'flushall' command"))
+FailedTest(name='flushdb with async', reason=ResponseError("invalid DB for ''"))
+FailedTest(name='swapdb command', reason=ResponseError('unknown command "swapdb"'))
+FailedTest(name='dump command', reason=ResponseError('unknown command "dump"'))
+FailedTest(name='restore command', reason=ResponseError('unknown command "restore"'))
+FailedTest(name='psetex command', reason=ResponseError('Invalid argument: invalid expire time'))
+FailedTest(name='eval command', reason=ResponseError('unknown command "eval"'))
+FailedTest(name='evalsha command', reason=ResponseError('unknown command "script"'))
+FailedTest(name='script exists command', reason=ResponseError('unknown command "script"'))
+FailedTest(name='script flush command', reason=ResponseError('unknown command "script"'))
+FailedTest(name='script load command', reason=ResponseError('unknown command "script"'))
+FailedTest(name='brpoplpush command', reason=ResponseError('unknown command "brpoplpush"'))
+FailedTest(name='touch command', reason=ResponseError('unknown command "touch"'))
+FailedTest(name='restore with REPLACE', reason=ResponseError('unknown command "restore"'))
+FailedTest(name='psubscribe command', reason=ResponseError('only (P)SUBSCRIBE / (P)UNSUBSCRIBE / PING / QUIT allowed in this context'))
+FailedTest(name='bitfield command', reason=ResponseError('unknown command "bitfield"'))
+FailedTest(name='geopos command', reason="expected: [['13.36138933897018433', '38.11555639549629859'], ['15.08726745843887329', '37.50266842333162032'], None], result: [['13.361389338970184', '38.115556395496299'], ['15.087267458438873', '37.50266842333162'], None]")
+FailedTest(name='georadius with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Palermo', ['13.36138933897018433', '38.11555639549629859']], ['Catania', ['15.08726745843887329', '37.50266842333162032']]], result: [['Palermo', ['13.361389338970184', '38.115556395496299']], ['Catania', ['15.087267458438873', '37.50266842333162']]]")
+FailedTest(name='georadius with COUNT', reason="expected: ['Catania'], result: ['Palermo']")
+FailedTest(name='georadius_ro command', reason=ResponseError('unknown command "georadius_ro"'))
+FailedTest(name='georadius_ro with WITHCOORD / WITHDIST / WITHHASH', reason=ResponseError('unknown command "georadius_ro"'))
+FailedTest(name='georadius_ro with COUNT', reason=ResponseError('unknown command "georadius_ro"'))
+FailedTest(name='georadius_ro with ASC / DESC', reason=ResponseError('unknown command "georadius_ro"'))
+FailedTest(name='georadiusbymember with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Agrigento', ['13.5833314061164856', '37.31666804993816555']], ['Palermo', ['13.36138933897018433', '38.11555639549629859']]], result: [['Agrigento', ['13.583331406116486', '37.316668049938166']], ['Palermo', ['13.361389338970184', '38.115556395496299']]]")
+FailedTest(name='zadd with XX / NX / CH / INCR', reason=ResponseError('syntax error'))
+FailedTest(name='set with EX / PX', reason=ResponseError('Invalid argument: invalid expire time'))
+FailedTest(name='georadiusbymember_ro command', reason=ResponseError('unknown command "georadiusbymember_ro"'))
+FailedTest(name='georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH', reason=ResponseError('unknown command "georadiusbymember_ro"'))
+FailedTest(name='georadiusbymember_ro with COUNT', reason=ResponseError('unknown command "georadiusbymember_ro"'))
+FailedTest(name='georadiusbymember_ro with ASC / DESC', reason=ResponseError('unknown command "georadiusbymember_ro"'))
+</pre>
diff --git a/Pika-5.0.0.html b/Pika-5.0.0.html
new file mode 100644
index 0000000..75188fc
--- /dev/null
+++ b/Pika-5.0.0.html
@@ -0,0 +1,433 @@
+<pre>
+test: del command passed
+test: unlink command passed
+test: rename command failed
+test: rename command tags skipped
+test: renamenx command failed
+test: renamenx command tags skipped
+test: randomkey command failed
+test: exists command passed
+test: ttl command passed
+test: pttl command passed
+test: expire command passed
+test: expire with NX / XX version skipped
+test: expire with GT / LT version skipped
+test: expireat command passed
+test: expireat with NX / XX version skipped
+test: expireat with GT / LT version skipped
+test: pexpire command passed
+test: pexpire with NX / XX version skipped
+test: pexpire with GT / LT version skipped
+test: pexpireat command passed
+test: pexpireat with NX / XX version skipped
+test: pexpireat with GT / LT version skipped
+test: expiretime command version skipped
+test: pexpiretime command version skipped
+test: persist command passed
+test: dump command failed
+test: touch command failed
+test: restore command failed
+test: restore with REPLACE failed
+test: restore with ABSTTL failed
+test: restore with IDLETIME failed
+test: scan command passed
+test: scan with TYPE version skipped
+test: keys command passed
+test: move command failed
+test: copy command version skipped
+test: copy command tags skipped
+test: type command passed
+test: sort command failed
+test: sort_ro command skipped
+test: set command passed
+test: blmove command version skipped
+test: blmove command tags skipped
+test: blmpop command version skipped
+test: blmpop with COUNT version skipped
+test: blmpop with COUNT tags skipped
+test: blpop command passed
+test: blpop command tags skipped
+test: blpop with double timeout version skipped
+test: blpop with double timeout tags skipped
+test: brpop command passed
+test: brpop command tags skipped
+test: brpop with double timeout version skipped
+test: brpop with double timeout tags skipped
+test: brpoplpush command failed
+test: brpoplpush command tags skipped
+test: brpoplpush with double timeout version skipped
+test: brpoplpush with double timeout tags skipped
+test: lindex command passed
+test: linsert command run test error Connection closed by server.
+test: llen command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: lmove command version skipped
+test: lmove command tags skipped
+test: lmpop command version skipped
+test: lmpop with COUNT version skipped
+test: lmpop with COUNT tags skipped
+test: lpop command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: lpop with COUNT version skipped
+test: lpos command version skipped
+test: lpos with RANK version skipped
+test: lpos with COUNT version skipped
+test: lpos with MAXLEN version skipped
+test: lpos with RANK, COUNT and MAXLEN version skipped
+test: lpush command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: lpush with multiple element run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: lpushx command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: lpushx with multiple element run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: lrange command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: lrem command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: lset command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: ltrim command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: rpop command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: rpop with COUNT version skipped
+test: rpoplpush command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: rpoplpush command tags skipped
+test: rpush command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: rpush with multiple element run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: rpushx command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: rpushx command tags skipped
+test: rpushx with multiple element run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: rpushx with multiple element tags skipped
+test: sadd command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: sadd command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: scard command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: sdiff command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: sdiff command tags skipped
+test: sdiffstore command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: sdiffstore command tags skipped
+test: sinter command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: sinter command tags skipped
+test: sintercard command version skipped
+test: sintercard command tags skipped
+test: sintercard with LIMIT version skipped
+test: sintercard with LIMIT tags skipped
+test: sinterstore command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: sinterstore command tags skipped
+test: sismember command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: smembers command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: smismember command version skipped
+test: smove command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: smove command tags skipped
+test: spop command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: spop with COUNT run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: srandmember command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: srandmember with COUNT run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: srem command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: srem with multiple member run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: sscan command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: sscan with MATCH and COUNT run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: sunion command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: sunion command tags skipped
+test: sunionstore command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: sunionstore command tags skipped
+test: bzmpop command version skipped
+test: bzmpop command tags skipped
+test: bzmpop with COUNT version skipped
+test: bzmpop with COUNT version skipped
+test: bzpopmax command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: bzpopmax with double timeout version skipped
+test: bzpopmin command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: bzpopmin with double timeout version skipped
+test: zadd command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zadd with multiple elements run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zadd with XX / NX / CH / INCR run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zadd with GT / LT version skipped
+test: zcard command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zcount command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zdiff command version skipped
+test: zdiff command tags skipped
+test: zdiffstore command version skipped
+test: zdiffstore command tags skipped
+test: zincrby command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zinter command version skipped
+test: zinter command tags skipped
+test: zinter with WEIGHTS version skipped
+test: zinter with WEIGHTS tags skipped
+test: zinter with AGGREGATE version skipped
+test: zinter with AGGREGATE tags skipped
+test: zinter WITHSCORES version skipped
+test: zinter WITHSCORES tags skipped
+test: zintercard command version skipped
+test: zintercard command tags skipped
+test: zintercard with LIMIT version skipped
+test: zintercard with LIMIT tags skipped
+test: zinterstore command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zinterstore command tags skipped
+test: zinterstore with WEIGHTS run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zinterstore with WEIGHTS tags skipped
+test: zinterstore with AGGREGATE run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zinterstore with AGGREGATE tags skipped
+test: zlexcount command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zmpop command version skipped
+test: zmpop with COUNT version skipped
+test: zmscore command version skipped
+test: zpopmax command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zpopmax with COUNT run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zpopmin command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zpopmin command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zrandmember command version skipped
+test: zrandmember with COUNT version skipped
+test: zrandmember with WITHSCORES version skipped
+test: zrange command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zrange with WITHSCORES run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zrange with BYSCORE / BYLEX version skipped
+test: zrange with REV version skipped
+test: zrange with LIMIT version skipped
+test: zrangebylex command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zrangebylex with LIMIT run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zrangebyscore command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zrangebyscore with LIMIT run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zrangebyscore with WITHSCORES run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zrangestore command version skipped
+test: zrangestore command tags skipped
+test: zrangestore with BYSCORE / BYLEX version skipped
+test: zrangestore with BYSCORE / BYLEX tags skipped
+test: zrangestore with REV version skipped
+test: zrangestore with REV tags skipped
+test: zrangestore with LIMIT version skipped
+test: zrangestore with LIMIT tags skipped
+test: zrank command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zrank with WITHSCORE version skipped
+test: zrem command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zrem with multiple elements run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zremrangebylex command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zremrangebyrank command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zremrangebyscore command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zrevrange command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zrevrange with WITHSCORES run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zrevrangebylex command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zrevrangebylex with LIMIT run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zrevrangebyscore command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zrevrangebyscore with WITHSCORES run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zrevrangebyscore with LIMIT run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zrevrangebyscore command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zrevrank command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zrevrank with WITHSCORE version skipped
+test: zscan command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zscan with MATCH and COUNT run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zscore command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zunion command version skipped
+test: zunion command tags skipped
+test: zunion with WEIGHTS and AGGREGATE version skipped
+test: zunion with WEIGHTS and AGGREGATE tags skipped
+test: zunion with WITHSCORES version skipped
+test: zunion with WITHSCORES tags skipped
+test: zunionstore command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zunionstore command tags skipped
+test: zunionstore with WEIGHTS and AGGREGATE run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: zunionstore with WEIGHTS and AGGREGATE tags skipped
+test: append command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: decr command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: decrby command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: get command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: getdel command version skipped
+test: getex command version skipped
+test: getex with EX version skipped
+test: getex with PX version skipped
+test: getex with EXAT version skipped
+test: getex with PXAT version skipped
+test: getex with PERSIST version skipped
+test: getrange command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: getset command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: incr command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: incrby command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: incrbyfloat command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: lcs command version skipped
+test: lcs command tags skipped
+test: lcs with LEN version skipped
+test: lcs with LEN tags skipped
+test: lcs with IDX version skipped
+test: lcs with IDX tags skipped
+test: lcs with MINMATCHLEN version skipped
+test: lcs with MINMATCHLEN tags skipped
+test: lcs with WITHMATCHLEN version skipped
+test: lcs with WITHMATCHLEN tags skipped
+test: mget command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: mget command tags skipped
+test: mset command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: mset command tags skipped
+test: msetnx command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: msetnx command tags skipped
+test: psetex command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: set command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: set with EX / PX run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: set with NX / XX run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: set with KEEPTTL version skipped
+test: set with GET version skipped
+test: set with EXAT / PXAT version skipped
+test: set with NX and GET version skipped
+test: setex command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: setnx command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: setrange command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: strlen command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: substr command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: hdel command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: hdel with multiple field run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: hexists command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: hget command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: hgetall command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: hincrby command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: hincrbyfloat command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: hkeys command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: hlen command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: hmget command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: hmset command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: hrandfield command version skipped
+test: hrandfield with COUNT version skipped
+test: hrandfield with WITHVALUES version skipped
+test: hscan command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: hscan with MATCH and COUNT run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: hset command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: hset command with multiple field and value run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: hsetnx command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: hstrlen command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: hvals command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: bitcount command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: bitcount with BYTE / BIT version skipped
+test: bitfield command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: bitfield_ro command version skipped
+test: bitop command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: bitop command tags skipped
+test: bitpos command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: bitpos with BYTE / BIT version skipped
+test: getbit command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: setbit command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: pfadd command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: pfcount command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: pfmerge command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: pfmerge command tags skipped
+test: geoadd command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: geoadd with CH / NX / XX version skipped
+test: geodist command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: geodist with M / KM / FT / MI run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: geohash command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: geopos command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: georadius command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: georadius with WITHCOORD / WITHDIST / WITHHASH run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: georadius with COUNT run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: georadius with ASC / DESC run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: georadius with STORE / STOREDIST run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: georadius with STORE / STOREDIST tags skipped
+test: georadius with ANY option for COUNT version skipped
+test: georadius with support for uppercase unit names version skipped
+test: georadius_ro command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: georadius_ro with COUNT run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: georadius_ro with ASC / DESC run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: georadius_ro with ANY option for COUNT version skipped
+test: georadiusbymember command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: georadiusbymember with COUNT run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: georadiusbymember with ASC / DESC run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: georadiusbymember with STORE / STOREDIST run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: georadiusbymember with STORE / STOREDIST tags skipped
+test: georadiusbymember with ANY option for COUNT version skipped
+test: georadiusbymember with support for uppercase unit names version skipped
+test: georadiusbymember_ro command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: georadiusbymember_ro with COUNT run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: georadiusbymember_ro with ASC / DESC run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: georadiusbymember_ro with ANY option for COUNT version skipped
+test: geosearch command version skipped
+test: geosearch with ASC / DESC version skipped
+test: geosearch with COUNT version skipped
+test: geosearch with WITHCOORD / WITHDIST / WITHHASH version skipped
+test: geosearch with support for uppercase unit names version skipped
+test: geosearchstore command version skipped
+test: geosearchstore command tags skipped
+test: geosearchstore with ASC / DESC version skipped
+test: geosearchstore with ASC / DESC tags skipped
+test: geosearchstore with COUNT version skipped
+test: geosearchstore with COUNT tags skipped
+test: geosearchstore with STOREDIST version skipped
+test: geosearchstore with STOREDIST tags skipped
+test: geosearchstore with support for uppercase unit names version skipped
+test: geosearchstore with support for uppercase unit names tags skipped
+test: dbsize command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: flushall command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: flushall with async run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: flushall with sync version skipped
+test: flushdb command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: flushdb with async run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: flushdb with sync version skipped
+test: swapdb command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: discard command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: exec command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: multi command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: unwatch command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: watch command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: eval command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: eval_ro command version skipped
+test: evalsha command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: evalsha_ro command version skipped
+test: fcall command version skipped
+test: fcall_ro command version skipped
+test: function delete command version skipped
+test: function flush command version skipped
+test: function flush with SYNC version skipped
+test: function flush with ASYNC version skipped
+test: function list command version skipped
+test: function load command version skipped
+test: function restore command version skipped
+test: function stats command version skipped
+test: script exists command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: script flush command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: script flush with SYNC version skipped
+test: script flush with ASYNC version skipped
+test: script load command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: xack command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: xadd command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: xadd with NOMKSTREAM/MINID/LIMIT version skipped
+test: xadd with EXPLICIT ID version skipped
+test: xclaim command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: xdel command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: xgroup create command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: xgroup create with MKSTREAM run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: xgroup create with ENTRIESREAD version skipped
+test: xgroup createconsumer command version skipped
+test: xgroup delconsumer command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: xgroup destroy command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: xgroup setid command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: xgroup setid with ENTRIESREAD version skipped
+test: xlen command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: xpending command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: xrange command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: xread command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: xreadgroup command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: xrevrange command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: xrevrange command with EXCLUSIVE RANGES version skipped
+test: xtrim command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: xtrim command with MINID/LIMIT version skipped
+test: psubscribe command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: psubscribe with RESET version skipped
+test: publish command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: pubsub channels command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: pubsub numpat command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: pubsub numsub command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: pubsub shardchannels command version skipped
+test: pubsub shardnumsub command version skipped
+test: punsubscribe command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: spublish command version skipped
+test: ssubscribe command version skipped
+test: subscribe command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+test: subscribe with RESET version skipped
+test: sunsubscribe command version skipped
+test: unsubscribe command run test error Error 111 connecting to 172.17.0.6:9221. Connection refused.
+-------- The result of tests --------
+Summary: version: 5.0.0, total tests: 29, passed: 17, rate: 58.62%
+This is failed tests for 5.0.0:
+FailedTest(name='rename command', reason=ResponseError('unknown command "rename"'))
+FailedTest(name='renamenx command', reason=ResponseError('unknown command "renamenx"'))
+FailedTest(name='randomkey command', reason=ResponseError('unknown command "randomkey"'))
+FailedTest(name='move command', reason=ResponseError('unknown command "move"'))
+FailedTest(name='sort command', reason=ResponseError('unknown command "sort"'))
+FailedTest(name='dump command', reason=ResponseError('unknown command "dump"'))
+FailedTest(name='restore command', reason=ResponseError('unknown command "restore"'))
+FailedTest(name='brpoplpush command', reason=ResponseError('unknown command "brpoplpush"'))
+FailedTest(name='touch command', reason=ResponseError('unknown command "touch"'))
+FailedTest(name='restore with REPLACE', reason=ResponseError('unknown command "restore"'))
+FailedTest(name='restore with ABSTTL', reason=ResponseError('unknown command "restore"'))
+FailedTest(name='restore with IDLETIME', reason=ResponseError('unknown command "restore"'))
+</pre>
diff --git a/RedisCluster-4.0.0.html b/RedisCluster-4.0.0.html
index 728cf6a..a81a5d9 100644
--- a/RedisCluster-4.0.0.html
+++ b/RedisCluster-4.0.0.html
@@ -303,9 +303,9 @@
 test: geodist command passed
 test: geodist with M / KM / FT / MI passed
 test: geohash command passed
-test: geopos command passed
+test: geopos command failed
 test: georadius command passed
-test: georadius with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius with WITHCOORD / WITHDIST / WITHHASH failed
 test: georadius with COUNT passed
 test: georadius with ASC / DESC passed
 test: georadius with STORE / STOREDIST failed
@@ -313,12 +313,12 @@
 test: georadius with ANY option for COUNT version skipped
 test: georadius with support for uppercase unit names version skipped
 test: georadius_ro command passed
-test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH failed
 test: georadius_ro with COUNT passed
 test: georadius_ro with ASC / DESC passed
 test: georadius_ro with ANY option for COUNT version skipped
 test: georadiusbymember command passed
-test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH failed
 test: georadiusbymember with COUNT passed
 test: georadiusbymember with ASC / DESC passed
 test: georadiusbymember with STORE / STOREDIST failed
@@ -326,7 +326,7 @@
 test: georadiusbymember with ANY option for COUNT version skipped
 test: georadiusbymember with support for uppercase unit names version skipped
 test: georadiusbymember_ro command passed
-test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH failed
 test: georadiusbymember_ro with COUNT passed
 test: georadiusbymember_ro with ASC / DESC passed
 test: georadiusbymember_ro with ANY option for COUNT version skipped
@@ -358,7 +358,7 @@
 test: multi command failed
 test: unwatch command failed
 test: watch command failed
-test: eval command failed
+test: eval command passed
 test: eval_ro command version skipped
 test: evalsha command failed
 test: evalsha_ro command version skipped
@@ -416,51 +416,55 @@
 test: sunsubscribe command version skipped
 test: unsubscribe command run test error Can't execute 'flushall': only (P|S)SUBSCRIBE / (P|S)UNSUBSCRIBE / PING / QUIT / RESET are allowed in this context
 -------- The result of tests --------
-Summary: version: 4.0.0, total tests: 189, passed: 144, rate: 76.19%
+Summary: version: 4.0.0, total tests: 189, passed: 140, rate: 74.07%
 This is failed tests for 4.0.0:
-FailedTest(name='rename command', reason=RedisClusterException('rename - all keys must map to the same key slot',))
-FailedTest(name='renamenx command', reason=RedisClusterException('renamenx - all keys must map to the same key slot',))
+FailedTest(name='rename command', reason=RedisClusterException('rename - all keys must map to the same key slot'))
+FailedTest(name='renamenx command', reason=RedisClusterException('renamenx - all keys must map to the same key slot'))
 FailedTest(name='randomkey command', reason='expected: k, result: None')
-FailedTest(name='keys command', reason=RedisClusterException('mset - all keys must map to the same key slot',))
-FailedTest(name='move command', reason=ResponseError('MOVE is not allowed in cluster mode',))
-FailedTest(name='sdiff command', reason=RedisClusterException('sdiff - all keys must map to the same key slot',))
-FailedTest(name='sdiffstore command', reason=RedisClusterException('sdiffstore - all keys must map to the same key slot',))
-FailedTest(name='sinter command', reason=RedisClusterException('sinter - all keys must map to the same key slot',))
-FailedTest(name='sinterstore command', reason=RedisClusterException('sinterstore - all keys must map to the same key slot',))
-FailedTest(name='smove command', reason=RedisClusterException('smove - all keys must map to the same key slot',))
-FailedTest(name='sunion command', reason=RedisClusterException('sunion - all keys must map to the same key slot',))
-FailedTest(name='sunionstore command', reason=RedisClusterException('sunionstore - all keys must map to the same key slot',))
-FailedTest(name='mget command', reason=RedisClusterException('mget - all keys must map to the same key slot',))
+FailedTest(name='keys command', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='move command', reason=ResponseError('MOVE is not allowed in cluster mode'))
+FailedTest(name='sdiff command', reason=RedisClusterException('sdiff - all keys must map to the same key slot'))
+FailedTest(name='sdiffstore command', reason=RedisClusterException('sdiffstore - all keys must map to the same key slot'))
+FailedTest(name='sinter command', reason=RedisClusterException('sinter - all keys must map to the same key slot'))
+FailedTest(name='sinterstore command', reason=RedisClusterException('sinterstore - all keys must map to the same key slot'))
+FailedTest(name='smove command', reason=RedisClusterException('smove - all keys must map to the same key slot'))
+FailedTest(name='sunion command', reason=RedisClusterException('sunion - all keys must map to the same key slot'))
+FailedTest(name='sunionstore command', reason=RedisClusterException('sunionstore - all keys must map to the same key slot'))
+FailedTest(name='mget command', reason=RedisClusterException('mget - all keys must map to the same key slot'))
 FailedTest(name='flushall command', reason="expected: OK, result: {'127.0.0.1:30001': 'OK', '127.0.0.1:30002': 'OK', '127.0.0.1:30003': 'OK'}")
 FailedTest(name='flushdb command', reason="expected: OK, result: {'127.0.0.1:30001': 'OK', '127.0.0.1:30002': 'OK', '127.0.0.1:30003': 'OK'}")
 FailedTest(name='flushall with async', reason="expected: OK, result: {'127.0.0.1:30001': 'OK', '127.0.0.1:30002': 'OK', '127.0.0.1:30003': 'OK'}")
 FailedTest(name='flushdb with async', reason="expected: OK, result: {'127.0.0.1:30001': 'OK', '127.0.0.1:30002': 'OK', '127.0.0.1:30003': 'OK'}")
-FailedTest(name='swapdb command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('swapdb', '0', '1')",))
-FailedTest(name='rpoplpush command', reason=RedisClusterException('rpoplpush - all keys must map to the same key slot',))
-FailedTest(name='exec command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)",))
-FailedTest(name='multi command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)",))
-FailedTest(name='bitop command', reason=RedisClusterException('bitop - all keys must map to the same key slot',))
-FailedTest(name='eval command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('eval', 'return', '0', 'hello')",))
+FailedTest(name='swapdb command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('swapdb', '0', '1')"))
+FailedTest(name='rpoplpush command', reason=RedisClusterException('rpoplpush - all keys must map to the same key slot'))
+FailedTest(name='exec command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='multi command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='bitop command', reason=RedisClusterException('bitop - all keys must map to the same key slot'))
 FailedTest(name='evalsha command', reason="expected: 63143b6f8007b98c53ca2149822777b3566f9241, result: {'127.0.0.1:30001': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30002': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30003': '63143b6f8007b98c53ca2149822777b3566f9241'}")
 FailedTest(name='script exists command', reason="expected: 63143b6f8007b98c53ca2149822777b3566f9241, result: {'127.0.0.1:30001': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30002': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30003': '63143b6f8007b98c53ca2149822777b3566f9241'}")
 FailedTest(name='script flush command', reason="expected: 63143b6f8007b98c53ca2149822777b3566f9241, result: {'127.0.0.1:30001': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30002': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30003': '63143b6f8007b98c53ca2149822777b3566f9241'}")
 FailedTest(name='script load command', reason="expected: 63143b6f8007b98c53ca2149822777b3566f9241, result: {'127.0.0.1:30001': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30002': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30003': '63143b6f8007b98c53ca2149822777b3566f9241'}")
-FailedTest(name='brpoplpush command', reason=RedisClusterException('brpoplpush - all keys must map to the same key slot',))
-FailedTest(name='unwatch command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('unwatch',)",))
-FailedTest(name='watch command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('unwatch',)",))
+FailedTest(name='brpoplpush command', reason=RedisClusterException('brpoplpush - all keys must map to the same key slot'))
+FailedTest(name='unwatch command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('unwatch',)"))
+FailedTest(name='watch command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('unwatch',)"))
 FailedTest(name='scan command', reason="expected: ['0', ['k']], result: ({'127.0.0.1:30001': 0, '127.0.0.1:30002': 0, '127.0.0.1:30003': 0}, ['k'])")
-FailedTest(name='blpop command', reason=RedisClusterException('blpop - all keys must map to the same key slot',))
-FailedTest(name='brpop command', reason=RedisClusterException('brpop - all keys must map to the same key slot',))
-FailedTest(name='zinterstore command', reason=RedisClusterException('zinterstore - all keys must map to the same key slot',))
-FailedTest(name='zinterstore with WEIGHTS', reason=RedisClusterException('zinterstore - all keys must map to the same key slot',))
-FailedTest(name='zinterstore with AGGREGATE', reason=RedisClusterException('zinterstore - all keys must map to the same key slot',))
-FailedTest(name='zunionstore command', reason=RedisClusterException('zunionstore - all keys must map to the same key slot',))
-FailedTest(name='zunionstore with WEIGHTS and AGGREGATE', reason=RedisClusterException('zunionstore - all keys must map to the same key slot',))
-FailedTest(name='discard command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)",))
-FailedTest(name='psubscribe command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('quit',)",))
-FailedTest(name='georadius with STORE / STOREDIST', reason=RedisClusterException('georadius - all keys must map to the same key slot',))
-FailedTest(name='georadiusbymember with STORE / STOREDIST', reason=RedisClusterException('georadiusbymember - all keys must map to the same key slot',))
-FailedTest(name='pfmerge command', reason=RedisClusterException('pfmerge - all keys must map to the same key slot',))
-FailedTest(name='mset command', reason=RedisClusterException('mset - all keys must map to the same key slot',))
-FailedTest(name='msetnx command', reason=RedisClusterException('msetnx - all keys must map to the same key slot',))
+FailedTest(name='blpop command', reason=RedisClusterException('blpop - all keys must map to the same key slot'))
+FailedTest(name='brpop command', reason=RedisClusterException('brpop - all keys must map to the same key slot'))
+FailedTest(name='zinterstore command', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zinterstore with WEIGHTS', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zinterstore with AGGREGATE', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zunionstore command', reason=RedisClusterException('zunionstore - all keys must map to the same key slot'))
+FailedTest(name='zunionstore with WEIGHTS and AGGREGATE', reason=RedisClusterException('zunionstore - all keys must map to the same key slot'))
+FailedTest(name='discard command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='psubscribe command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('quit',)"))
+FailedTest(name='geopos command', reason="expected: [['13.36138933897018433', '38.11555639549629859'], ['15.08726745843887329', '37.50266842333162032'], None], result: [['13.361389338970184', '38.1155563954963'], ['15.087267458438873', '37.50266842333162'], None]")
+FailedTest(name='georadius with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Palermo', ['13.36138933897018433', '38.11555639549629859']], ['Catania', ['15.08726745843887329', '37.50266842333162032']]], result: [['Palermo', ['13.361389338970184', '38.1155563954963']], ['Catania', ['15.087267458438873', '37.50266842333162']]]")
+FailedTest(name='georadius with STORE / STOREDIST', reason=RedisClusterException('georadius - all keys must map to the same key slot'))
+FailedTest(name='georadius_ro with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Palermo', ['13.36138933897018433', '38.11555639549629859']], ['Catania', ['15.08726745843887329', '37.50266842333162032']]], result: [['Palermo', ['13.361389338970184', '38.1155563954963']], ['Catania', ['15.087267458438873', '37.50266842333162']]]")
+FailedTest(name='georadiusbymember with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Agrigento', ['13.5833314061164856', '37.31666804993816555']], ['Palermo', ['13.36138933897018433', '38.11555639549629859']]], result: [['Agrigento', ['13.583331406116486', '37.316668049938166']], ['Palermo', ['13.361389338970184', '38.1155563954963']]]")
+FailedTest(name='georadiusbymember with STORE / STOREDIST', reason=RedisClusterException('georadiusbymember - all keys must map to the same key slot'))
+FailedTest(name='pfmerge command', reason=RedisClusterException('pfmerge - all keys must map to the same key slot'))
+FailedTest(name='mset command', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='msetnx command', reason=RedisClusterException('msetnx - all keys must map to the same key slot'))
+FailedTest(name='georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Agrigento', ['13.5833314061164856', '37.31666804993816555']], ['Palermo', ['13.36138933897018433', '38.11555639549629859']]], result: [['Agrigento', ['13.583331406116486', '37.316668049938166']], ['Palermo', ['13.361389338970184', '38.1155563954963']]]")
 </pre>
diff --git a/RedisCluster-5.0.0.html b/RedisCluster-5.0.0.html
index 809aa3e..27be8fd 100644
--- a/RedisCluster-5.0.0.html
+++ b/RedisCluster-5.0.0.html
@@ -303,9 +303,9 @@
 test: geodist command passed
 test: geodist with M / KM / FT / MI passed
 test: geohash command passed
-test: geopos command passed
+test: geopos command failed
 test: georadius command passed
-test: georadius with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius with WITHCOORD / WITHDIST / WITHHASH failed
 test: georadius with COUNT passed
 test: georadius with ASC / DESC passed
 test: georadius with STORE / STOREDIST failed
@@ -313,12 +313,12 @@
 test: georadius with ANY option for COUNT version skipped
 test: georadius with support for uppercase unit names version skipped
 test: georadius_ro command passed
-test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH failed
 test: georadius_ro with COUNT passed
 test: georadius_ro with ASC / DESC passed
 test: georadius_ro with ANY option for COUNT version skipped
 test: georadiusbymember command passed
-test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH failed
 test: georadiusbymember with COUNT passed
 test: georadiusbymember with ASC / DESC passed
 test: georadiusbymember with STORE / STOREDIST failed
@@ -326,7 +326,7 @@
 test: georadiusbymember with ANY option for COUNT version skipped
 test: georadiusbymember with support for uppercase unit names version skipped
 test: georadiusbymember_ro command passed
-test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH failed
 test: georadiusbymember_ro with COUNT passed
 test: georadiusbymember_ro with ASC / DESC passed
 test: georadiusbymember_ro with ANY option for COUNT version skipped
@@ -358,7 +358,7 @@
 test: multi command failed
 test: unwatch command failed
 test: watch command failed
-test: eval command failed
+test: eval command passed
 test: eval_ro command version skipped
 test: evalsha command failed
 test: evalsha_ro command version skipped
@@ -416,51 +416,55 @@
 test: sunsubscribe command version skipped
 test: unsubscribe command run test error Can't execute 'flushall': only (P|S)SUBSCRIBE / (P|S)UNSUBSCRIBE / PING / QUIT / RESET are allowed in this context
 -------- The result of tests --------
-Summary: version: 5.0.0, total tests: 213, passed: 168, rate: 78.87%
+Summary: version: 5.0.0, total tests: 213, passed: 164, rate: 77.00%
 This is failed tests for 5.0.0:
-FailedTest(name='rename command', reason=RedisClusterException('rename - all keys must map to the same key slot',))
-FailedTest(name='renamenx command', reason=RedisClusterException('renamenx - all keys must map to the same key slot',))
+FailedTest(name='rename command', reason=RedisClusterException('rename - all keys must map to the same key slot'))
+FailedTest(name='renamenx command', reason=RedisClusterException('renamenx - all keys must map to the same key slot'))
 FailedTest(name='randomkey command', reason='expected: k, result: None')
-FailedTest(name='keys command', reason=RedisClusterException('mset - all keys must map to the same key slot',))
-FailedTest(name='move command', reason=ResponseError('MOVE is not allowed in cluster mode',))
-FailedTest(name='sdiff command', reason=RedisClusterException('sdiff - all keys must map to the same key slot',))
-FailedTest(name='sdiffstore command', reason=RedisClusterException('sdiffstore - all keys must map to the same key slot',))
-FailedTest(name='sinter command', reason=RedisClusterException('sinter - all keys must map to the same key slot',))
-FailedTest(name='sinterstore command', reason=RedisClusterException('sinterstore - all keys must map to the same key slot',))
-FailedTest(name='smove command', reason=RedisClusterException('smove - all keys must map to the same key slot',))
-FailedTest(name='sunion command', reason=RedisClusterException('sunion - all keys must map to the same key slot',))
-FailedTest(name='sunionstore command', reason=RedisClusterException('sunionstore - all keys must map to the same key slot',))
-FailedTest(name='mget command', reason=RedisClusterException('mget - all keys must map to the same key slot',))
+FailedTest(name='keys command', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='move command', reason=ResponseError('MOVE is not allowed in cluster mode'))
+FailedTest(name='sdiff command', reason=RedisClusterException('sdiff - all keys must map to the same key slot'))
+FailedTest(name='sdiffstore command', reason=RedisClusterException('sdiffstore - all keys must map to the same key slot'))
+FailedTest(name='sinter command', reason=RedisClusterException('sinter - all keys must map to the same key slot'))
+FailedTest(name='sinterstore command', reason=RedisClusterException('sinterstore - all keys must map to the same key slot'))
+FailedTest(name='smove command', reason=RedisClusterException('smove - all keys must map to the same key slot'))
+FailedTest(name='sunion command', reason=RedisClusterException('sunion - all keys must map to the same key slot'))
+FailedTest(name='sunionstore command', reason=RedisClusterException('sunionstore - all keys must map to the same key slot'))
+FailedTest(name='mget command', reason=RedisClusterException('mget - all keys must map to the same key slot'))
 FailedTest(name='flushall command', reason="expected: OK, result: {'127.0.0.1:30001': 'OK', '127.0.0.1:30002': 'OK', '127.0.0.1:30003': 'OK'}")
 FailedTest(name='flushdb command', reason="expected: OK, result: {'127.0.0.1:30001': 'OK', '127.0.0.1:30002': 'OK', '127.0.0.1:30003': 'OK'}")
 FailedTest(name='flushall with async', reason="expected: OK, result: {'127.0.0.1:30001': 'OK', '127.0.0.1:30002': 'OK', '127.0.0.1:30003': 'OK'}")
 FailedTest(name='flushdb with async', reason="expected: OK, result: {'127.0.0.1:30001': 'OK', '127.0.0.1:30002': 'OK', '127.0.0.1:30003': 'OK'}")
-FailedTest(name='swapdb command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('swapdb', '0', '1')",))
-FailedTest(name='rpoplpush command', reason=RedisClusterException('rpoplpush - all keys must map to the same key slot',))
-FailedTest(name='exec command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)",))
-FailedTest(name='multi command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)",))
-FailedTest(name='bitop command', reason=RedisClusterException('bitop - all keys must map to the same key slot',))
-FailedTest(name='eval command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('eval', 'return', '0', 'hello')",))
+FailedTest(name='swapdb command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('swapdb', '0', '1')"))
+FailedTest(name='rpoplpush command', reason=RedisClusterException('rpoplpush - all keys must map to the same key slot'))
+FailedTest(name='exec command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='multi command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='bitop command', reason=RedisClusterException('bitop - all keys must map to the same key slot'))
 FailedTest(name='evalsha command', reason="expected: 63143b6f8007b98c53ca2149822777b3566f9241, result: {'127.0.0.1:30001': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30002': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30003': '63143b6f8007b98c53ca2149822777b3566f9241'}")
 FailedTest(name='script exists command', reason="expected: 63143b6f8007b98c53ca2149822777b3566f9241, result: {'127.0.0.1:30001': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30002': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30003': '63143b6f8007b98c53ca2149822777b3566f9241'}")
 FailedTest(name='script flush command', reason="expected: 63143b6f8007b98c53ca2149822777b3566f9241, result: {'127.0.0.1:30001': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30002': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30003': '63143b6f8007b98c53ca2149822777b3566f9241'}")
 FailedTest(name='script load command', reason="expected: 63143b6f8007b98c53ca2149822777b3566f9241, result: {'127.0.0.1:30001': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30002': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30003': '63143b6f8007b98c53ca2149822777b3566f9241'}")
-FailedTest(name='brpoplpush command', reason=RedisClusterException('brpoplpush - all keys must map to the same key slot',))
-FailedTest(name='unwatch command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('unwatch',)",))
-FailedTest(name='watch command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('unwatch',)",))
+FailedTest(name='brpoplpush command', reason=RedisClusterException('brpoplpush - all keys must map to the same key slot'))
+FailedTest(name='unwatch command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('unwatch',)"))
+FailedTest(name='watch command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('unwatch',)"))
 FailedTest(name='scan command', reason="expected: ['0', ['k']], result: ({'127.0.0.1:30001': 0, '127.0.0.1:30002': 0, '127.0.0.1:30003': 0}, ['k'])")
-FailedTest(name='blpop command', reason=RedisClusterException('blpop - all keys must map to the same key slot',))
-FailedTest(name='brpop command', reason=RedisClusterException('brpop - all keys must map to the same key slot',))
-FailedTest(name='zinterstore command', reason=RedisClusterException('zinterstore - all keys must map to the same key slot',))
-FailedTest(name='zinterstore with WEIGHTS', reason=RedisClusterException('zinterstore - all keys must map to the same key slot',))
-FailedTest(name='zinterstore with AGGREGATE', reason=RedisClusterException('zinterstore - all keys must map to the same key slot',))
-FailedTest(name='zunionstore command', reason=RedisClusterException('zunionstore - all keys must map to the same key slot',))
-FailedTest(name='zunionstore with WEIGHTS and AGGREGATE', reason=RedisClusterException('zunionstore - all keys must map to the same key slot',))
-FailedTest(name='discard command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)",))
-FailedTest(name='psubscribe command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('quit',)",))
-FailedTest(name='georadius with STORE / STOREDIST', reason=RedisClusterException('georadius - all keys must map to the same key slot',))
-FailedTest(name='georadiusbymember with STORE / STOREDIST', reason=RedisClusterException('georadiusbymember - all keys must map to the same key slot',))
-FailedTest(name='pfmerge command', reason=RedisClusterException('pfmerge - all keys must map to the same key slot',))
-FailedTest(name='mset command', reason=RedisClusterException('mset - all keys must map to the same key slot',))
-FailedTest(name='msetnx command', reason=RedisClusterException('msetnx - all keys must map to the same key slot',))
+FailedTest(name='blpop command', reason=RedisClusterException('blpop - all keys must map to the same key slot'))
+FailedTest(name='brpop command', reason=RedisClusterException('brpop - all keys must map to the same key slot'))
+FailedTest(name='zinterstore command', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zinterstore with WEIGHTS', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zinterstore with AGGREGATE', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zunionstore command', reason=RedisClusterException('zunionstore - all keys must map to the same key slot'))
+FailedTest(name='zunionstore with WEIGHTS and AGGREGATE', reason=RedisClusterException('zunionstore - all keys must map to the same key slot'))
+FailedTest(name='discard command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='psubscribe command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('quit',)"))
+FailedTest(name='geopos command', reason="expected: [['13.36138933897018433', '38.11555639549629859'], ['15.08726745843887329', '37.50266842333162032'], None], result: [['13.361389338970184', '38.1155563954963'], ['15.087267458438873', '37.50266842333162'], None]")
+FailedTest(name='georadius with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Palermo', ['13.36138933897018433', '38.11555639549629859']], ['Catania', ['15.08726745843887329', '37.50266842333162032']]], result: [['Palermo', ['13.361389338970184', '38.1155563954963']], ['Catania', ['15.087267458438873', '37.50266842333162']]]")
+FailedTest(name='georadius with STORE / STOREDIST', reason=RedisClusterException('georadius - all keys must map to the same key slot'))
+FailedTest(name='georadius_ro with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Palermo', ['13.36138933897018433', '38.11555639549629859']], ['Catania', ['15.08726745843887329', '37.50266842333162032']]], result: [['Palermo', ['13.361389338970184', '38.1155563954963']], ['Catania', ['15.087267458438873', '37.50266842333162']]]")
+FailedTest(name='georadiusbymember with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Agrigento', ['13.5833314061164856', '37.31666804993816555']], ['Palermo', ['13.36138933897018433', '38.11555639549629859']]], result: [['Agrigento', ['13.583331406116486', '37.316668049938166']], ['Palermo', ['13.361389338970184', '38.1155563954963']]]")
+FailedTest(name='georadiusbymember with STORE / STOREDIST', reason=RedisClusterException('georadiusbymember - all keys must map to the same key slot'))
+FailedTest(name='pfmerge command', reason=RedisClusterException('pfmerge - all keys must map to the same key slot'))
+FailedTest(name='mset command', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='msetnx command', reason=RedisClusterException('msetnx - all keys must map to the same key slot'))
+FailedTest(name='georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Agrigento', ['13.5833314061164856', '37.31666804993816555']], ['Palermo', ['13.36138933897018433', '38.11555639549629859']]], result: [['Agrigento', ['13.583331406116486', '37.316668049938166']], ['Palermo', ['13.361389338970184', '38.1155563954963']]]")
 </pre>
diff --git a/RedisCluster-6.0.0.html b/RedisCluster-6.0.0.html
index abc4ab4..8760677 100644
--- a/RedisCluster-6.0.0.html
+++ b/RedisCluster-6.0.0.html
@@ -303,9 +303,9 @@
 test: geodist command passed
 test: geodist with M / KM / FT / MI passed
 test: geohash command passed
-test: geopos command passed
+test: geopos command failed
 test: georadius command passed
-test: georadius with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius with WITHCOORD / WITHDIST / WITHHASH failed
 test: georadius with COUNT passed
 test: georadius with ASC / DESC passed
 test: georadius with STORE / STOREDIST failed
@@ -313,12 +313,12 @@
 test: georadius with ANY option for COUNT version skipped
 test: georadius with support for uppercase unit names version skipped
 test: georadius_ro command passed
-test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH failed
 test: georadius_ro with COUNT passed
 test: georadius_ro with ASC / DESC passed
 test: georadius_ro with ANY option for COUNT version skipped
 test: georadiusbymember command passed
-test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH failed
 test: georadiusbymember with COUNT passed
 test: georadiusbymember with ASC / DESC passed
 test: georadiusbymember with STORE / STOREDIST failed
@@ -326,7 +326,7 @@
 test: georadiusbymember with ANY option for COUNT version skipped
 test: georadiusbymember with support for uppercase unit names version skipped
 test: georadiusbymember_ro command passed
-test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH failed
 test: georadiusbymember_ro with COUNT passed
 test: georadiusbymember_ro with ASC / DESC passed
 test: georadiusbymember_ro with ANY option for COUNT version skipped
@@ -358,7 +358,7 @@
 test: multi command failed
 test: unwatch command failed
 test: watch command failed
-test: eval command failed
+test: eval command passed
 test: eval_ro command version skipped
 test: evalsha command failed
 test: evalsha_ro command version skipped
@@ -416,54 +416,58 @@
 test: sunsubscribe command version skipped
 test: unsubscribe command run test error Can't execute 'flushall': only (P|S)SUBSCRIBE / (P|S)UNSUBSCRIBE / PING / QUIT / RESET are allowed in this context
 -------- The result of tests --------
-Summary: version: 6.0.0, total tests: 221, passed: 173, rate: 78.28%
+Summary: version: 6.0.0, total tests: 221, passed: 169, rate: 76.47%
 This is failed tests for 6.0.0:
-FailedTest(name='rename command', reason=RedisClusterException('rename - all keys must map to the same key slot',))
-FailedTest(name='renamenx command', reason=RedisClusterException('renamenx - all keys must map to the same key slot',))
+FailedTest(name='rename command', reason=RedisClusterException('rename - all keys must map to the same key slot'))
+FailedTest(name='renamenx command', reason=RedisClusterException('renamenx - all keys must map to the same key slot'))
 FailedTest(name='randomkey command', reason='expected: k, result: None')
-FailedTest(name='keys command', reason=RedisClusterException('mset - all keys must map to the same key slot',))
-FailedTest(name='move command', reason=ResponseError('MOVE is not allowed in cluster mode',))
-FailedTest(name='sdiff command', reason=RedisClusterException('sdiff - all keys must map to the same key slot',))
-FailedTest(name='sdiffstore command', reason=RedisClusterException('sdiffstore - all keys must map to the same key slot',))
-FailedTest(name='sinter command', reason=RedisClusterException('sinter - all keys must map to the same key slot',))
-FailedTest(name='sinterstore command', reason=RedisClusterException('sinterstore - all keys must map to the same key slot',))
-FailedTest(name='smove command', reason=RedisClusterException('smove - all keys must map to the same key slot',))
-FailedTest(name='sunion command', reason=RedisClusterException('sunion - all keys must map to the same key slot',))
-FailedTest(name='sunionstore command', reason=RedisClusterException('sunionstore - all keys must map to the same key slot',))
-FailedTest(name='mget command', reason=RedisClusterException('mget - all keys must map to the same key slot',))
+FailedTest(name='keys command', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='move command', reason=ResponseError('MOVE is not allowed in cluster mode'))
+FailedTest(name='sdiff command', reason=RedisClusterException('sdiff - all keys must map to the same key slot'))
+FailedTest(name='sdiffstore command', reason=RedisClusterException('sdiffstore - all keys must map to the same key slot'))
+FailedTest(name='sinter command', reason=RedisClusterException('sinter - all keys must map to the same key slot'))
+FailedTest(name='sinterstore command', reason=RedisClusterException('sinterstore - all keys must map to the same key slot'))
+FailedTest(name='smove command', reason=RedisClusterException('smove - all keys must map to the same key slot'))
+FailedTest(name='sunion command', reason=RedisClusterException('sunion - all keys must map to the same key slot'))
+FailedTest(name='sunionstore command', reason=RedisClusterException('sunionstore - all keys must map to the same key slot'))
+FailedTest(name='mget command', reason=RedisClusterException('mget - all keys must map to the same key slot'))
 FailedTest(name='flushall command', reason="expected: OK, result: {'127.0.0.1:30001': 'OK', '127.0.0.1:30002': 'OK', '127.0.0.1:30003': 'OK'}")
 FailedTest(name='flushdb command', reason="expected: OK, result: {'127.0.0.1:30001': 'OK', '127.0.0.1:30002': 'OK', '127.0.0.1:30003': 'OK'}")
 FailedTest(name='flushall with async', reason="expected: OK, result: {'127.0.0.1:30001': 'OK', '127.0.0.1:30002': 'OK', '127.0.0.1:30003': 'OK'}")
 FailedTest(name='flushdb with async', reason="expected: OK, result: {'127.0.0.1:30001': 'OK', '127.0.0.1:30002': 'OK', '127.0.0.1:30003': 'OK'}")
-FailedTest(name='swapdb command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('swapdb', '0', '1')",))
-FailedTest(name='rpoplpush command', reason=RedisClusterException('rpoplpush - all keys must map to the same key slot',))
-FailedTest(name='exec command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)",))
-FailedTest(name='multi command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)",))
-FailedTest(name='bitop command', reason=RedisClusterException('bitop - all keys must map to the same key slot',))
-FailedTest(name='eval command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('eval', 'return', '0', 'hello')",))
+FailedTest(name='swapdb command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('swapdb', '0', '1')"))
+FailedTest(name='rpoplpush command', reason=RedisClusterException('rpoplpush - all keys must map to the same key slot'))
+FailedTest(name='exec command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='multi command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='bitop command', reason=RedisClusterException('bitop - all keys must map to the same key slot'))
 FailedTest(name='evalsha command', reason="expected: 63143b6f8007b98c53ca2149822777b3566f9241, result: {'127.0.0.1:30001': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30002': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30003': '63143b6f8007b98c53ca2149822777b3566f9241'}")
 FailedTest(name='script exists command', reason="expected: 63143b6f8007b98c53ca2149822777b3566f9241, result: {'127.0.0.1:30001': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30002': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30003': '63143b6f8007b98c53ca2149822777b3566f9241'}")
 FailedTest(name='script flush command', reason="expected: 63143b6f8007b98c53ca2149822777b3566f9241, result: {'127.0.0.1:30001': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30002': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30003': '63143b6f8007b98c53ca2149822777b3566f9241'}")
 FailedTest(name='script load command', reason="expected: 63143b6f8007b98c53ca2149822777b3566f9241, result: {'127.0.0.1:30001': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30002': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30003': '63143b6f8007b98c53ca2149822777b3566f9241'}")
-FailedTest(name='brpoplpush command', reason=RedisClusterException('brpoplpush - all keys must map to the same key slot',))
-FailedTest(name='unwatch command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('unwatch',)",))
-FailedTest(name='watch command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('unwatch',)",))
+FailedTest(name='brpoplpush command', reason=RedisClusterException('brpoplpush - all keys must map to the same key slot'))
+FailedTest(name='unwatch command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('unwatch',)"))
+FailedTest(name='watch command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('unwatch',)"))
 FailedTest(name='scan command', reason="expected: ['0', ['k']], result: ({'127.0.0.1:30001': 0, '127.0.0.1:30002': 0, '127.0.0.1:30003': 0}, ['k'])")
 FailedTest(name='scan with TYPE', reason="expected: ['0', ['geokey']], result: ({'127.0.0.1:30001': 0, '127.0.0.1:30002': 0, '127.0.0.1:30003': 0}, ['geokey'])")
-FailedTest(name='brpop with double timeout', reason=RedisClusterException('brpop - all keys must map to the same key slot',))
-FailedTest(name='brpoplpush with double timeout', reason=RedisClusterException('brpoplpush - all keys must map to the same key slot',))
-FailedTest(name='blpop command', reason=RedisClusterException('blpop - all keys must map to the same key slot',))
-FailedTest(name='brpop command', reason=RedisClusterException('brpop - all keys must map to the same key slot',))
-FailedTest(name='zinterstore command', reason=RedisClusterException('zinterstore - all keys must map to the same key slot',))
-FailedTest(name='zinterstore with WEIGHTS', reason=RedisClusterException('zinterstore - all keys must map to the same key slot',))
-FailedTest(name='zinterstore with AGGREGATE', reason=RedisClusterException('zinterstore - all keys must map to the same key slot',))
-FailedTest(name='zunionstore command', reason=RedisClusterException('zunionstore - all keys must map to the same key slot',))
-FailedTest(name='zunionstore with WEIGHTS and AGGREGATE', reason=RedisClusterException('zunionstore - all keys must map to the same key slot',))
-FailedTest(name='discard command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)",))
-FailedTest(name='psubscribe command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('quit',)",))
-FailedTest(name='georadius with STORE / STOREDIST', reason=RedisClusterException('georadius - all keys must map to the same key slot',))
-FailedTest(name='georadiusbymember with STORE / STOREDIST', reason=RedisClusterException('georadiusbymember - all keys must map to the same key slot',))
-FailedTest(name='pfmerge command', reason=RedisClusterException('pfmerge - all keys must map to the same key slot',))
-FailedTest(name='mset command', reason=RedisClusterException('mset - all keys must map to the same key slot',))
-FailedTest(name='msetnx command', reason=RedisClusterException('msetnx - all keys must map to the same key slot',))
+FailedTest(name='brpop with double timeout', reason=RedisClusterException('brpop - all keys must map to the same key slot'))
+FailedTest(name='brpoplpush with double timeout', reason=RedisClusterException('brpoplpush - all keys must map to the same key slot'))
+FailedTest(name='blpop command', reason=RedisClusterException('blpop - all keys must map to the same key slot'))
+FailedTest(name='brpop command', reason=RedisClusterException('brpop - all keys must map to the same key slot'))
+FailedTest(name='zinterstore command', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zinterstore with WEIGHTS', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zinterstore with AGGREGATE', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zunionstore command', reason=RedisClusterException('zunionstore - all keys must map to the same key slot'))
+FailedTest(name='zunionstore with WEIGHTS and AGGREGATE', reason=RedisClusterException('zunionstore - all keys must map to the same key slot'))
+FailedTest(name='discard command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='psubscribe command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('quit',)"))
+FailedTest(name='geopos command', reason="expected: [['13.36138933897018433', '38.11555639549629859'], ['15.08726745843887329', '37.50266842333162032'], None], result: [['13.361389338970184', '38.1155563954963'], ['15.087267458438873', '37.50266842333162'], None]")
+FailedTest(name='georadius with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Palermo', ['13.36138933897018433', '38.11555639549629859']], ['Catania', ['15.08726745843887329', '37.50266842333162032']]], result: [['Palermo', ['13.361389338970184', '38.1155563954963']], ['Catania', ['15.087267458438873', '37.50266842333162']]]")
+FailedTest(name='georadius with STORE / STOREDIST', reason=RedisClusterException('georadius - all keys must map to the same key slot'))
+FailedTest(name='georadius_ro with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Palermo', ['13.36138933897018433', '38.11555639549629859']], ['Catania', ['15.08726745843887329', '37.50266842333162032']]], result: [['Palermo', ['13.361389338970184', '38.1155563954963']], ['Catania', ['15.087267458438873', '37.50266842333162']]]")
+FailedTest(name='georadiusbymember with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Agrigento', ['13.5833314061164856', '37.31666804993816555']], ['Palermo', ['13.36138933897018433', '38.11555639549629859']]], result: [['Agrigento', ['13.583331406116486', '37.316668049938166']], ['Palermo', ['13.361389338970184', '38.1155563954963']]]")
+FailedTest(name='georadiusbymember with STORE / STOREDIST', reason=RedisClusterException('georadiusbymember - all keys must map to the same key slot'))
+FailedTest(name='pfmerge command', reason=RedisClusterException('pfmerge - all keys must map to the same key slot'))
+FailedTest(name='mset command', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='msetnx command', reason=RedisClusterException('msetnx - all keys must map to the same key slot'))
+FailedTest(name='georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Agrigento', ['13.5833314061164856', '37.31666804993816555']], ['Palermo', ['13.36138933897018433', '38.11555639549629859']]], result: [['Agrigento', ['13.583331406116486', '37.316668049938166']], ['Palermo', ['13.361389338970184', '38.1155563954963']]]")
 </pre>
diff --git a/RedisCluster-7.0.0.html b/RedisCluster-7.0.0.html
index 7899724..f80b36e 100644
--- a/RedisCluster-7.0.0.html
+++ b/RedisCluster-7.0.0.html
@@ -303,9 +303,9 @@
 test: geodist command passed
 test: geodist with M / KM / FT / MI passed
 test: geohash command passed
-test: geopos command passed
+test: geopos command failed
 test: georadius command passed
-test: georadius with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius with WITHCOORD / WITHDIST / WITHHASH failed
 test: georadius with COUNT passed
 test: georadius with ASC / DESC passed
 test: georadius with STORE / STOREDIST failed
@@ -313,12 +313,12 @@
 test: georadius with ANY option for COUNT passed
 test: georadius with support for uppercase unit names passed
 test: georadius_ro command passed
-test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH failed
 test: georadius_ro with COUNT passed
 test: georadius_ro with ASC / DESC passed
 test: georadius_ro with ANY option for COUNT passed
 test: georadiusbymember command passed
-test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH failed
 test: georadiusbymember with COUNT passed
 test: georadiusbymember with ASC / DESC passed
 test: georadiusbymember with STORE / STOREDIST failed
@@ -326,14 +326,14 @@
 test: georadiusbymember with ANY option for COUNT passed
 test: georadiusbymember with support for uppercase unit names passed
 test: georadiusbymember_ro command passed
-test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH failed
 test: georadiusbymember_ro with COUNT passed
 test: georadiusbymember_ro with ASC / DESC passed
 test: georadiusbymember_ro with ANY option for COUNT passed
 test: geosearch command passed
 test: geosearch with ASC / DESC passed
 test: geosearch with COUNT passed
-test: geosearch with WITHCOORD / WITHDIST / WITHHASH passed
+test: geosearch with WITHCOORD / WITHDIST / WITHHASH failed
 test: geosearch with support for uppercase unit names passed
 test: geosearchstore command failed
 test: geosearchstore command tags skipped
@@ -358,7 +358,7 @@
 test: multi command failed
 test: unwatch command failed
 test: watch command failed
-test: eval command failed
+test: eval command passed
 test: eval_ro command failed
 test: evalsha command failed
 test: evalsha_ro command failed
@@ -416,41 +416,41 @@
 test: sunsubscribe command run test error Can't execute 'flushall': only (P|S)SUBSCRIBE / (P|S)UNSUBSCRIBE / PING / QUIT / RESET are allowed in this context
 test: unsubscribe command run test error Can't execute 'flushall': only (P|S)SUBSCRIBE / (P|S)UNSUBSCRIBE / PING / QUIT / RESET are allowed in this context
 -------- The result of tests --------
-Summary: version: 7.0.0, total tests: 336, passed: 238, rate: 70.83%
+Summary: version: 7.0.0, total tests: 336, passed: 233, rate: 69.35%
 This is failed tests for 7.0.0:
-FailedTest(name='rename command', reason=RedisClusterException('rename - all keys must map to the same key slot',))
-FailedTest(name='renamenx command', reason=RedisClusterException('renamenx - all keys must map to the same key slot',))
+FailedTest(name='rename command', reason=RedisClusterException('rename - all keys must map to the same key slot'))
+FailedTest(name='renamenx command', reason=RedisClusterException('renamenx - all keys must map to the same key slot'))
 FailedTest(name='randomkey command', reason='expected: k, result: None')
-FailedTest(name='keys command', reason=RedisClusterException('mset - all keys must map to the same key slot',))
-FailedTest(name='move command', reason=ResponseError('MOVE is not allowed in cluster mode',))
-FailedTest(name='sdiff command', reason=RedisClusterException('sdiff - all keys must map to the same key slot',))
-FailedTest(name='sdiffstore command', reason=RedisClusterException('sdiffstore - all keys must map to the same key slot',))
-FailedTest(name='sinter command', reason=RedisClusterException('sinter - all keys must map to the same key slot',))
-FailedTest(name='sinterstore command', reason=RedisClusterException('sinterstore - all keys must map to the same key slot',))
-FailedTest(name='smove command', reason=RedisClusterException('smove - all keys must map to the same key slot',))
-FailedTest(name='sunion command', reason=RedisClusterException('sunion - all keys must map to the same key slot',))
-FailedTest(name='sunionstore command', reason=RedisClusterException('sunionstore - all keys must map to the same key slot',))
-FailedTest(name='mget command', reason=RedisClusterException('mget - all keys must map to the same key slot',))
+FailedTest(name='keys command', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='move command', reason=ResponseError('MOVE is not allowed in cluster mode'))
+FailedTest(name='sdiff command', reason=RedisClusterException('sdiff - all keys must map to the same key slot'))
+FailedTest(name='sdiffstore command', reason=RedisClusterException('sdiffstore - all keys must map to the same key slot'))
+FailedTest(name='sinter command', reason=RedisClusterException('sinter - all keys must map to the same key slot'))
+FailedTest(name='sinterstore command', reason=RedisClusterException('sinterstore - all keys must map to the same key slot'))
+FailedTest(name='smove command', reason=RedisClusterException('smove - all keys must map to the same key slot'))
+FailedTest(name='sunion command', reason=RedisClusterException('sunion - all keys must map to the same key slot'))
+FailedTest(name='sunionstore command', reason=RedisClusterException('sunionstore - all keys must map to the same key slot'))
+FailedTest(name='mget command', reason=RedisClusterException('mget - all keys must map to the same key slot'))
 FailedTest(name='flushall command', reason="expected: OK, result: {'127.0.0.1:30001': 'OK', '127.0.0.1:30002': 'OK', '127.0.0.1:30003': 'OK'}")
 FailedTest(name='flushdb command', reason="expected: OK, result: {'127.0.0.1:30001': 'OK', '127.0.0.1:30002': 'OK', '127.0.0.1:30003': 'OK'}")
 FailedTest(name='flushall with async', reason="expected: OK, result: {'127.0.0.1:30001': 'OK', '127.0.0.1:30002': 'OK', '127.0.0.1:30003': 'OK'}")
 FailedTest(name='flushdb with async', reason="expected: OK, result: {'127.0.0.1:30001': 'OK', '127.0.0.1:30002': 'OK', '127.0.0.1:30003': 'OK'}")
-FailedTest(name='swapdb command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('swapdb', '0', '1')",))
-FailedTest(name='blmpop with COUNT', reason=RedisClusterException('blmpop - all keys must map to the same key slot',))
-FailedTest(name='lmpop with COUNT', reason=RedisClusterException('lmpop - all keys must map to the same key slot',))
-FailedTest(name='sintercard command', reason=RedisClusterException('sintercard - all keys must map to the same key slot',))
-FailedTest(name='sintercard with LIMIT', reason=RedisClusterException('sintercard - all keys must map to the same key slot',))
-FailedTest(name='bzmpop command', reason=RedisClusterException('bzmpop - all keys must map to the same key slot',))
-FailedTest(name='bzmpop with COUNT', reason=RedisClusterException('bzmpop - all keys must map to the same key slot',))
-FailedTest(name='zintercard command', reason=RedisClusterException('zintercard - all keys must map to the same key slot',))
-FailedTest(name='zintercard with LIMIT', reason=RedisClusterException('zintercard - all keys must map to the same key slot',))
-FailedTest(name='lcs command', reason=RedisClusterException('mset - all keys must map to the same key slot',))
-FailedTest(name='lcs with LEN', reason=RedisClusterException('mset - all keys must map to the same key slot',))
-FailedTest(name='lcs with IDX', reason=RedisClusterException('mset - all keys must map to the same key slot',))
-FailedTest(name='lcs with MINMATCHLEN', reason=RedisClusterException('mset - all keys must map to the same key slot',))
-FailedTest(name='lcs with WITHMATCHLEN', reason=RedisClusterException('mset - all keys must map to the same key slot',))
-FailedTest(name='geosearchstore with support for uppercase unit names', reason=RedisClusterException('geosearchstore - all keys must map to the same key slot',))
-FailedTest(name='eval_ro command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('eval_ro', 'return', '0', 'hello')",))
+FailedTest(name='swapdb command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('swapdb', '0', '1')"))
+FailedTest(name='blmpop with COUNT', reason=RedisClusterException('blmpop - all keys must map to the same key slot'))
+FailedTest(name='lmpop with COUNT', reason=RedisClusterException('lmpop - all keys must map to the same key slot'))
+FailedTest(name='sintercard command', reason=RedisClusterException('sintercard - all keys must map to the same key slot'))
+FailedTest(name='sintercard with LIMIT', reason=RedisClusterException('sintercard - all keys must map to the same key slot'))
+FailedTest(name='bzmpop command', reason=RedisClusterException('bzmpop - all keys must map to the same key slot'))
+FailedTest(name='bzmpop with COUNT', reason=RedisClusterException('bzmpop - all keys must map to the same key slot'))
+FailedTest(name='zintercard command', reason=RedisClusterException('zintercard - all keys must map to the same key slot'))
+FailedTest(name='zintercard with LIMIT', reason=RedisClusterException('zintercard - all keys must map to the same key slot'))
+FailedTest(name='lcs command', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='lcs with LEN', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='lcs with IDX', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='lcs with MINMATCHLEN', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='lcs with WITHMATCHLEN', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='geosearchstore with support for uppercase unit names', reason=RedisClusterException('geosearchstore - all keys must map to the same key slot'))
+FailedTest(name='eval_ro command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('eval_ro', 'return', '0', 'hello')"))
 FailedTest(name='evalsha_ro command', reason="expected: 63143b6f8007b98c53ca2149822777b3566f9241, result: {'127.0.0.1:30001': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30002': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30003': '63143b6f8007b98c53ca2149822777b3566f9241'}")
 FailedTest(name='fcall command', reason="expected: OK, result: {'127.0.0.1:30001': 'OK', '127.0.0.1:30002': 'OK', '127.0.0.1:30003': 'OK'}")
 FailedTest(name='fcall_ro command', reason="expected: OK, result: {'127.0.0.1:30001': 'OK', '127.0.0.1:30002': 'OK', '127.0.0.1:30003': 'OK'}")
@@ -460,60 +460,65 @@
 FailedTest(name='function flush with ASYNC', reason="expected: OK, result: {'127.0.0.1:30001': 'OK', '127.0.0.1:30002': 'OK', '127.0.0.1:30003': 'OK'}")
 FailedTest(name='function list command', reason="expected: OK, result: {'127.0.0.1:30001': 'OK', '127.0.0.1:30002': 'OK', '127.0.0.1:30003': 'OK'}")
 FailedTest(name='function load command', reason="expected: OK, result: {'127.0.0.1:30001': 'OK', '127.0.0.1:30002': 'OK', '127.0.0.1:30003': 'OK'}")
-FailedTest(name='function restore command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('function', b'flush')",))
+FailedTest(name='function restore command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('function', b'flush')"))
 FailedTest(name='function stats command', reason="expected: OK, result: {'127.0.0.1:30001': 'OK', '127.0.0.1:30002': 'OK', '127.0.0.1:30003': 'OK'}")
-FailedTest(name='rpoplpush command', reason=RedisClusterException('rpoplpush - all keys must map to the same key slot',))
-FailedTest(name='exec command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)",))
-FailedTest(name='multi command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)",))
-FailedTest(name='bitop command', reason=RedisClusterException('bitop - all keys must map to the same key slot',))
-FailedTest(name='eval command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('eval', 'return', '0', 'hello')",))
+FailedTest(name='rpoplpush command', reason=RedisClusterException('rpoplpush - all keys must map to the same key slot'))
+FailedTest(name='exec command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='multi command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='bitop command', reason=RedisClusterException('bitop - all keys must map to the same key slot'))
 FailedTest(name='evalsha command', reason="expected: 63143b6f8007b98c53ca2149822777b3566f9241, result: {'127.0.0.1:30001': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30002': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30003': '63143b6f8007b98c53ca2149822777b3566f9241'}")
 FailedTest(name='script exists command', reason="expected: 63143b6f8007b98c53ca2149822777b3566f9241, result: {'127.0.0.1:30001': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30002': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30003': '63143b6f8007b98c53ca2149822777b3566f9241'}")
 FailedTest(name='script flush command', reason="expected: 63143b6f8007b98c53ca2149822777b3566f9241, result: {'127.0.0.1:30001': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30002': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30003': '63143b6f8007b98c53ca2149822777b3566f9241'}")
 FailedTest(name='script load command', reason="expected: 63143b6f8007b98c53ca2149822777b3566f9241, result: {'127.0.0.1:30001': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30002': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30003': '63143b6f8007b98c53ca2149822777b3566f9241'}")
-FailedTest(name='brpoplpush command', reason=RedisClusterException('brpoplpush - all keys must map to the same key slot',))
-FailedTest(name='unwatch command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('unwatch',)",))
-FailedTest(name='watch command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('unwatch',)",))
+FailedTest(name='brpoplpush command', reason=RedisClusterException('brpoplpush - all keys must map to the same key slot'))
+FailedTest(name='unwatch command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('unwatch',)"))
+FailedTest(name='watch command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('unwatch',)"))
 FailedTest(name='scan command', reason="expected: ['0', ['k']], result: ({'127.0.0.1:30001': 0, '127.0.0.1:30002': 0, '127.0.0.1:30003': 0}, ['k'])")
 FailedTest(name='scan with TYPE', reason="expected: ['0', ['geokey']], result: ({'127.0.0.1:30001': 0, '127.0.0.1:30002': 0, '127.0.0.1:30003': 0}, ['geokey'])")
-FailedTest(name='brpop with double timeout', reason=RedisClusterException('brpop - all keys must map to the same key slot',))
-FailedTest(name='brpoplpush with double timeout', reason=RedisClusterException('brpoplpush - all keys must map to the same key slot',))
-FailedTest(name='copy command', reason=RedisClusterException('copy - all keys must map to the same key slot',))
-FailedTest(name='blmove command', reason=RedisClusterException('blmove - all keys must map to the same key slot',))
-FailedTest(name='lmove command', reason=RedisClusterException('lmove - all keys must map to the same key slot',))
-FailedTest(name='zdiff command', reason=RedisClusterException('zdiff - all keys must map to the same key slot',))
-FailedTest(name='zdiffstore command', reason=RedisClusterException('zdiffstore - all keys must map to the same key slot',))
-FailedTest(name='zinter command', reason=RedisClusterException('zinter - all keys must map to the same key slot',))
-FailedTest(name='zinter with WEIGHTS', reason=RedisClusterException('zinter - all keys must map to the same key slot',))
-FailedTest(name='zinter with AGGREGATE', reason=RedisClusterException('zinter - all keys must map to the same key slot',))
-FailedTest(name='zinter WITHSCORES', reason=RedisClusterException('zinter - all keys must map to the same key slot',))
-FailedTest(name='zrangestore command', reason=RedisClusterException('zrangestore - all keys must map to the same key slot',))
-FailedTest(name='zrangestore with BYSCORE / BYLEX', reason=RedisClusterException('zrangestore - all keys must map to the same key slot',))
-FailedTest(name='zrangestore with REV', reason=RedisClusterException('zrangestore - all keys must map to the same key slot',))
-FailedTest(name='zrangestore with LIMIT', reason=RedisClusterException('zrangestore - all keys must map to the same key slot',))
-FailedTest(name='zunion command', reason=RedisClusterException('zunion - all keys must map to the same key slot',))
-FailedTest(name='zunion with WEIGHTS and AGGREGATE', reason=RedisClusterException('zunion - all keys must map to the same key slot',))
-FailedTest(name='zunion with WITHSCORES', reason=RedisClusterException('zunion - all keys must map to the same key slot',))
-FailedTest(name='geosearchstore command', reason=RedisClusterException('geosearchstore - all keys must map to the same key slot',))
-FailedTest(name='geosearchstore with ASC / DESC', reason=RedisClusterException('geosearchstore - all keys must map to the same key slot',))
-FailedTest(name='geosearchstore with COUNT', reason=RedisClusterException('geosearchstore - all keys must map to the same key slot',))
-FailedTest(name='geosearchstore with STOREDIST', reason=RedisClusterException('geosearchstore - all keys must map to the same key slot',))
+FailedTest(name='brpop with double timeout', reason=RedisClusterException('brpop - all keys must map to the same key slot'))
+FailedTest(name='brpoplpush with double timeout', reason=RedisClusterException('brpoplpush - all keys must map to the same key slot'))
+FailedTest(name='copy command', reason=RedisClusterException('copy - all keys must map to the same key slot'))
+FailedTest(name='blmove command', reason=RedisClusterException('blmove - all keys must map to the same key slot'))
+FailedTest(name='lmove command', reason=RedisClusterException('lmove - all keys must map to the same key slot'))
+FailedTest(name='zdiff command', reason=RedisClusterException('zdiff - all keys must map to the same key slot'))
+FailedTest(name='zdiffstore command', reason=RedisClusterException('zdiffstore - all keys must map to the same key slot'))
+FailedTest(name='zinter command', reason=RedisClusterException('zinter - all keys must map to the same key slot'))
+FailedTest(name='zinter with WEIGHTS', reason=RedisClusterException('zinter - all keys must map to the same key slot'))
+FailedTest(name='zinter with AGGREGATE', reason=RedisClusterException('zinter - all keys must map to the same key slot'))
+FailedTest(name='zinter WITHSCORES', reason=RedisClusterException('zinter - all keys must map to the same key slot'))
+FailedTest(name='zrangestore command', reason=RedisClusterException('zrangestore - all keys must map to the same key slot'))
+FailedTest(name='zrangestore with BYSCORE / BYLEX', reason=RedisClusterException('zrangestore - all keys must map to the same key slot'))
+FailedTest(name='zrangestore with REV', reason=RedisClusterException('zrangestore - all keys must map to the same key slot'))
+FailedTest(name='zrangestore with LIMIT', reason=RedisClusterException('zrangestore - all keys must map to the same key slot'))
+FailedTest(name='zunion command', reason=RedisClusterException('zunion - all keys must map to the same key slot'))
+FailedTest(name='zunion with WEIGHTS and AGGREGATE', reason=RedisClusterException('zunion - all keys must map to the same key slot'))
+FailedTest(name='zunion with WITHSCORES', reason=RedisClusterException('zunion - all keys must map to the same key slot'))
+FailedTest(name='geosearch with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Palermo', ['13.36138933897018433', '38.11555639549629859']], ['Catania', ['15.08726745843887329', '37.50266842333162032']]], result: [['Palermo', ['13.361389338970184', '38.1155563954963']], ['Catania', ['15.087267458438873', '37.50266842333162']]]")
+FailedTest(name='geosearchstore command', reason=RedisClusterException('geosearchstore - all keys must map to the same key slot'))
+FailedTest(name='geosearchstore with ASC / DESC', reason=RedisClusterException('geosearchstore - all keys must map to the same key slot'))
+FailedTest(name='geosearchstore with COUNT', reason=RedisClusterException('geosearchstore - all keys must map to the same key slot'))
+FailedTest(name='geosearchstore with STOREDIST', reason=RedisClusterException('geosearchstore - all keys must map to the same key slot'))
 FailedTest(name='flushall with sync', reason="expected: OK, result: {'127.0.0.1:30001': 'OK', '127.0.0.1:30002': 'OK', '127.0.0.1:30003': 'OK'}")
 FailedTest(name='flushdb with sync', reason="expected: OK, result: {'127.0.0.1:30001': 'OK', '127.0.0.1:30002': 'OK', '127.0.0.1:30003': 'OK'}")
 FailedTest(name='script flush with SYNC', reason="expected: 63143b6f8007b98c53ca2149822777b3566f9241, result: {'127.0.0.1:30001': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30002': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30003': '63143b6f8007b98c53ca2149822777b3566f9241'}")
 FailedTest(name='script flush with ASYNC', reason="expected: 63143b6f8007b98c53ca2149822777b3566f9241, result: {'127.0.0.1:30001': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30002': '63143b6f8007b98c53ca2149822777b3566f9241', '127.0.0.1:30003': '63143b6f8007b98c53ca2149822777b3566f9241'}")
-FailedTest(name='blpop command', reason=RedisClusterException('blpop - all keys must map to the same key slot',))
-FailedTest(name='brpop command', reason=RedisClusterException('brpop - all keys must map to the same key slot',))
-FailedTest(name='zinterstore command', reason=RedisClusterException('zinterstore - all keys must map to the same key slot',))
-FailedTest(name='zinterstore with WEIGHTS', reason=RedisClusterException('zinterstore - all keys must map to the same key slot',))
-FailedTest(name='zinterstore with AGGREGATE', reason=RedisClusterException('zinterstore - all keys must map to the same key slot',))
-FailedTest(name='zunionstore command', reason=RedisClusterException('zunionstore - all keys must map to the same key slot',))
-FailedTest(name='zunionstore with WEIGHTS and AGGREGATE', reason=RedisClusterException('zunionstore - all keys must map to the same key slot',))
-FailedTest(name='discard command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)",))
-FailedTest(name='psubscribe command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('quit',)",))
-FailedTest(name='georadius with STORE / STOREDIST', reason=RedisClusterException('georadius - all keys must map to the same key slot',))
-FailedTest(name='georadiusbymember with STORE / STOREDIST', reason=RedisClusterException('georadiusbymember - all keys must map to the same key slot',))
-FailedTest(name='pfmerge command', reason=RedisClusterException('pfmerge - all keys must map to the same key slot',))
-FailedTest(name='mset command', reason=RedisClusterException('mset - all keys must map to the same key slot',))
-FailedTest(name='msetnx command', reason=RedisClusterException('msetnx - all keys must map to the same key slot',))
+FailedTest(name='blpop command', reason=RedisClusterException('blpop - all keys must map to the same key slot'))
+FailedTest(name='brpop command', reason=RedisClusterException('brpop - all keys must map to the same key slot'))
+FailedTest(name='zinterstore command', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zinterstore with WEIGHTS', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zinterstore with AGGREGATE', reason=RedisClusterException('zinterstore - all keys must map to the same key slot'))
+FailedTest(name='zunionstore command', reason=RedisClusterException('zunionstore - all keys must map to the same key slot'))
+FailedTest(name='zunionstore with WEIGHTS and AGGREGATE', reason=RedisClusterException('zunionstore - all keys must map to the same key slot'))
+FailedTest(name='discard command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('multi',)"))
+FailedTest(name='psubscribe command', reason=RedisClusterException("No way to dispatch this command to Redis Cluster. Missing key.\nYou can execute the command by specifying target nodes.\nCommand: ('quit',)"))
+FailedTest(name='geopos command', reason="expected: [['13.36138933897018433', '38.11555639549629859'], ['15.08726745843887329', '37.50266842333162032'], None], result: [['13.361389338970184', '38.1155563954963'], ['15.087267458438873', '37.50266842333162'], None]")
+FailedTest(name='georadius with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Palermo', ['13.36138933897018433', '38.11555639549629859']], ['Catania', ['15.08726745843887329', '37.50266842333162032']]], result: [['Palermo', ['13.361389338970184', '38.1155563954963']], ['Catania', ['15.087267458438873', '37.50266842333162']]]")
+FailedTest(name='georadius with STORE / STOREDIST', reason=RedisClusterException('georadius - all keys must map to the same key slot'))
+FailedTest(name='georadius_ro with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Palermo', ['13.36138933897018433', '38.11555639549629859']], ['Catania', ['15.08726745843887329', '37.50266842333162032']]], result: [['Palermo', ['13.361389338970184', '38.1155563954963']], ['Catania', ['15.087267458438873', '37.50266842333162']]]")
+FailedTest(name='georadiusbymember with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Agrigento', ['13.5833314061164856', '37.31666804993816555']], ['Palermo', ['13.36138933897018433', '38.11555639549629859']]], result: [['Agrigento', ['13.583331406116486', '37.316668049938166']], ['Palermo', ['13.361389338970184', '38.1155563954963']]]")
+FailedTest(name='georadiusbymember with STORE / STOREDIST', reason=RedisClusterException('georadiusbymember - all keys must map to the same key slot'))
+FailedTest(name='pfmerge command', reason=RedisClusterException('pfmerge - all keys must map to the same key slot'))
+FailedTest(name='mset command', reason=RedisClusterException('mset - all keys must map to the same key slot'))
+FailedTest(name='msetnx command', reason=RedisClusterException('msetnx - all keys must map to the same key slot'))
+FailedTest(name='georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH', reason="expected: [['Agrigento', ['13.5833314061164856', '37.31666804993816555']], ['Palermo', ['13.36138933897018433', '38.11555639549629859']]], result: [['Agrigento', ['13.583331406116486', '37.316668049938166']], ['Palermo', ['13.361389338970184', '38.1155563954963']]]")
 </pre>
diff --git a/Valkey-4.0.0.html b/Valkey-4.0.0.html
new file mode 100644
index 0000000..d39b50e
--- /dev/null
+++ b/Valkey-4.0.0.html
@@ -0,0 +1,423 @@
+<pre>
+test: del command passed
+test: unlink command passed
+test: rename command passed
+test: rename command tags skipped
+test: renamenx command passed
+test: renamenx command tags skipped
+test: randomkey command passed
+test: exists command passed
+test: ttl command passed
+test: pttl command passed
+test: expire command passed
+test: expire with NX / XX version skipped
+test: expire with GT / LT version skipped
+test: expireat command passed
+test: expireat with NX / XX version skipped
+test: expireat with GT / LT version skipped
+test: pexpire command passed
+test: pexpire with NX / XX version skipped
+test: pexpire with GT / LT version skipped
+test: pexpireat command passed
+test: pexpireat with NX / XX version skipped
+test: pexpireat with GT / LT version skipped
+test: expiretime command version skipped
+test: pexpiretime command version skipped
+test: persist command passed
+test: dump command passed
+test: touch command passed
+test: restore command passed
+test: restore with REPLACE passed
+test: restore with ABSTTL version skipped
+test: restore with IDLETIME version skipped
+test: scan command passed
+test: scan with TYPE version skipped
+test: keys command passed
+test: move command passed
+test: copy command version skipped
+test: copy command tags skipped
+test: type command passed
+test: sort command passed
+test: sort_ro command skipped
+test: set command passed
+test: blmove command version skipped
+test: blmove command tags skipped
+test: blmpop command version skipped
+test: blmpop with COUNT version skipped
+test: blmpop with COUNT tags skipped
+test: blpop command passed
+test: blpop command tags skipped
+test: blpop with double timeout version skipped
+test: blpop with double timeout tags skipped
+test: brpop command passed
+test: brpop command tags skipped
+test: brpop with double timeout version skipped
+test: brpop with double timeout tags skipped
+test: brpoplpush command passed
+test: brpoplpush command tags skipped
+test: brpoplpush with double timeout version skipped
+test: brpoplpush with double timeout tags skipped
+test: lindex command passed
+test: linsert command passed
+test: llen command passed
+test: lmove command version skipped
+test: lmove command tags skipped
+test: lmpop command version skipped
+test: lmpop with COUNT version skipped
+test: lmpop with COUNT tags skipped
+test: lpop command passed
+test: lpop with COUNT version skipped
+test: lpos command version skipped
+test: lpos with RANK version skipped
+test: lpos with COUNT version skipped
+test: lpos with MAXLEN version skipped
+test: lpos with RANK, COUNT and MAXLEN version skipped
+test: lpush command passed
+test: lpush with multiple element passed
+test: lpushx command passed
+test: lpushx with multiple element passed
+test: lrange command passed
+test: lrem command passed
+test: lset command passed
+test: ltrim command passed
+test: rpop command passed
+test: rpop with COUNT version skipped
+test: rpoplpush command passed
+test: rpoplpush command tags skipped
+test: rpush command passed
+test: rpush with multiple element passed
+test: rpushx command passed
+test: rpushx command tags skipped
+test: rpushx with multiple element passed
+test: rpushx with multiple element tags skipped
+test: sadd command passed
+test: sadd command passed
+test: scard command passed
+test: sdiff command passed
+test: sdiff command tags skipped
+test: sdiffstore command passed
+test: sdiffstore command tags skipped
+test: sinter command passed
+test: sinter command tags skipped
+test: sintercard command version skipped
+test: sintercard command tags skipped
+test: sintercard with LIMIT version skipped
+test: sintercard with LIMIT tags skipped
+test: sinterstore command passed
+test: sinterstore command tags skipped
+test: sismember command passed
+test: smembers command passed
+test: smismember command version skipped
+test: smove command passed
+test: smove command tags skipped
+test: spop command passed
+test: spop with COUNT passed
+test: srandmember command passed
+test: srandmember with COUNT passed
+test: srem command passed
+test: srem with multiple member passed
+test: sscan command passed
+test: sscan with MATCH and COUNT passed
+test: sunion command passed
+test: sunion command tags skipped
+test: sunionstore command passed
+test: sunionstore command tags skipped
+test: bzmpop command version skipped
+test: bzmpop command tags skipped
+test: bzmpop with COUNT version skipped
+test: bzmpop with COUNT version skipped
+test: bzpopmax command version skipped
+test: bzpopmax with double timeout version skipped
+test: bzpopmin command version skipped
+test: bzpopmin with double timeout version skipped
+test: zadd command passed
+test: zadd with multiple elements passed
+test: zadd with XX / NX / CH / INCR passed
+test: zadd with GT / LT version skipped
+test: zcard command passed
+test: zcount command passed
+test: zdiff command version skipped
+test: zdiff command tags skipped
+test: zdiffstore command version skipped
+test: zdiffstore command tags skipped
+test: zincrby command passed
+test: zinter command version skipped
+test: zinter command tags skipped
+test: zinter with WEIGHTS version skipped
+test: zinter with WEIGHTS tags skipped
+test: zinter with AGGREGATE version skipped
+test: zinter with AGGREGATE tags skipped
+test: zinter WITHSCORES version skipped
+test: zinter WITHSCORES tags skipped
+test: zintercard command version skipped
+test: zintercard command tags skipped
+test: zintercard with LIMIT version skipped
+test: zintercard with LIMIT tags skipped
+test: zinterstore command passed
+test: zinterstore command tags skipped
+test: zinterstore with WEIGHTS passed
+test: zinterstore with WEIGHTS tags skipped
+test: zinterstore with AGGREGATE passed
+test: zinterstore with AGGREGATE tags skipped
+test: zlexcount command passed
+test: zmpop command version skipped
+test: zmpop with COUNT version skipped
+test: zmscore command version skipped
+test: zpopmax command version skipped
+test: zpopmax with COUNT version skipped
+test: zpopmin command version skipped
+test: zpopmin command version skipped
+test: zrandmember command version skipped
+test: zrandmember with COUNT version skipped
+test: zrandmember with WITHSCORES version skipped
+test: zrange command passed
+test: zrange with WITHSCORES passed
+test: zrange with BYSCORE / BYLEX version skipped
+test: zrange with REV version skipped
+test: zrange with LIMIT version skipped
+test: zrangebylex command passed
+test: zrangebylex with LIMIT passed
+test: zrangebyscore command passed
+test: zrangebyscore with LIMIT passed
+test: zrangebyscore with WITHSCORES passed
+test: zrangestore command version skipped
+test: zrangestore command tags skipped
+test: zrangestore with BYSCORE / BYLEX version skipped
+test: zrangestore with BYSCORE / BYLEX tags skipped
+test: zrangestore with REV version skipped
+test: zrangestore with REV tags skipped
+test: zrangestore with LIMIT version skipped
+test: zrangestore with LIMIT tags skipped
+test: zrank command passed
+test: zrank with WITHSCORE version skipped
+test: zrem command passed
+test: zrem with multiple elements passed
+test: zremrangebylex command passed
+test: zremrangebyrank command passed
+test: zremrangebyscore command passed
+test: zrevrange command passed
+test: zrevrange with WITHSCORES passed
+test: zrevrangebylex command passed
+test: zrevrangebylex with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrangebyscore with WITHSCORES passed
+test: zrevrangebyscore with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrank command passed
+test: zrevrank with WITHSCORE version skipped
+test: zscan command passed
+test: zscan with MATCH and COUNT passed
+test: zscore command passed
+test: zunion command version skipped
+test: zunion command tags skipped
+test: zunion with WEIGHTS and AGGREGATE version skipped
+test: zunion with WEIGHTS and AGGREGATE tags skipped
+test: zunion with WITHSCORES version skipped
+test: zunion with WITHSCORES tags skipped
+test: zunionstore command passed
+test: zunionstore command tags skipped
+test: zunionstore with WEIGHTS and AGGREGATE passed
+test: zunionstore with WEIGHTS and AGGREGATE tags skipped
+test: append command passed
+test: decr command passed
+test: decrby command passed
+test: get command passed
+test: getdel command version skipped
+test: getex command version skipped
+test: getex with EX version skipped
+test: getex with PX version skipped
+test: getex with EXAT version skipped
+test: getex with PXAT version skipped
+test: getex with PERSIST version skipped
+test: getrange command passed
+test: getset command passed
+test: incr command passed
+test: incrby command passed
+test: incrbyfloat command passed
+test: lcs command version skipped
+test: lcs command tags skipped
+test: lcs with LEN version skipped
+test: lcs with LEN tags skipped
+test: lcs with IDX version skipped
+test: lcs with IDX tags skipped
+test: lcs with MINMATCHLEN version skipped
+test: lcs with MINMATCHLEN tags skipped
+test: lcs with WITHMATCHLEN version skipped
+test: lcs with WITHMATCHLEN tags skipped
+test: mget command passed
+test: mget command tags skipped
+test: mset command passed
+test: mset command tags skipped
+test: msetnx command passed
+test: msetnx command tags skipped
+test: psetex command passed
+test: set command passed
+test: set with EX / PX passed
+test: set with NX / XX passed
+test: set with KEEPTTL version skipped
+test: set with GET version skipped
+test: set with EXAT / PXAT version skipped
+test: set with NX and GET version skipped
+test: setex command passed
+test: setnx command passed
+test: setrange command passed
+test: strlen command passed
+test: substr command passed
+test: hdel command passed
+test: hdel with multiple field passed
+test: hexists command passed
+test: hget command passed
+test: hgetall command passed
+test: hincrby command passed
+test: hincrbyfloat command passed
+test: hkeys command passed
+test: hlen command passed
+test: hmget command passed
+test: hmset command passed
+test: hrandfield command version skipped
+test: hrandfield with COUNT version skipped
+test: hrandfield with WITHVALUES version skipped
+test: hscan command passed
+test: hscan with MATCH and COUNT passed
+test: hset command passed
+test: hset command with multiple field and value passed
+test: hsetnx command passed
+test: hstrlen command passed
+test: hvals command passed
+test: bitcount command passed
+test: bitcount with BYTE / BIT version skipped
+test: bitfield command passed
+test: bitfield_ro command version skipped
+test: bitop command passed
+test: bitop command tags skipped
+test: bitpos command passed
+test: bitpos with BYTE / BIT version skipped
+test: getbit command passed
+test: setbit command passed
+test: pfadd command passed
+test: pfcount command passed
+test: pfmerge command passed
+test: pfmerge command tags skipped
+test: geoadd command passed
+test: geoadd with CH / NX / XX version skipped
+test: geodist command passed
+test: geodist with M / KM / FT / MI passed
+test: geohash command passed
+test: geopos command passed
+test: georadius command passed
+test: georadius with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius with COUNT passed
+test: georadius with ASC / DESC passed
+test: georadius with STORE / STOREDIST passed
+test: georadius with STORE / STOREDIST tags skipped
+test: georadius with ANY option for COUNT version skipped
+test: georadius with support for uppercase unit names version skipped
+test: georadius_ro command passed
+test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius_ro with COUNT passed
+test: georadius_ro with ASC / DESC passed
+test: georadius_ro with ANY option for COUNT version skipped
+test: georadiusbymember command passed
+test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember with COUNT passed
+test: georadiusbymember with ASC / DESC passed
+test: georadiusbymember with STORE / STOREDIST passed
+test: georadiusbymember with STORE / STOREDIST tags skipped
+test: georadiusbymember with ANY option for COUNT version skipped
+test: georadiusbymember with support for uppercase unit names version skipped
+test: georadiusbymember_ro command passed
+test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember_ro with COUNT passed
+test: georadiusbymember_ro with ASC / DESC passed
+test: georadiusbymember_ro with ANY option for COUNT version skipped
+test: geosearch command version skipped
+test: geosearch with ASC / DESC version skipped
+test: geosearch with COUNT version skipped
+test: geosearch with WITHCOORD / WITHDIST / WITHHASH version skipped
+test: geosearch with support for uppercase unit names version skipped
+test: geosearchstore command version skipped
+test: geosearchstore command tags skipped
+test: geosearchstore with ASC / DESC version skipped
+test: geosearchstore with ASC / DESC tags skipped
+test: geosearchstore with COUNT version skipped
+test: geosearchstore with COUNT tags skipped
+test: geosearchstore with STOREDIST version skipped
+test: geosearchstore with STOREDIST tags skipped
+test: geosearchstore with support for uppercase unit names version skipped
+test: geosearchstore with support for uppercase unit names tags skipped
+test: dbsize command passed
+test: flushall command passed
+test: flushall with async passed
+test: flushall with sync version skipped
+test: flushdb command passed
+test: flushdb with async passed
+test: flushdb with sync version skipped
+test: swapdb command passed
+test: discard command passed
+test: exec command passed
+test: multi command passed
+test: unwatch command passed
+test: watch command passed
+test: eval command passed
+test: eval_ro command version skipped
+test: evalsha command passed
+test: evalsha_ro command version skipped
+test: fcall command version skipped
+test: fcall_ro command version skipped
+test: function delete command version skipped
+test: function flush command version skipped
+test: function flush with SYNC version skipped
+test: function flush with ASYNC version skipped
+test: function list command version skipped
+test: function load command version skipped
+test: function restore command version skipped
+test: function stats command version skipped
+test: script exists command passed
+test: script flush command passed
+test: script flush with SYNC version skipped
+test: script flush with ASYNC version skipped
+test: script load command passed
+test: xack command version skipped
+test: xadd command version skipped
+test: xadd with NOMKSTREAM/MINID/LIMIT version skipped
+test: xadd with EXPLICIT ID version skipped
+test: xclaim command version skipped
+test: xdel command version skipped
+test: xgroup create command version skipped
+test: xgroup create with MKSTREAM version skipped
+test: xgroup create with ENTRIESREAD version skipped
+test: xgroup createconsumer command version skipped
+test: xgroup delconsumer command version skipped
+test: xgroup destroy command version skipped
+test: xgroup setid command version skipped
+test: xgroup setid with ENTRIESREAD version skipped
+test: xlen command version skipped
+test: xpending command version skipped
+test: xrange command version skipped
+test: xread command version skipped
+test: xreadgroup command version skipped
+test: xrevrange command version skipped
+test: xrevrange command with EXCLUSIVE RANGES version skipped
+test: xtrim command version skipped
+test: xtrim command with MINID/LIMIT version skipped
+test: psubscribe command passed
+test: psubscribe with RESET version skipped
+test: publish command passed
+test: pubsub channels command passed
+test: pubsub numpat command passed
+test: pubsub numsub command passed
+test: pubsub shardchannels command version skipped
+test: pubsub shardnumsub command version skipped
+test: punsubscribe command failed
+test: spublish command version skipped
+test: ssubscribe command version skipped
+test: subscribe command passed
+test: subscribe with RESET version skipped
+test: sunsubscribe command version skipped
+test: unsubscribe command failed
+-------- The result of tests --------
+Summary: version: 4.0.0, total tests: 196, passed: 194, rate: 98.98%
+This is failed tests for 4.0.0:
+FailedTest(name='punsubscribe command', reason=ResponseError("NOSUB 'punsubscribe' command executed not in subscribed mode"))
+FailedTest(name='unsubscribe command', reason=ResponseError("NOSUB 'unsubscribe' command executed not in subscribed mode"))
+</pre>
diff --git a/Valkey-5.0.0.html b/Valkey-5.0.0.html
new file mode 100644
index 0000000..785d5c6
--- /dev/null
+++ b/Valkey-5.0.0.html
@@ -0,0 +1,423 @@
+<pre>
+test: del command passed
+test: unlink command passed
+test: rename command passed
+test: rename command tags skipped
+test: renamenx command passed
+test: renamenx command tags skipped
+test: randomkey command passed
+test: exists command passed
+test: ttl command passed
+test: pttl command passed
+test: expire command passed
+test: expire with NX / XX version skipped
+test: expire with GT / LT version skipped
+test: expireat command passed
+test: expireat with NX / XX version skipped
+test: expireat with GT / LT version skipped
+test: pexpire command passed
+test: pexpire with NX / XX version skipped
+test: pexpire with GT / LT version skipped
+test: pexpireat command passed
+test: pexpireat with NX / XX version skipped
+test: pexpireat with GT / LT version skipped
+test: expiretime command version skipped
+test: pexpiretime command version skipped
+test: persist command passed
+test: dump command passed
+test: touch command passed
+test: restore command passed
+test: restore with REPLACE passed
+test: restore with ABSTTL passed
+test: restore with IDLETIME passed
+test: scan command passed
+test: scan with TYPE version skipped
+test: keys command passed
+test: move command passed
+test: copy command version skipped
+test: copy command tags skipped
+test: type command passed
+test: sort command passed
+test: sort_ro command skipped
+test: set command passed
+test: blmove command version skipped
+test: blmove command tags skipped
+test: blmpop command version skipped
+test: blmpop with COUNT version skipped
+test: blmpop with COUNT tags skipped
+test: blpop command passed
+test: blpop command tags skipped
+test: blpop with double timeout version skipped
+test: blpop with double timeout tags skipped
+test: brpop command passed
+test: brpop command tags skipped
+test: brpop with double timeout version skipped
+test: brpop with double timeout tags skipped
+test: brpoplpush command passed
+test: brpoplpush command tags skipped
+test: brpoplpush with double timeout version skipped
+test: brpoplpush with double timeout tags skipped
+test: lindex command passed
+test: linsert command passed
+test: llen command passed
+test: lmove command version skipped
+test: lmove command tags skipped
+test: lmpop command version skipped
+test: lmpop with COUNT version skipped
+test: lmpop with COUNT tags skipped
+test: lpop command passed
+test: lpop with COUNT version skipped
+test: lpos command version skipped
+test: lpos with RANK version skipped
+test: lpos with COUNT version skipped
+test: lpos with MAXLEN version skipped
+test: lpos with RANK, COUNT and MAXLEN version skipped
+test: lpush command passed
+test: lpush with multiple element passed
+test: lpushx command passed
+test: lpushx with multiple element passed
+test: lrange command passed
+test: lrem command passed
+test: lset command passed
+test: ltrim command passed
+test: rpop command passed
+test: rpop with COUNT version skipped
+test: rpoplpush command passed
+test: rpoplpush command tags skipped
+test: rpush command passed
+test: rpush with multiple element passed
+test: rpushx command passed
+test: rpushx command tags skipped
+test: rpushx with multiple element passed
+test: rpushx with multiple element tags skipped
+test: sadd command passed
+test: sadd command passed
+test: scard command passed
+test: sdiff command passed
+test: sdiff command tags skipped
+test: sdiffstore command passed
+test: sdiffstore command tags skipped
+test: sinter command passed
+test: sinter command tags skipped
+test: sintercard command version skipped
+test: sintercard command tags skipped
+test: sintercard with LIMIT version skipped
+test: sintercard with LIMIT tags skipped
+test: sinterstore command passed
+test: sinterstore command tags skipped
+test: sismember command passed
+test: smembers command passed
+test: smismember command version skipped
+test: smove command passed
+test: smove command tags skipped
+test: spop command passed
+test: spop with COUNT passed
+test: srandmember command passed
+test: srandmember with COUNT passed
+test: srem command passed
+test: srem with multiple member passed
+test: sscan command passed
+test: sscan with MATCH and COUNT passed
+test: sunion command passed
+test: sunion command tags skipped
+test: sunionstore command passed
+test: sunionstore command tags skipped
+test: bzmpop command version skipped
+test: bzmpop command tags skipped
+test: bzmpop with COUNT version skipped
+test: bzmpop with COUNT version skipped
+test: bzpopmax command passed
+test: bzpopmax with double timeout version skipped
+test: bzpopmin command passed
+test: bzpopmin with double timeout version skipped
+test: zadd command passed
+test: zadd with multiple elements passed
+test: zadd with XX / NX / CH / INCR passed
+test: zadd with GT / LT version skipped
+test: zcard command passed
+test: zcount command passed
+test: zdiff command version skipped
+test: zdiff command tags skipped
+test: zdiffstore command version skipped
+test: zdiffstore command tags skipped
+test: zincrby command passed
+test: zinter command version skipped
+test: zinter command tags skipped
+test: zinter with WEIGHTS version skipped
+test: zinter with WEIGHTS tags skipped
+test: zinter with AGGREGATE version skipped
+test: zinter with AGGREGATE tags skipped
+test: zinter WITHSCORES version skipped
+test: zinter WITHSCORES tags skipped
+test: zintercard command version skipped
+test: zintercard command tags skipped
+test: zintercard with LIMIT version skipped
+test: zintercard with LIMIT tags skipped
+test: zinterstore command passed
+test: zinterstore command tags skipped
+test: zinterstore with WEIGHTS passed
+test: zinterstore with WEIGHTS tags skipped
+test: zinterstore with AGGREGATE passed
+test: zinterstore with AGGREGATE tags skipped
+test: zlexcount command passed
+test: zmpop command version skipped
+test: zmpop with COUNT version skipped
+test: zmscore command version skipped
+test: zpopmax command passed
+test: zpopmax with COUNT passed
+test: zpopmin command passed
+test: zpopmin command passed
+test: zrandmember command version skipped
+test: zrandmember with COUNT version skipped
+test: zrandmember with WITHSCORES version skipped
+test: zrange command passed
+test: zrange with WITHSCORES passed
+test: zrange with BYSCORE / BYLEX version skipped
+test: zrange with REV version skipped
+test: zrange with LIMIT version skipped
+test: zrangebylex command passed
+test: zrangebylex with LIMIT passed
+test: zrangebyscore command passed
+test: zrangebyscore with LIMIT passed
+test: zrangebyscore with WITHSCORES passed
+test: zrangestore command version skipped
+test: zrangestore command tags skipped
+test: zrangestore with BYSCORE / BYLEX version skipped
+test: zrangestore with BYSCORE / BYLEX tags skipped
+test: zrangestore with REV version skipped
+test: zrangestore with REV tags skipped
+test: zrangestore with LIMIT version skipped
+test: zrangestore with LIMIT tags skipped
+test: zrank command passed
+test: zrank with WITHSCORE version skipped
+test: zrem command passed
+test: zrem with multiple elements passed
+test: zremrangebylex command passed
+test: zremrangebyrank command passed
+test: zremrangebyscore command passed
+test: zrevrange command passed
+test: zrevrange with WITHSCORES passed
+test: zrevrangebylex command passed
+test: zrevrangebylex with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrangebyscore with WITHSCORES passed
+test: zrevrangebyscore with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrank command passed
+test: zrevrank with WITHSCORE version skipped
+test: zscan command passed
+test: zscan with MATCH and COUNT passed
+test: zscore command passed
+test: zunion command version skipped
+test: zunion command tags skipped
+test: zunion with WEIGHTS and AGGREGATE version skipped
+test: zunion with WEIGHTS and AGGREGATE tags skipped
+test: zunion with WITHSCORES version skipped
+test: zunion with WITHSCORES tags skipped
+test: zunionstore command passed
+test: zunionstore command tags skipped
+test: zunionstore with WEIGHTS and AGGREGATE passed
+test: zunionstore with WEIGHTS and AGGREGATE tags skipped
+test: append command passed
+test: decr command passed
+test: decrby command passed
+test: get command passed
+test: getdel command version skipped
+test: getex command version skipped
+test: getex with EX version skipped
+test: getex with PX version skipped
+test: getex with EXAT version skipped
+test: getex with PXAT version skipped
+test: getex with PERSIST version skipped
+test: getrange command passed
+test: getset command passed
+test: incr command passed
+test: incrby command passed
+test: incrbyfloat command passed
+test: lcs command version skipped
+test: lcs command tags skipped
+test: lcs with LEN version skipped
+test: lcs with LEN tags skipped
+test: lcs with IDX version skipped
+test: lcs with IDX tags skipped
+test: lcs with MINMATCHLEN version skipped
+test: lcs with MINMATCHLEN tags skipped
+test: lcs with WITHMATCHLEN version skipped
+test: lcs with WITHMATCHLEN tags skipped
+test: mget command passed
+test: mget command tags skipped
+test: mset command passed
+test: mset command tags skipped
+test: msetnx command passed
+test: msetnx command tags skipped
+test: psetex command passed
+test: set command passed
+test: set with EX / PX passed
+test: set with NX / XX passed
+test: set with KEEPTTL version skipped
+test: set with GET version skipped
+test: set with EXAT / PXAT version skipped
+test: set with NX and GET version skipped
+test: setex command passed
+test: setnx command passed
+test: setrange command passed
+test: strlen command passed
+test: substr command passed
+test: hdel command passed
+test: hdel with multiple field passed
+test: hexists command passed
+test: hget command passed
+test: hgetall command passed
+test: hincrby command passed
+test: hincrbyfloat command passed
+test: hkeys command passed
+test: hlen command passed
+test: hmget command passed
+test: hmset command passed
+test: hrandfield command version skipped
+test: hrandfield with COUNT version skipped
+test: hrandfield with WITHVALUES version skipped
+test: hscan command passed
+test: hscan with MATCH and COUNT passed
+test: hset command passed
+test: hset command with multiple field and value passed
+test: hsetnx command passed
+test: hstrlen command passed
+test: hvals command passed
+test: bitcount command passed
+test: bitcount with BYTE / BIT version skipped
+test: bitfield command passed
+test: bitfield_ro command version skipped
+test: bitop command passed
+test: bitop command tags skipped
+test: bitpos command passed
+test: bitpos with BYTE / BIT version skipped
+test: getbit command passed
+test: setbit command passed
+test: pfadd command passed
+test: pfcount command passed
+test: pfmerge command passed
+test: pfmerge command tags skipped
+test: geoadd command passed
+test: geoadd with CH / NX / XX version skipped
+test: geodist command passed
+test: geodist with M / KM / FT / MI passed
+test: geohash command passed
+test: geopos command passed
+test: georadius command passed
+test: georadius with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius with COUNT passed
+test: georadius with ASC / DESC passed
+test: georadius with STORE / STOREDIST passed
+test: georadius with STORE / STOREDIST tags skipped
+test: georadius with ANY option for COUNT version skipped
+test: georadius with support for uppercase unit names version skipped
+test: georadius_ro command passed
+test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius_ro with COUNT passed
+test: georadius_ro with ASC / DESC passed
+test: georadius_ro with ANY option for COUNT version skipped
+test: georadiusbymember command passed
+test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember with COUNT passed
+test: georadiusbymember with ASC / DESC passed
+test: georadiusbymember with STORE / STOREDIST passed
+test: georadiusbymember with STORE / STOREDIST tags skipped
+test: georadiusbymember with ANY option for COUNT version skipped
+test: georadiusbymember with support for uppercase unit names version skipped
+test: georadiusbymember_ro command passed
+test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember_ro with COUNT passed
+test: georadiusbymember_ro with ASC / DESC passed
+test: georadiusbymember_ro with ANY option for COUNT version skipped
+test: geosearch command version skipped
+test: geosearch with ASC / DESC version skipped
+test: geosearch with COUNT version skipped
+test: geosearch with WITHCOORD / WITHDIST / WITHHASH version skipped
+test: geosearch with support for uppercase unit names version skipped
+test: geosearchstore command version skipped
+test: geosearchstore command tags skipped
+test: geosearchstore with ASC / DESC version skipped
+test: geosearchstore with ASC / DESC tags skipped
+test: geosearchstore with COUNT version skipped
+test: geosearchstore with COUNT tags skipped
+test: geosearchstore with STOREDIST version skipped
+test: geosearchstore with STOREDIST tags skipped
+test: geosearchstore with support for uppercase unit names version skipped
+test: geosearchstore with support for uppercase unit names tags skipped
+test: dbsize command passed
+test: flushall command passed
+test: flushall with async passed
+test: flushall with sync version skipped
+test: flushdb command passed
+test: flushdb with async passed
+test: flushdb with sync version skipped
+test: swapdb command passed
+test: discard command passed
+test: exec command passed
+test: multi command passed
+test: unwatch command passed
+test: watch command passed
+test: eval command passed
+test: eval_ro command version skipped
+test: evalsha command passed
+test: evalsha_ro command version skipped
+test: fcall command version skipped
+test: fcall_ro command version skipped
+test: function delete command version skipped
+test: function flush command version skipped
+test: function flush with SYNC version skipped
+test: function flush with ASYNC version skipped
+test: function list command version skipped
+test: function load command version skipped
+test: function restore command version skipped
+test: function stats command version skipped
+test: script exists command passed
+test: script flush command passed
+test: script flush with SYNC version skipped
+test: script flush with ASYNC version skipped
+test: script load command passed
+test: xack command passed
+test: xadd command passed
+test: xadd with NOMKSTREAM/MINID/LIMIT version skipped
+test: xadd with EXPLICIT ID version skipped
+test: xclaim command passed
+test: xdel command passed
+test: xgroup create command passed
+test: xgroup create with MKSTREAM passed
+test: xgroup create with ENTRIESREAD version skipped
+test: xgroup createconsumer command version skipped
+test: xgroup delconsumer command passed
+test: xgroup destroy command passed
+test: xgroup setid command passed
+test: xgroup setid with ENTRIESREAD version skipped
+test: xlen command passed
+test: xpending command passed
+test: xrange command passed
+test: xread command passed
+test: xreadgroup command passed
+test: xrevrange command passed
+test: xrevrange command with EXCLUSIVE RANGES version skipped
+test: xtrim command passed
+test: xtrim command with MINID/LIMIT version skipped
+test: psubscribe command passed
+test: psubscribe with RESET version skipped
+test: publish command passed
+test: pubsub channels command passed
+test: pubsub numpat command passed
+test: pubsub numsub command passed
+test: pubsub shardchannels command version skipped
+test: pubsub shardnumsub command version skipped
+test: punsubscribe command failed
+test: spublish command version skipped
+test: ssubscribe command version skipped
+test: subscribe command passed
+test: subscribe with RESET version skipped
+test: sunsubscribe command version skipped
+test: unsubscribe command failed
+-------- The result of tests --------
+Summary: version: 5.0.0, total tests: 220, passed: 218, rate: 99.09%
+This is failed tests for 5.0.0:
+FailedTest(name='punsubscribe command', reason=ResponseError("NOSUB 'punsubscribe' command executed not in subscribed mode"))
+FailedTest(name='unsubscribe command', reason=ResponseError("NOSUB 'unsubscribe' command executed not in subscribed mode"))
+</pre>
diff --git a/Valkey-6.0.0.html b/Valkey-6.0.0.html
new file mode 100644
index 0000000..a098739
--- /dev/null
+++ b/Valkey-6.0.0.html
@@ -0,0 +1,423 @@
+<pre>
+test: del command passed
+test: unlink command passed
+test: rename command passed
+test: rename command tags skipped
+test: renamenx command passed
+test: renamenx command tags skipped
+test: randomkey command passed
+test: exists command passed
+test: ttl command passed
+test: pttl command passed
+test: expire command passed
+test: expire with NX / XX version skipped
+test: expire with GT / LT version skipped
+test: expireat command passed
+test: expireat with NX / XX version skipped
+test: expireat with GT / LT version skipped
+test: pexpire command passed
+test: pexpire with NX / XX version skipped
+test: pexpire with GT / LT version skipped
+test: pexpireat command passed
+test: pexpireat with NX / XX version skipped
+test: pexpireat with GT / LT version skipped
+test: expiretime command version skipped
+test: pexpiretime command version skipped
+test: persist command passed
+test: dump command passed
+test: touch command passed
+test: restore command passed
+test: restore with REPLACE passed
+test: restore with ABSTTL passed
+test: restore with IDLETIME passed
+test: scan command passed
+test: scan with TYPE passed
+test: keys command passed
+test: move command passed
+test: copy command version skipped
+test: copy command tags skipped
+test: type command passed
+test: sort command passed
+test: sort_ro command skipped
+test: set command passed
+test: blmove command version skipped
+test: blmove command tags skipped
+test: blmpop command version skipped
+test: blmpop with COUNT version skipped
+test: blmpop with COUNT tags skipped
+test: blpop command passed
+test: blpop command tags skipped
+test: blpop with double timeout passed
+test: blpop with double timeout tags skipped
+test: brpop command passed
+test: brpop command tags skipped
+test: brpop with double timeout passed
+test: brpop with double timeout tags skipped
+test: brpoplpush command passed
+test: brpoplpush command tags skipped
+test: brpoplpush with double timeout passed
+test: brpoplpush with double timeout tags skipped
+test: lindex command passed
+test: linsert command passed
+test: llen command passed
+test: lmove command version skipped
+test: lmove command tags skipped
+test: lmpop command version skipped
+test: lmpop with COUNT version skipped
+test: lmpop with COUNT tags skipped
+test: lpop command passed
+test: lpop with COUNT version skipped
+test: lpos command version skipped
+test: lpos with RANK version skipped
+test: lpos with COUNT version skipped
+test: lpos with MAXLEN version skipped
+test: lpos with RANK, COUNT and MAXLEN version skipped
+test: lpush command passed
+test: lpush with multiple element passed
+test: lpushx command passed
+test: lpushx with multiple element passed
+test: lrange command passed
+test: lrem command passed
+test: lset command passed
+test: ltrim command passed
+test: rpop command passed
+test: rpop with COUNT version skipped
+test: rpoplpush command passed
+test: rpoplpush command tags skipped
+test: rpush command passed
+test: rpush with multiple element passed
+test: rpushx command passed
+test: rpushx command tags skipped
+test: rpushx with multiple element passed
+test: rpushx with multiple element tags skipped
+test: sadd command passed
+test: sadd command passed
+test: scard command passed
+test: sdiff command passed
+test: sdiff command tags skipped
+test: sdiffstore command passed
+test: sdiffstore command tags skipped
+test: sinter command passed
+test: sinter command tags skipped
+test: sintercard command version skipped
+test: sintercard command tags skipped
+test: sintercard with LIMIT version skipped
+test: sintercard with LIMIT tags skipped
+test: sinterstore command passed
+test: sinterstore command tags skipped
+test: sismember command passed
+test: smembers command passed
+test: smismember command version skipped
+test: smove command passed
+test: smove command tags skipped
+test: spop command passed
+test: spop with COUNT passed
+test: srandmember command passed
+test: srandmember with COUNT passed
+test: srem command passed
+test: srem with multiple member passed
+test: sscan command passed
+test: sscan with MATCH and COUNT passed
+test: sunion command passed
+test: sunion command tags skipped
+test: sunionstore command passed
+test: sunionstore command tags skipped
+test: bzmpop command version skipped
+test: bzmpop command tags skipped
+test: bzmpop with COUNT version skipped
+test: bzmpop with COUNT version skipped
+test: bzpopmax command passed
+test: bzpopmax with double timeout passed
+test: bzpopmin command passed
+test: bzpopmin with double timeout passed
+test: zadd command passed
+test: zadd with multiple elements passed
+test: zadd with XX / NX / CH / INCR passed
+test: zadd with GT / LT version skipped
+test: zcard command passed
+test: zcount command passed
+test: zdiff command version skipped
+test: zdiff command tags skipped
+test: zdiffstore command version skipped
+test: zdiffstore command tags skipped
+test: zincrby command passed
+test: zinter command version skipped
+test: zinter command tags skipped
+test: zinter with WEIGHTS version skipped
+test: zinter with WEIGHTS tags skipped
+test: zinter with AGGREGATE version skipped
+test: zinter with AGGREGATE tags skipped
+test: zinter WITHSCORES version skipped
+test: zinter WITHSCORES tags skipped
+test: zintercard command version skipped
+test: zintercard command tags skipped
+test: zintercard with LIMIT version skipped
+test: zintercard with LIMIT tags skipped
+test: zinterstore command passed
+test: zinterstore command tags skipped
+test: zinterstore with WEIGHTS passed
+test: zinterstore with WEIGHTS tags skipped
+test: zinterstore with AGGREGATE passed
+test: zinterstore with AGGREGATE tags skipped
+test: zlexcount command passed
+test: zmpop command version skipped
+test: zmpop with COUNT version skipped
+test: zmscore command version skipped
+test: zpopmax command passed
+test: zpopmax with COUNT passed
+test: zpopmin command passed
+test: zpopmin command passed
+test: zrandmember command version skipped
+test: zrandmember with COUNT version skipped
+test: zrandmember with WITHSCORES version skipped
+test: zrange command passed
+test: zrange with WITHSCORES passed
+test: zrange with BYSCORE / BYLEX version skipped
+test: zrange with REV version skipped
+test: zrange with LIMIT version skipped
+test: zrangebylex command passed
+test: zrangebylex with LIMIT passed
+test: zrangebyscore command passed
+test: zrangebyscore with LIMIT passed
+test: zrangebyscore with WITHSCORES passed
+test: zrangestore command version skipped
+test: zrangestore command tags skipped
+test: zrangestore with BYSCORE / BYLEX version skipped
+test: zrangestore with BYSCORE / BYLEX tags skipped
+test: zrangestore with REV version skipped
+test: zrangestore with REV tags skipped
+test: zrangestore with LIMIT version skipped
+test: zrangestore with LIMIT tags skipped
+test: zrank command passed
+test: zrank with WITHSCORE version skipped
+test: zrem command passed
+test: zrem with multiple elements passed
+test: zremrangebylex command passed
+test: zremrangebyrank command passed
+test: zremrangebyscore command passed
+test: zrevrange command passed
+test: zrevrange with WITHSCORES passed
+test: zrevrangebylex command passed
+test: zrevrangebylex with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrangebyscore with WITHSCORES passed
+test: zrevrangebyscore with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrank command passed
+test: zrevrank with WITHSCORE version skipped
+test: zscan command passed
+test: zscan with MATCH and COUNT passed
+test: zscore command passed
+test: zunion command version skipped
+test: zunion command tags skipped
+test: zunion with WEIGHTS and AGGREGATE version skipped
+test: zunion with WEIGHTS and AGGREGATE tags skipped
+test: zunion with WITHSCORES version skipped
+test: zunion with WITHSCORES tags skipped
+test: zunionstore command passed
+test: zunionstore command tags skipped
+test: zunionstore with WEIGHTS and AGGREGATE passed
+test: zunionstore with WEIGHTS and AGGREGATE tags skipped
+test: append command passed
+test: decr command passed
+test: decrby command passed
+test: get command passed
+test: getdel command version skipped
+test: getex command version skipped
+test: getex with EX version skipped
+test: getex with PX version skipped
+test: getex with EXAT version skipped
+test: getex with PXAT version skipped
+test: getex with PERSIST version skipped
+test: getrange command passed
+test: getset command passed
+test: incr command passed
+test: incrby command passed
+test: incrbyfloat command passed
+test: lcs command version skipped
+test: lcs command tags skipped
+test: lcs with LEN version skipped
+test: lcs with LEN tags skipped
+test: lcs with IDX version skipped
+test: lcs with IDX tags skipped
+test: lcs with MINMATCHLEN version skipped
+test: lcs with MINMATCHLEN tags skipped
+test: lcs with WITHMATCHLEN version skipped
+test: lcs with WITHMATCHLEN tags skipped
+test: mget command passed
+test: mget command tags skipped
+test: mset command passed
+test: mset command tags skipped
+test: msetnx command passed
+test: msetnx command tags skipped
+test: psetex command passed
+test: set command passed
+test: set with EX / PX passed
+test: set with NX / XX passed
+test: set with KEEPTTL passed
+test: set with GET version skipped
+test: set with EXAT / PXAT version skipped
+test: set with NX and GET version skipped
+test: setex command passed
+test: setnx command passed
+test: setrange command passed
+test: strlen command passed
+test: substr command passed
+test: hdel command passed
+test: hdel with multiple field passed
+test: hexists command passed
+test: hget command passed
+test: hgetall command passed
+test: hincrby command passed
+test: hincrbyfloat command passed
+test: hkeys command passed
+test: hlen command passed
+test: hmget command passed
+test: hmset command passed
+test: hrandfield command version skipped
+test: hrandfield with COUNT version skipped
+test: hrandfield with WITHVALUES version skipped
+test: hscan command passed
+test: hscan with MATCH and COUNT passed
+test: hset command passed
+test: hset command with multiple field and value passed
+test: hsetnx command passed
+test: hstrlen command passed
+test: hvals command passed
+test: bitcount command passed
+test: bitcount with BYTE / BIT version skipped
+test: bitfield command passed
+test: bitfield_ro command passed
+test: bitop command passed
+test: bitop command tags skipped
+test: bitpos command passed
+test: bitpos with BYTE / BIT version skipped
+test: getbit command passed
+test: setbit command passed
+test: pfadd command passed
+test: pfcount command passed
+test: pfmerge command passed
+test: pfmerge command tags skipped
+test: geoadd command passed
+test: geoadd with CH / NX / XX version skipped
+test: geodist command passed
+test: geodist with M / KM / FT / MI passed
+test: geohash command passed
+test: geopos command passed
+test: georadius command passed
+test: georadius with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius with COUNT passed
+test: georadius with ASC / DESC passed
+test: georadius with STORE / STOREDIST passed
+test: georadius with STORE / STOREDIST tags skipped
+test: georadius with ANY option for COUNT version skipped
+test: georadius with support for uppercase unit names version skipped
+test: georadius_ro command passed
+test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius_ro with COUNT passed
+test: georadius_ro with ASC / DESC passed
+test: georadius_ro with ANY option for COUNT version skipped
+test: georadiusbymember command passed
+test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember with COUNT passed
+test: georadiusbymember with ASC / DESC passed
+test: georadiusbymember with STORE / STOREDIST passed
+test: georadiusbymember with STORE / STOREDIST tags skipped
+test: georadiusbymember with ANY option for COUNT version skipped
+test: georadiusbymember with support for uppercase unit names version skipped
+test: georadiusbymember_ro command passed
+test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember_ro with COUNT passed
+test: georadiusbymember_ro with ASC / DESC passed
+test: georadiusbymember_ro with ANY option for COUNT version skipped
+test: geosearch command version skipped
+test: geosearch with ASC / DESC version skipped
+test: geosearch with COUNT version skipped
+test: geosearch with WITHCOORD / WITHDIST / WITHHASH version skipped
+test: geosearch with support for uppercase unit names version skipped
+test: geosearchstore command version skipped
+test: geosearchstore command tags skipped
+test: geosearchstore with ASC / DESC version skipped
+test: geosearchstore with ASC / DESC tags skipped
+test: geosearchstore with COUNT version skipped
+test: geosearchstore with COUNT tags skipped
+test: geosearchstore with STOREDIST version skipped
+test: geosearchstore with STOREDIST tags skipped
+test: geosearchstore with support for uppercase unit names version skipped
+test: geosearchstore with support for uppercase unit names tags skipped
+test: dbsize command passed
+test: flushall command passed
+test: flushall with async passed
+test: flushall with sync version skipped
+test: flushdb command passed
+test: flushdb with async passed
+test: flushdb with sync version skipped
+test: swapdb command passed
+test: discard command passed
+test: exec command passed
+test: multi command passed
+test: unwatch command passed
+test: watch command passed
+test: eval command passed
+test: eval_ro command version skipped
+test: evalsha command passed
+test: evalsha_ro command version skipped
+test: fcall command version skipped
+test: fcall_ro command version skipped
+test: function delete command version skipped
+test: function flush command version skipped
+test: function flush with SYNC version skipped
+test: function flush with ASYNC version skipped
+test: function list command version skipped
+test: function load command version skipped
+test: function restore command version skipped
+test: function stats command version skipped
+test: script exists command passed
+test: script flush command passed
+test: script flush with SYNC version skipped
+test: script flush with ASYNC version skipped
+test: script load command passed
+test: xack command passed
+test: xadd command passed
+test: xadd with NOMKSTREAM/MINID/LIMIT version skipped
+test: xadd with EXPLICIT ID version skipped
+test: xclaim command passed
+test: xdel command passed
+test: xgroup create command passed
+test: xgroup create with MKSTREAM passed
+test: xgroup create with ENTRIESREAD version skipped
+test: xgroup createconsumer command version skipped
+test: xgroup delconsumer command passed
+test: xgroup destroy command passed
+test: xgroup setid command passed
+test: xgroup setid with ENTRIESREAD version skipped
+test: xlen command passed
+test: xpending command passed
+test: xrange command passed
+test: xread command passed
+test: xreadgroup command passed
+test: xrevrange command passed
+test: xrevrange command with EXCLUSIVE RANGES version skipped
+test: xtrim command passed
+test: xtrim command with MINID/LIMIT version skipped
+test: psubscribe command passed
+test: psubscribe with RESET version skipped
+test: publish command passed
+test: pubsub channels command passed
+test: pubsub numpat command passed
+test: pubsub numsub command passed
+test: pubsub shardchannels command version skipped
+test: pubsub shardnumsub command version skipped
+test: punsubscribe command failed
+test: spublish command version skipped
+test: ssubscribe command version skipped
+test: subscribe command passed
+test: subscribe with RESET version skipped
+test: sunsubscribe command version skipped
+test: unsubscribe command failed
+-------- The result of tests --------
+Summary: version: 6.0.0, total tests: 228, passed: 226, rate: 99.12%
+This is failed tests for 6.0.0:
+FailedTest(name='punsubscribe command', reason=ResponseError("NOSUB 'punsubscribe' command executed not in subscribed mode"))
+FailedTest(name='unsubscribe command', reason=ResponseError("NOSUB 'unsubscribe' command executed not in subscribed mode"))
+</pre>
diff --git a/Valkey-7.0.0.html b/Valkey-7.0.0.html
new file mode 100644
index 0000000..51c7e28
--- /dev/null
+++ b/Valkey-7.0.0.html
@@ -0,0 +1,424 @@
+<pre>
+test: del command passed
+test: unlink command passed
+test: rename command passed
+test: rename command tags skipped
+test: renamenx command passed
+test: renamenx command tags skipped
+test: randomkey command passed
+test: exists command passed
+test: ttl command passed
+test: pttl command passed
+test: expire command passed
+test: expire with NX / XX passed
+test: expire with GT / LT passed
+test: expireat command passed
+test: expireat with NX / XX passed
+test: expireat with GT / LT passed
+test: pexpire command passed
+test: pexpire with NX / XX passed
+test: pexpire with GT / LT passed
+test: pexpireat command passed
+test: pexpireat with NX / XX passed
+test: pexpireat with GT / LT passed
+test: expiretime command passed
+test: pexpiretime command passed
+test: persist command passed
+test: dump command passed
+test: touch command passed
+test: restore command passed
+test: restore with REPLACE passed
+test: restore with ABSTTL passed
+test: restore with IDLETIME passed
+test: scan command passed
+test: scan with TYPE passed
+test: keys command passed
+test: move command passed
+test: copy command passed
+test: copy command tags skipped
+test: type command passed
+test: sort command passed
+test: sort_ro command skipped
+test: set command passed
+test: blmove command passed
+test: blmove command tags skipped
+test: blmpop command passed
+test: blmpop with COUNT passed
+test: blmpop with COUNT tags skipped
+test: blpop command passed
+test: blpop command tags skipped
+test: blpop with double timeout passed
+test: blpop with double timeout tags skipped
+test: brpop command passed
+test: brpop command tags skipped
+test: brpop with double timeout passed
+test: brpop with double timeout tags skipped
+test: brpoplpush command passed
+test: brpoplpush command tags skipped
+test: brpoplpush with double timeout passed
+test: brpoplpush with double timeout tags skipped
+test: lindex command passed
+test: linsert command passed
+test: llen command passed
+test: lmove command passed
+test: lmove command tags skipped
+test: lmpop command passed
+test: lmpop with COUNT passed
+test: lmpop with COUNT tags skipped
+test: lpop command passed
+test: lpop with COUNT passed
+test: lpos command passed
+test: lpos with RANK passed
+test: lpos with COUNT passed
+test: lpos with MAXLEN passed
+test: lpos with RANK, COUNT and MAXLEN passed
+test: lpush command passed
+test: lpush with multiple element passed
+test: lpushx command passed
+test: lpushx with multiple element passed
+test: lrange command passed
+test: lrem command passed
+test: lset command passed
+test: ltrim command passed
+test: rpop command passed
+test: rpop with COUNT passed
+test: rpoplpush command passed
+test: rpoplpush command tags skipped
+test: rpush command passed
+test: rpush with multiple element passed
+test: rpushx command passed
+test: rpushx command tags skipped
+test: rpushx with multiple element passed
+test: rpushx with multiple element tags skipped
+test: sadd command passed
+test: sadd command passed
+test: scard command passed
+test: sdiff command passed
+test: sdiff command tags skipped
+test: sdiffstore command passed
+test: sdiffstore command tags skipped
+test: sinter command passed
+test: sinter command tags skipped
+test: sintercard command passed
+test: sintercard command tags skipped
+test: sintercard with LIMIT passed
+test: sintercard with LIMIT tags skipped
+test: sinterstore command passed
+test: sinterstore command tags skipped
+test: sismember command passed
+test: smembers command passed
+test: smismember command passed
+test: smove command passed
+test: smove command tags skipped
+test: spop command passed
+test: spop with COUNT passed
+test: srandmember command passed
+test: srandmember with COUNT passed
+test: srem command passed
+test: srem with multiple member passed
+test: sscan command passed
+test: sscan with MATCH and COUNT passed
+test: sunion command passed
+test: sunion command tags skipped
+test: sunionstore command passed
+test: sunionstore command tags skipped
+test: bzmpop command passed
+test: bzmpop command tags skipped
+test: bzmpop with COUNT passed
+test: bzmpop with COUNT passed
+test: bzpopmax command passed
+test: bzpopmax with double timeout passed
+test: bzpopmin command passed
+test: bzpopmin with double timeout passed
+test: zadd command passed
+test: zadd with multiple elements passed
+test: zadd with XX / NX / CH / INCR passed
+test: zadd with GT / LT passed
+test: zcard command passed
+test: zcount command passed
+test: zdiff command passed
+test: zdiff command tags skipped
+test: zdiffstore command passed
+test: zdiffstore command tags skipped
+test: zincrby command passed
+test: zinter command passed
+test: zinter command tags skipped
+test: zinter with WEIGHTS passed
+test: zinter with WEIGHTS tags skipped
+test: zinter with AGGREGATE passed
+test: zinter with AGGREGATE tags skipped
+test: zinter WITHSCORES passed
+test: zinter WITHSCORES tags skipped
+test: zintercard command passed
+test: zintercard command tags skipped
+test: zintercard with LIMIT passed
+test: zintercard with LIMIT tags skipped
+test: zinterstore command passed
+test: zinterstore command tags skipped
+test: zinterstore with WEIGHTS passed
+test: zinterstore with WEIGHTS tags skipped
+test: zinterstore with AGGREGATE passed
+test: zinterstore with AGGREGATE tags skipped
+test: zlexcount command passed
+test: zmpop command passed
+test: zmpop with COUNT passed
+test: zmscore command passed
+test: zpopmax command passed
+test: zpopmax with COUNT passed
+test: zpopmin command passed
+test: zpopmin command passed
+test: zrandmember command passed
+test: zrandmember with COUNT passed
+test: zrandmember with WITHSCORES passed
+test: zrange command passed
+test: zrange with WITHSCORES passed
+test: zrange with BYSCORE / BYLEX passed
+test: zrange with REV passed
+test: zrange with LIMIT passed
+test: zrangebylex command passed
+test: zrangebylex with LIMIT passed
+test: zrangebyscore command passed
+test: zrangebyscore with LIMIT passed
+test: zrangebyscore with WITHSCORES passed
+test: zrangestore command passed
+test: zrangestore command tags skipped
+test: zrangestore with BYSCORE / BYLEX passed
+test: zrangestore with BYSCORE / BYLEX tags skipped
+test: zrangestore with REV passed
+test: zrangestore with REV tags skipped
+test: zrangestore with LIMIT passed
+test: zrangestore with LIMIT tags skipped
+test: zrank command passed
+test: zrank with WITHSCORE version skipped
+test: zrem command passed
+test: zrem with multiple elements passed
+test: zremrangebylex command passed
+test: zremrangebyrank command passed
+test: zremrangebyscore command passed
+test: zrevrange command passed
+test: zrevrange with WITHSCORES passed
+test: zrevrangebylex command passed
+test: zrevrangebylex with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrangebyscore with WITHSCORES passed
+test: zrevrangebyscore with LIMIT passed
+test: zrevrangebyscore command passed
+test: zrevrank command passed
+test: zrevrank with WITHSCORE version skipped
+test: zscan command passed
+test: zscan with MATCH and COUNT passed
+test: zscore command passed
+test: zunion command passed
+test: zunion command tags skipped
+test: zunion with WEIGHTS and AGGREGATE passed
+test: zunion with WEIGHTS and AGGREGATE tags skipped
+test: zunion with WITHSCORES passed
+test: zunion with WITHSCORES tags skipped
+test: zunionstore command passed
+test: zunionstore command tags skipped
+test: zunionstore with WEIGHTS and AGGREGATE passed
+test: zunionstore with WEIGHTS and AGGREGATE tags skipped
+test: append command passed
+test: decr command passed
+test: decrby command passed
+test: get command passed
+test: getdel command passed
+test: getex command passed
+test: getex with EX passed
+test: getex with PX passed
+test: getex with EXAT passed
+test: getex with PXAT passed
+test: getex with PERSIST passed
+test: getrange command passed
+test: getset command passed
+test: incr command passed
+test: incrby command passed
+test: incrbyfloat command passed
+test: lcs command passed
+test: lcs command tags skipped
+test: lcs with LEN passed
+test: lcs with LEN tags skipped
+test: lcs with IDX passed
+test: lcs with IDX tags skipped
+test: lcs with MINMATCHLEN passed
+test: lcs with MINMATCHLEN tags skipped
+test: lcs with WITHMATCHLEN passed
+test: lcs with WITHMATCHLEN tags skipped
+test: mget command passed
+test: mget command tags skipped
+test: mset command passed
+test: mset command tags skipped
+test: msetnx command passed
+test: msetnx command tags skipped
+test: psetex command passed
+test: set command passed
+test: set with EX / PX passed
+test: set with NX / XX passed
+test: set with KEEPTTL passed
+test: set with GET passed
+test: set with EXAT / PXAT passed
+test: set with NX and GET passed
+test: setex command passed
+test: setnx command passed
+test: setrange command passed
+test: strlen command passed
+test: substr command passed
+test: hdel command passed
+test: hdel with multiple field passed
+test: hexists command passed
+test: hget command passed
+test: hgetall command passed
+test: hincrby command passed
+test: hincrbyfloat command passed
+test: hkeys command passed
+test: hlen command passed
+test: hmget command passed
+test: hmset command passed
+test: hrandfield command passed
+test: hrandfield with COUNT passed
+test: hrandfield with WITHVALUES passed
+test: hscan command passed
+test: hscan with MATCH and COUNT passed
+test: hset command passed
+test: hset command with multiple field and value passed
+test: hsetnx command passed
+test: hstrlen command passed
+test: hvals command passed
+test: bitcount command passed
+test: bitcount with BYTE / BIT passed
+test: bitfield command passed
+test: bitfield_ro command passed
+test: bitop command passed
+test: bitop command tags skipped
+test: bitpos command passed
+test: bitpos with BYTE / BIT passed
+test: getbit command passed
+test: setbit command passed
+test: pfadd command passed
+test: pfcount command passed
+test: pfmerge command passed
+test: pfmerge command tags skipped
+test: geoadd command passed
+test: geoadd with CH / NX / XX passed
+test: geodist command passed
+test: geodist with M / KM / FT / MI passed
+test: geohash command passed
+test: geopos command passed
+test: georadius command passed
+test: georadius with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius with COUNT passed
+test: georadius with ASC / DESC passed
+test: georadius with STORE / STOREDIST passed
+test: georadius with STORE / STOREDIST tags skipped
+test: georadius with ANY option for COUNT passed
+test: georadius with support for uppercase unit names passed
+test: georadius_ro command passed
+test: georadius_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadius_ro with COUNT passed
+test: georadius_ro with ASC / DESC passed
+test: georadius_ro with ANY option for COUNT passed
+test: georadiusbymember command passed
+test: georadiusbymember with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember with COUNT passed
+test: georadiusbymember with ASC / DESC passed
+test: georadiusbymember with STORE / STOREDIST passed
+test: georadiusbymember with STORE / STOREDIST tags skipped
+test: georadiusbymember with ANY option for COUNT passed
+test: georadiusbymember with support for uppercase unit names passed
+test: georadiusbymember_ro command passed
+test: georadiusbymember_ro with WITHCOORD / WITHDIST / WITHHASH passed
+test: georadiusbymember_ro with COUNT passed
+test: georadiusbymember_ro with ASC / DESC passed
+test: georadiusbymember_ro with ANY option for COUNT passed
+test: geosearch command passed
+test: geosearch with ASC / DESC passed
+test: geosearch with COUNT passed
+test: geosearch with WITHCOORD / WITHDIST / WITHHASH passed
+test: geosearch with support for uppercase unit names passed
+test: geosearchstore command passed
+test: geosearchstore command tags skipped
+test: geosearchstore with ASC / DESC passed
+test: geosearchstore with ASC / DESC tags skipped
+test: geosearchstore with COUNT passed
+test: geosearchstore with COUNT tags skipped
+test: geosearchstore with STOREDIST passed
+test: geosearchstore with STOREDIST tags skipped
+test: geosearchstore with support for uppercase unit names passed
+test: geosearchstore with support for uppercase unit names tags skipped
+test: dbsize command passed
+test: flushall command passed
+test: flushall with async passed
+test: flushall with sync passed
+test: flushdb command passed
+test: flushdb with async passed
+test: flushdb with sync passed
+test: swapdb command passed
+test: discard command passed
+test: exec command passed
+test: multi command passed
+test: unwatch command passed
+test: watch command passed
+test: eval command passed
+test: eval_ro command passed
+test: evalsha command passed
+test: evalsha_ro command passed
+test: fcall command passed
+test: fcall_ro command passed
+test: function delete command passed
+test: function flush command passed
+test: function flush with SYNC passed
+test: function flush with ASYNC passed
+test: function list command passed
+test: function load command passed
+test: function restore command passed
+test: function stats command passed
+test: script exists command passed
+test: script flush command passed
+test: script flush with SYNC passed
+test: script flush with ASYNC passed
+test: script load command passed
+test: xack command passed
+test: xadd command passed
+test: xadd with NOMKSTREAM/MINID/LIMIT passed
+test: xadd with EXPLICIT ID passed
+test: xclaim command passed
+test: xdel command passed
+test: xgroup create command passed
+test: xgroup create with MKSTREAM passed
+test: xgroup create with ENTRIESREAD passed
+test: xgroup createconsumer command passed
+test: xgroup delconsumer command passed
+test: xgroup destroy command passed
+test: xgroup setid command passed
+test: xgroup setid with ENTRIESREAD passed
+test: xlen command passed
+test: xpending command passed
+test: xrange command passed
+test: xread command passed
+test: xreadgroup command passed
+test: xrevrange command passed
+test: xrevrange command with EXCLUSIVE RANGES passed
+test: xtrim command passed
+test: xtrim command with MINID/LIMIT passed
+test: psubscribe command passed
+test: psubscribe with RESET passed
+test: publish command passed
+test: pubsub channels command passed
+test: pubsub numpat command passed
+test: pubsub numsub command passed
+test: pubsub shardchannels command passed
+test: pubsub shardnumsub command passed
+test: punsubscribe command failed
+test: spublish command passed
+test: ssubscribe command passed
+test: subscribe command passed
+test: subscribe with RESET passed
+test: sunsubscribe command failed
+test: unsubscribe command failed
+-------- The result of tests --------
+Summary: version: 7.0.0, total tests: 350, passed: 347, rate: 99.14%
+This is failed tests for 7.0.0:
+FailedTest(name='sunsubscribe command', reason=ResponseError("NOSUB 'sunsubscribe' command executed not in subscribed mode"))
+FailedTest(name='punsubscribe command', reason=ResponseError("NOSUB 'punsubscribe' command executed not in subscribed mode"))
+FailedTest(name='unsubscribe command', reason=ResponseError("NOSUB 'unsubscribe' command executed not in subscribed mode"))
+</pre>
diff --git a/index.html b/index.html
index 5cf79f9..e8bfee2 100644
--- a/index.html
+++ b/index.html
@@ -1,123 +1 @@
-This page is automatically generated by <a href="https://github.com/tair-opensource/compatibility-test-suite-for-redis">compatibility-test-suite-for-redis</a> to show the compatibility of the following Redis-Like systems and different versions of Redis.
-<br><br>
-<table>
-    <thead>
-    <tr>
-        <th>Product / Redis Version</th>
-        <th>4.0.0</th>
-        <th>5.0.0</th>
-        <th>6.0.0</th>
-        <th>7.0.0</th>
-    </tr>
-    </thead>
-    <tbody>
-    <tr>
-        <td>Redis(unstable)</td>
-        <td style="background:#40de5a">100.00% <a href="Redis-4.0.0.html">detail</a></td>
-        <td style="background:#40de5a">100.00% <a href="Redis-5.0.0.html">detail</a></td>
-        <td style="background:#40de5a">100.00% <a href="Redis-6.0.0.html">detail</a></td>
-        <td style="background:#40de5a">100.00% <a href="Redis-7.0.0.html">detail</a></td>
-    </tr>
-    <tr>
-        <td>RedisCluster(unstable)</td>
-        <td style="background:#f05654">76.19% <a href="RedisCluster-4.0.0.html">detail</a></td>
-        <td style="background:#f05654">78.87% <a href="RedisCluster-5.0.0.html">detail</a></td>
-        <td style="background:#f05654">78.28% <a href="RedisCluster-6.0.0.html">detail</a></td>
-        <td style="background:#f05654">70.83% <a href="RedisCluster-7.0.0.html">detail</a></td>
-    </tr>
-    <tr>
-        <td>DragonflyDB(latest)</td>
-        <td>-</td>
-        <td>-</td>
-        <td>-</td>
-        <td>-</td>
-    </tr>
-    <tr>
-        <td>Kvrocks(2.2.0)</td>
-        <td>-</td>
-        <td>-</td>
-        <td>-</td>
-        <td>-</td>
-    </tr>
-    <tr>
-        <td>KeyDB(latest)</td>
-        <td>-</td>
-        <td>-</td>
-        <td>-</td>
-        <td>-</td>
-    </tr>
-    <tr>
-        <td>Pika(latest)</td>
-        <td>-</td>
-        <td>-</td>
-        <td>-</td>
-        <td>-</td>
-    </tr>
-    <tr>
-        <td>Tair(proxy-cluster-latest)</td>
-        <td style="background:#ffa400">91.28% <a href="Tair-4.0.0.html">detail</a></td>
-        <td style="background:#ffa400">92.73% <a href="Tair-5.0.0.html">detail</a></td>
-        <td style="background:#ffa400">91.19% <a href="Tair-6.0.0.html">detail</a></td>
-        <td style="background:#ffa400">80.23% <a href="Tair-7.0.0.html">detail</a></td>
-    </tr>
-    <tr>
-        <td>Kvstore(proxy-cluster-6.0)</td>
-        <td style="background:#ffa400">90.77% <a href="Kvstore-4.0.0.html">detail</a></td>
-        <td style="background:#ffa400">91.78% <a href="Kvstore-5.0.0.html">detail</a></td>
-        <td style="background:#ffa400">90.79% <a href="Kvstore-6.0.0.html">detail</a></td>
-        <td style="background:#f05654">66.48% <a href="Kvstore-7.0.0.html">detail</a></td>
-    </tr>
-    <tr>
-        <td>ElastiCache(None)</td>
-        <td>-</td>
-        <td>-</td>
-        <td>-</td>
-        <td>-</td>
-    </tr>
-    <tr>
-        <td>MemoryDB(None)</td>
-        <td>-</td>
-        <td>-</td>
-        <td>-</td>
-        <td>-</td>
-    </tr>
-    <tr>
-        <td>AzureRedis(None)</td>
-        <td>-</td>
-        <td>-</td>
-        <td>-</td>
-        <td>-</td>
-    </tr>
-    <tr>
-        <td>GoogleMemoryStore(None)</td>
-        <td>-</td>
-        <td>-</td>
-        <td>-</td>
-        <td>-</td>
-    </tr>
-
-    <tr>
-        <td>TencentRedis(proxy-cluster-6.0)</td>
-        <td style="background:#ffa400">89.69% <a href="TencentRedis-4.0.0.html">detail</a></td>
-        <td style="background:#ffa400">90.37% <a href="TencentRedis-5.0.0.html">detail</a></td>
-        <td style="background:#ffa400">90.27% <a href="TencentRedis-6.0.0.html">detail</a></td>
-        <td style="background:#f05654">72.41% <a href="TencentRedis-7.0.0.html">detail</a></td>
-    </tr>
-
-    <tr>
-        <td>HuaweiRedis(proxy-cluster-latest)</td>
-        <td style="background:#ffa400">90.72% <a href="HuaweiRedis-4.0.0.html">detail</a></td>
-        <td style="background:#ffa400">92.20% <a href="HuaweiRedis-5.0.0.html">detail</a></td>
-        <td style="background:#ffa400">88.50% <a href="HuaweiRedis-6.0.0.html">detail</a></td>
-        <td style="background:#f05654">58.62% <a href="HuaweiRedis-7.0.0.html">detail</a></td>
-    </tr>
-    </tbody>
-</table><br>This report was generated on 2024-06-07 17:19:26.
-<style>table {
-    border-collapse: collapse;
-}
-
-th, td {
-    border: 1px solid black;
-    padding: 8px;
-}</style>
\ No newline at end of file
+This page is automatically generated by <a href="https://github.com/tair-opensource/resp-compatibility">resp-compatibility</a> to show the compatibility of the following Redis-Like systems and different versions of Redis.<br><br><h3>Standalone Databases</h3><table><thead><tr><th>Product / Redis Version</th><th>4.0.0</th><th>5.0.0</th><th>6.0.0</th><th>7.0.0</th></tr></thead><tbody><tr><td>AliyunRedis(7.0)</td><td style="background:#40de5a">100.00% <a href="AliyunRedis-4.0.0.html">detail</a></td><td style="background:#40de5a">100.00% <a href="AliyunRedis-5.0.0.html">detail</a></td><td style="background:#40de5a">100.00% <a href="AliyunRedis-6.0.0.html">detail</a></td><td style="background:#40de5a">100.00% <a href="AliyunRedis-7.0.0.html">detail</a></td></tr><tr><td>AliyunTair(7.0)</td><td style="background:#40de5a">100.00% <a href="AliyunTair-4.0.0.html">detail</a></td><td style="background:#40de5a">100.00% <a href="AliyunTair-5.0.0.html">detail</a></td><td style="background:#40de5a">100.00% <a href="AliyunTair-6.0.0.html">detail</a></td><td style="background:#40de5a">100.00% <a href="AliyunTair-7.0.0.html">detail</a></td></tr><tr><td>AzureRedis(None)</td><td>-</td><td>-</td><td>-</td><td>-</td></tr><tr><td>ElastiCache(None)</td><td>-</td><td>-</td><td>-</td><td>-</td></tr><tr><td>GaussDBRedis(None)</td><td>-</td><td>-</td><td>-</td><td>-</td></tr><tr><td>GoogleMemoryStore(None)</td><td>-</td><td>-</td><td>-</td><td>-</td></tr><tr><td>KeyDB(latest)</td><td style="background:#40de5a">100.00% <a href="KeyDB-4.0.0.html">detail</a></td><td style="background:#40de5a">100.00% <a href="KeyDB-5.0.0.html">detail</a></td><td style="background:#40de5a">100.00% <a href="KeyDB-6.0.0.html">detail</a></td><td style="background:#ffa400">84.29% <a href="KeyDB-7.0.0.html">detail</a></td></tr><tr><td>Kvrocks(latest)</td><td style="background:#ffa400">91.84% <a href="Kvrocks-4.0.0.html">detail</a></td><td style="background:#ffa400">92.27% <a href="Kvrocks-5.0.0.html">detail</a></td><td style="background:#ffa400">92.11% <a href="Kvrocks-6.0.0.html">detail</a></td><td style="background:#ffa400">82.57% <a href="Kvrocks-7.0.0.html">detail</a></td></tr><tr><td>MemoryDB(None)</td><td>-</td><td>-</td><td>-</td><td>-</td></tr><tr><td>Pika(latest)</td><td style="background:#f05654">79.89% <a href="Pika-4.0.0.html">detail</a></td><td style="background:#f05654">58.62% <a href="Pika-5.0.0.html">detail</a></td><td>-</td><td>-</td></tr><tr><td>Redis(latest)</td><td style="background:#40de5a">100.00% <a href="Redis-4.0.0.html">detail</a></td><td style="background:#40de5a">100.00% <a href="Redis-5.0.0.html">detail</a></td><td style="background:#40de5a">100.00% <a href="Redis-6.0.0.html">detail</a></td><td style="background:#40de5a">100.00% <a href="Redis-7.0.0.html">detail</a></td></tr><tr><td>TencentRedis(None)</td><td>-</td><td>-</td><td>-</td><td>-</td></tr><tr><td>Valkey(latest)</td><td style="background:#ffa400">98.98% <a href="Valkey-4.0.0.html">detail</a></td><td style="background:#ffa400">99.09% <a href="Valkey-5.0.0.html">detail</a></td><td style="background:#ffa400">99.12% <a href="Valkey-6.0.0.html">detail</a></td><td style="background:#ffa400">99.14% <a href="Valkey-7.0.0.html">detail</a></td></tr></tbody></table><br><h3>Cluster Databases</h3><table><thead><tr><th>Product / Redis Version</th><th>4.0.0</th><th>5.0.0</th><th>6.0.0</th><th>7.0.0</th></tr></thead><tbody><tr><td>AliyunRedisCluster(7.0)</td><td style="background:#ffa400">80.95% <a href="AliyunRedisCluster-4.0.0.html">detail</a></td><td style="background:#ffa400">83.10% <a href="AliyunRedisCluster-5.0.0.html">detail</a></td><td style="background:#ffa400">81.90% <a href="AliyunRedisCluster-6.0.0.html">detail</a></td><td style="background:#f05654">75.89% <a href="AliyunRedisCluster-7.0.0.html">detail</a></td></tr><tr><td>AliyunTairCluster(7.0)</td><td style="background:#ffa400">80.42% <a href="AliyunTairCluster-4.0.0.html">detail</a></td><td style="background:#ffa400">83.10% <a href="AliyunTairCluster-5.0.0.html">detail</a></td><td style="background:#ffa400">81.45% <a href="AliyunTairCluster-6.0.0.html">detail</a></td><td style="background:#f05654">75.89% <a href="AliyunTairCluster-7.0.0.html">detail</a></td></tr><tr><td>RedisCluster(latest)</td><td style="background:#f05654">74.07% <a href="RedisCluster-4.0.0.html">detail</a></td><td style="background:#f05654">77.00% <a href="RedisCluster-5.0.0.html">detail</a></td><td style="background:#f05654">76.47% <a href="RedisCluster-6.0.0.html">detail</a></td><td style="background:#f05654">69.35% <a href="RedisCluster-7.0.0.html">detail</a></td></tr></tbody></table><br>This report was generated on 2024-12-06 20:55:20.<style>table {border-collapse: collapse;} th, td {border: 1px solid black; padding: 8px;}</style>
\ No newline at end of file