• 沒有找到結果。

3.3 开发规范与命令兼容

3.3.3 命令兼容列表

用户在连接到GaussDB(for Redis)数据库后,需要关注以下支持以及限制的命令。

String 类型

3-8 String 类型支持与限制的命令 命令名称 GaussDB(for

Redis)是否支 持该命令

是否支持在 Lua脚本中执

是否需要给多 key增加相同 hashtag

备注

append √ √ ×

-decr √ √ ×

-decrby √ √ ×

-get √ √ ×

-getbit √ √ ×

-getrange √ √ ×

-getset √ √ ×

-incr √ √ ×

-incrby √ √ ×

-incrbyfloat √ √ ×

-mget √ √ √ O(n)

mset √ √ √ O(n)

msetnx √ √ √ O(n)

psetex √ √ ×

-set √ √ ×

-setbit √ √ ×

-setex √ √ ×

-setnx √ √ ×

-setrange √ √ ×

-strlen √ √ ×

-Hash 类型

3-9 Hash 类型支持与限制的命令 命令名称 GaussDB(for

Redis)是否支 持该命令

是否支持在 Lua脚本中执

是否需要给多 key增加相同 hashtag

备注

hdel √ √ ×

-hexists √ √ ×

-hget √ √ ×

-hgetall √ √ × O(n)

hincrby √ √ ×

-hincrbyfloat √ √ ×

-hkeys √ √ × O(n)

hlen √ √ ×

-hmget √ √ × O(n)

hmset √ √ × O(n)

hscan √ √ × 部分兼容。

在新建连接中首 次执行hscan命 令,需要从0开始 扫描。如需分多 次进行一轮完整 扫描,需保持在 同一个长连接中 操作。

hset √ √ ×

-hsetnx √ √ ×

-hstrlen √ √ ×

-hvals √ √ × O(n)

List 类型

3-10 List 类型支持与限制的命令 命令名称 GaussDB(for

Redis)是否支 持该命令

是否支持在 Lua脚本中执

是否需要给多 key增加相同 hashtag

备注

blpop × × × 该命令具有block

语义,暂不实 现。

brpop × × × 该命令具有block

语义,暂不实 现。

brpoplpush × × × 该命令具有block

语义,暂不实 现。

lindex √ √ ×

-linsert √ √ × O(n)

llen √ √ ×

-lpop √ √ ×

-lpush √ √ ×

-lpushx √ √ ×

-lrange √ √ × O(n)

lrem √ √ × O(n)

lset √ √ ×

-ltrim √ √ × O(n)

rpop √ √ ×

-rpoplpush √ √ √

-rpush √ √ ×

-rpushx √ √ ×

-Set 类型

3-11 Set 类型支持与限制的命令 命令名称 GaussDB(for

Redis)是否支 持该命令

是否支持在 Lua脚本中执

是否需要给多 key增加相同 hashtag

备注

sadd √ √ ×

-scard √ √ ×

-sdiff √ √ √ O(m*k)

k为集合个数,m 为集合内元素个 数。

sdiffstore √ √ √ O(m*k)

k为集合个数,m 为集合内元素个 数。

sinter √ √ √ O(m*n)

sinterstore √ √ √ O(m*n)

sismember √ √ ×

-smembers √ √ × O(n)

smove √ √ √

-spop √ √ ×

-srandmembe

r √ √ × O(n)

srem √ √ ×

-sscan √ √ × 部分兼容。

在新建连接中,

首次执行sscan命 令时,需要从0开 始扫描。如果需 要分多次进行一 轮完整扫描,需 保持在同一个长 连接中操作。

sunion √ √ √ O(m*k)

k为集合个数,m 为集合内元素个 数。

命令名称 GaussDB(for Redis)是否支 持该命令

是否支持在 Lua脚本中执

是否需要给多 key增加相同 hashtag

备注

sunionstore √ √ √ O(m*k)

k为集合个数,m 为集合内元素个 数。

ZSet 类型

3-12 ZSet 类型支持与限制的命令 命令名称 GaussDB(for

Redis)是否支 持该命令

是否支持在 Lua脚本中执

是否需要给多 key增加相同 hashtag

备注

bzpopmax × × × 该命令具有block

语义,暂不实 现。

bzpopmin × × × 该命令具有block

语义,暂不实 现。

zadd √ √ ×

-zcard √ √ ×

-zcount √ √ × O(n)

zincrby √ √ ×

-zinterstore √ √ √ O(m*n)

zlexcount √ √ × O(n)

zpopmax √ √ ×

-zpopmin √ √ ×

-zrange √ √ × O(n)

zrangebylex √ √ × O(n)

zrangebyscor

e √ √ × O(n)

zrank √ √ × O(n)

zrem √ √ ×

-zremrangeby

lex √ √ × O(n)

命令名称 GaussDB(for Redis)是否支 持该命令

是否支持在 Lua脚本中执

是否需要给多 key增加相同 hashtag

备注

zremrangeby

rank √ √ × O(n)

