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 × × 暂不支持事务相
关操作。