zremrangeby

score √ √ × O(n)

zrevrange √ √ × O(n)

zrevrangebyl

ex √ √ × O(n)

zrevrangebys

core √ √ × O(n)

zrevrank √ √ × O(n)

zscan √ √ × 部分兼容。

在新建连接中,

首次执行zscan命 令,需要从0开始 扫描。如果需要 分多次进行一轮 完整扫描,需保 持在同一个长连 接中操作。

zscore √ √ ×

-zunionstore √ √ √

-Stream 类型

3-13 Stream 类型支持与限制的命令 命令名称 GaussDB(for

Redis)是否支 持该命令

是否支持在 Lua脚本中执

是否需要给多 key增加相同 hashtag

备注

xack √ √ ×

-xadd √ √ ×

-xclaim √ √ ×

-xdel √ √ ×

-xgroup √ √ ×

-xinfo √ √ × O(n)

命令名称 GaussDB(for Redis)是否支 持该命令

是否支持在 Lua脚本中执

是否需要给多 key增加相同 hashtag

备注

xlen √ √ ×

-xpending √ √ ×

-xrange √ √ ×

-xread √ × √ 部分兼容。

xread命令会占用 内部有限连接资 源,使用时必须 搭配BLOCK选项 设置超时时间,

避免持续占用内 部连接资源,影 响其他命令的正 常执行。

xreadgroup √ × × 部分兼容。

xreadgroup命令 会占用内部有限 连接资源,使用 时必须搭配 BLOCK选项设置 超时时间,避免 持续占用内部连 接资源,影响其 他命令的正常执 行。

xrevrange √ √ ×

-xsetid x × × 暂不支持。

xtrim √ √ × O(n)

Hyperloglog 类型

3-14 Hyperloglog 类型支持与限制的命令 命令名称 GaussDB(for

Redis)是否支 持该命令

是否支持在 Lua脚本中执

是否需要给多 key增加相同 hashtag

备注

pfadd √ √ ×

-pfcount √ √ √

-pfdebug × × × 暂不支持。

命令名称 GaussDB(for Redis)是否支 持该命令

是否支持在 Lua脚本中执

是否需要给多 key增加相同 hashtag

备注

pfmerge √ √ √ O(n)

pfselftest x × × 暂不支持。

Geo 类型

3-15 Geo 类型支持与限制的命令 命令名称 GaussDB(for

Redis)是否支 持该命令

是否支持在 Lua脚本中执

是否需要给多 key增加相同 hashtag

备注

geoadd √ √ ×

-geodist √ √ ×

-geohash √ √ ×

-geopos √ √ ×

-georadius √ √ √ O(N+logM)

如果该命令搭配 store、storedist 选项使用,相当 于使用了多key,

此时需要给多key 增加相同hashtag。

georadius_ro x × × 暂不支持。

georadiusby

member √ √ √ O(N+logM)

georadiusby

member_ro x × × 暂不支持。

Bitop 类型

3-16 Bitop 类型支持与限制的命令 命令名称 GaussDB(for

Redis)是否支 持该命令

是否支持在 Lua脚本中执

是否需要给多 key增加相同 hashtag

备注

bitcount √ √ ×

-命令名称 GaussDB(for Redis)是否支 持该命令

是否支持在 Lua脚本中执

是否需要给多 key增加相同 hashtag

备注

bitfield √ √ ×

-bitop √ √ √

-bitpos √ √ ×

-Key 管理

3-17 Key 管理支持与限制的命令 命令名称 GaussDB(for

Redis)是否支 持该命令

是否支持在 Lua脚本中执

是否需要给多 key增加相同 hashtag

备注

debug x × × 暂不支持。

del √ √ √

-dump x × × 暂不支持。

exists √ √ √

-expire √ √ ×

-expireat √ √ ×

-migrate x × × 暂不支持。

move x × × 不存在多DB的设

计,不涉及该命 令。

object x × × 内部存储协议与

开源不同,不支 持查看。

persist √ √ ×

-pexpire √ √ ×

-pexpireat √ √ ×

-pttl √ √ ×

-randomkey √ √ ×

-rename x × × 暂不支持。

renamenx x × × 暂不支持。

命令名称 GaussDB(for Redis)是否支 持该命令

是否支持在 Lua脚本中执

是否需要给多 key增加相同 hashtag

备注

restore x × × 持久化存储原理

不同,不涉及该 命令。

restore-asking x × × 持久化存储原理

不同,不涉及该 命令。

scan √ × × 部分兼容。

在新建连接中,

首次执行scan命 令,需要从0开始 扫描。如需分多 次进行一轮完整 扫描,需保持在 同一个长连接中 操作。

sort √ √ √ 部分兼容。

暂不支持store选 项,即按照给定 规则排序后,不 能自动按序转储 到另一个key中。

touch x × × 暂不支持。

ttl √ √ ×

-type √ √ × 部分兼容。

如果不同数据类 型使用了同名 key,则type命令 按照 string、

hash、list、

zset、set、

stream的顺序查 找key,并返回第 一个找到的类 型。

unlink x × × 该命令具有block

语义,暂不实 现。

数据库管理

3-18 数据库管理支持与限制的命令 命令名称 GaussDB(for

Redis)是否支 持该命令

是否支持在 Lua脚本中执

是否需要给多 key增加相同 hashtag

备注

auth √ × ×

-bgrewriteaof x × × 持久化存储原理

不同,不涉及该 命令。

bgsave x × × 持久化存储原理

不同,不涉及该 命令。

client √ × × 部分兼容。

仅支持client list 命令。

command √ × ×

-config √ × × 部分兼容。

暂不支持通过 config set命令调 整参数。

dbsize √ √ × 部分兼容。

由于采用MVCC机 制,查询结果为 key数量的预估 值,非实时的准 确值。在执行 flushall之后,

dbsize为0。

echo √ √ ×

-flushall √ × × 该命令会导致实

例所有数据被清 空,请谨慎使 用。

flushdb x × × 内部命令,不允

许用户执行。

info √ × × 部分兼容。

较开源redis增加 了部分信息项。

命令名称 GaussDB(for Redis)是否支 持该命令

是否支持在 Lua脚本中执

是否需要给多 key增加相同 hashtag

备注

info keyspace × × × 不支持,目前不

支持物理多DB,

可使用dbsize命 令。

info capacity √ √ × 仅GaussDB(for Redis)支持该命 令。查询结果为 磁盘容量的预估 值,非实时的准 确值。执行 flushall之后,建 议通过dbsize命令 查看数据是否清 空。

keys x × × 高危命令,不允

许用户执行。

lastsave x × × 持久化存储原理

不同,不涉及该 命令。

latency x × × 暂不支持。

lolwut x × × 开源redis彩蛋命

令。

memory x × × 使用云服务时无

需关心系统状 态,暂不开放。

module x × × 暂不支持。

monitor x × × 内部命令,不允

许用户执行。

ping √ √ ×

-post x × × 暂不支持。

psync x × × 不存在主从关

系,相关命令不 涉及。

replconf x × × 不存在主从关

系,相关命令不 涉及。

replicaof x × × 不存在主从关

系,相关命令不 涉及。

命令名称 GaussDB(for Redis)是否支 持该命令

是否支持在 Lua脚本中执

是否需要给多 key增加相同 hashtag

备注

role x × × 不存在主从关

系,相关命令不 涉及。

save x × × 持久化存储原理

不同,不涉及该 命令。

shutdown × × × 不支持。

slaveof x × × 不存在主从关

系,相关命令不 涉及。

slowlog x × × 可通过管理控制

台查看慢日志。

sync x × × 不存在主从关

系,相关命令不 涉及。

time √ √ ×

-select √ × × 部分兼容。

由于系统架构不 存在多DB的设 计,因此该命令 空执行。

swapdb x × × 不存在多DB的设

计,不涉及该命 令。

脚本

3-19 脚本支持与限制的命令 命令名称 GaussDB(for Redis)是否支 持该命令

是否支持在 Lua脚本中执

是否需要给多 key增加相同 hashtag

备注

eval √ × √ 详情请参见Lua脚

本规范。

evalsha √ × √ 详情请参见Lua脚

本规范。

script √ × × 详情请参见Lua脚

本规范。

Pub/Sub 类型

3-20 Pub/Sub 类型支持与限制的命令 命令名称 GaussDB(for

Redis)是否支 持该命令

是否支持在 Lua脚本中执

是否需要给多 key增加相同 hashtag

备注

psubscribe √ × × 在执行pub/sub命

令的连接时,不 允许执行常规命 令(如set/get 等),因为 GaussDB(forRedi s)多线程架构下,

常规命令会通过 多线程执行来提 升性能,但是由 于pubsub命令采 用专有线程处 理,普通命令和 pubsub混用连接 后会导致普通命 令也无法使用多 线程,从而影响 影响性能。

publish √ × ×

-pubsub √ × ×

-punsubscribe √ × ×

-subscribe √ × × 在执行pub/sub命

令的连接时,不 允许执行常规命 令(如set/get 等),因为 GaussDB(for Redis)多线程架构 下,常规命令会 通过多线程执行 来提升性能,但 是由于pubsub命 令采用专有线程 处理,普通命令 和pubsub混用连 接后会导致普通 命令也无法使用 多线程,从而影 响影响性能。

unsubscribe √ × ×

-事务

3-21 事务类型支持与限制的命令 命令名称 GaussDB(for

Redis)是否支 持该命令

是否支持在 Lua脚本中执

是否需要给多 key增加相同 hashtag

备注

discard x × × 暂不支持事务相

关操作。

exec x × × 暂不支持事务相

关操作。

multi x × × 暂不支持事务相

关操作。

unwatch x × × 暂不支持事务相

关操作。

wait x × × 暂不支持事务相

关操作。

watch x × × 暂不支持事务相

关操作。