文档中心>云数据库 Redis®>命令参考>Redis 大版本命令使用差异

Redis 大版本命令使用差异

最近更新时间:2025-08-01 15:18:12

我的收藏
命令/功能
云 Redis 5.0
云 Redis 6.2
云 Redis7.0
说明
RESP3
-
-
-
目前产品不支持,请评估业务框架是否存在使用HELLO 3 auth username password形式进行认证,使用 resp3 协议,需要降级为 resp2协议。
ACL
-
-
-
当前产品暂不支持 ACL,需业务确认是否依赖该功能。该限制同时影响所有涉及 ACL 用户的命令接口,包括 acl、auth、migrate auth 及 client kill user 等。
Module
-
-
-
当前版本暂不支持 module,请业务确认是否启用相关功能。
client-side-caching
-
-
-
当前版本暂不支持,业务需确认是否依赖客户端缓存优化。
pub/sub
-
-
-
腾讯云 Redis 集群版对 PUBSUB 命令进行了增强,具体信息,请参见 Proxy 架构与直连模式的使用差异
集群多 DB
集群支持多 DB
建议不使用也不依赖多 DB 功能。该功能开放 select、swapdb 等命令;部分客户端会以 select 是否成功来判断节点是否处于集群模式,存在误判风险。
lua readonly table
不允许定义非本地函数
社区为修复 CVE 安全漏洞,在 Lua 沙箱中启用了只读表保护,禁止再定义全局(非 local)函数,否则执行时直接报错:ERR Attempt to modify a readonly table ...。请全量扫描所有 eval、script、function 等 Lua 调用,把所有自定义函数显式改为 local 定义:eval "local function xxx() return 'hello' end" 0
说明:
该变更属于 breaking change,但社区以小版本安全补丁形式发布,不同云厂商、不同大/小版本可能存在差异(回退或未移植)。
不要依赖任何旧写法,业务必须自行保证规范,避免线上故障。
lua print
允许 lua print
不允许 lua print
社区为修复 CVE 安全漏洞,已将 Lua 沙箱中的 print 函数彻底移除(breaking change)。继续使用将直接报错:ERR ... nonexistent global variable 'print' ...
请全量排查所有 eval、script 等 Lua 脚本,删除或替换所有 print(...) 调用,如需输出日志,改用官方 API:redis.log(redis.LOG_NOTICE, 'hello')
script load
script load 脚本会被编译并放入缓存,同时这条指令本身(含脚本内容)会被作为一条写命令传播给所有从节点,保证从节点拥有同样的脚本缓存。
如果 AOF 持久化已开启,SCRIPT LOAD 会被原样写入 AOF,格式与客户端发来的命令一致。
社区版 Redis 7.0 开始不再持久化 lua 脚本,云上7.0保留 lua 持久化。
script flush
script flush 命令执行会进行主从传播和写入 AOF 文件。主节点清空本地脚本缓存,也会把这条 FLUSH 命令同步给从节点,使从节点同样清空缓存,防止主从脚本缓存不一致。
如果 AOF 持久化已开启,script flush 同样会写入 AOF。
lua 脚本持久化
主从复制 RDB 里会保存 lua 脚本。
lua eval 脚本驱逐
云上所有大版本的最新小版本均支持脚本驱逐。
说明:
为防止因把参数拼进脚本正文而滥用 EVAL,Redis 引入500条 LRU 驱逐机制:仅对 EVAL 生成的脚本做淘汰,超限后按最久最少使用顺序自动释放,SCRIPT LOAD 的脚本不受影响。
业务无需任何改动,该变更仅将社区高版本行为向后移植,与官方最新版保持一致。
注意:
在常规场景下,脚本由 EVAL 每次完整下发,即使因 LRU 机制被驱逐也不会影响业务;但若用户采用非常规方式,先用 EVAL 把脚本载入服务器并自行计算 SHA,再转而使用 EVALSHA 调用,则当单次事务涉及的脚本数量超过500时,最早最少使用的脚本可能被驱逐,导致后续 EVALSHA 返回 NOSCRIPT 错误,事务失败。
lua 内存滥用限制
云上所有大版本的最新小版本均支持 lua 内存限制。
说明:
社区版 Lua 在执行写命令时不校验 maxmemory,可被恶意脚本(如无限循环 SET,
EVAL "for i=1,10000000000 do redis.call('SET', 'key-:' .. i, 'value-:' .. i) end" 0)绕过内存上限;云环境为防机器 OOM,在 Lua 执行过程中实时检测,一旦超限立即返回 OOM 错误。
正常业务无需关注,只要实例 maxmemory 充足即可;云侧提供参数 extra-maxmemory,必要时可为实例预留额外空间。
注意:
若触发 OOM,Lua 脚本将中途报错,无法保证原子性。
字典 rehash 优化
云上所有大版本的最新小版本均支持字典 rehash 优化。
说明:
在社区版字典的实现中,采用了包含主动 rehash 和被动 rehash 的渐进式 rehash 机制。其中,被动 rehash 发生在处理每个用户请求期间,该请求会额外触发渐进式 rehash 操作,导致请求需要执行更多的内存访问,进而增加请求时延并降低节点吞吐量。为优化性能,云上版本将关闭字典的被动 rehash 功能,仅保留主动 rehash。
注意:
关闭被动 rehash,字典的 rehash 过程速度将有所放缓,可能导致字典中哈希冲突概率的细微增加,同时字典在 rehash 期间使用的临时内存会在监控指标上停留比社区版更长的时间。然而,用户请求在 rehash 期间基本不会因为被动 rehash 而产生额外的性能抖动,这对大部分应用场景下的用户体验是有利的。仅在少数极端场景下,例如存在非常高频的写入操作时,其性能表现会回退到接近社区版的水平。云上版本为此提供了 passive-rehash-enabled 配置项,用于灵活控制是否启用被动 rehash 这一行为。
副本主从断连重定向
云上所有大版本的最新小版本均支持副本主从断连重定向。
说明:
当副本与主节点的连接断开时,在故障转移(failover)完成恢复之前,到达副本的读请求将被重定向至主节点,以避免在副本处于只读状态时因连接断开而提供陈旧数据。
业务无需特别处理。

info/client info/client list
各版本支持字段不一定完全兼容社区版,proxy 侧会按需屏蔽敏感字段。具体信息,请参见 Proxy 架构与直连模式的使用差异
请自查业务是否依赖 client 命令;如非必需,请避免执行 client list,以免慢查询和节点内存暴涨。
cluster slots
集群版 cluster slots 命令将屏蔽、转换部分敏感信息。
具体信息,请参见 Proxy 架构与直连模式的使用差异
auth/migrate auth/client kill user/acl setuser 等等等
无 ACL 组件
不支持 ACL 相关接口
-
command/
command info
command 命令是为客户端类库提供命令的元数据信息,以便其进行路由决策、重定向等操作。
业务无需特别处理。
geo* store
在 Redis 6.2 和7.0版本中修复了以下问题:对于支持 STORE 选项的 GEO 命令(如 GEORADIUS、GEORADIUSBYMEMBER、GEOSEARCHSTORE),当源键 (source key) 为空键时,其行为由原先的“返回空数组且不删除目标键”修改为“删除目标键并返回0”。

zrangestore
修复了 ZRANGESTORE 命令在配置项 zset-max-ziplist-entries 被设置为0时会导致 Redis 崩溃 (crash) 的问题。
-
lpop/rpop coun
6.2.7与7.0.0统一修复了 LPOP/RPOP 的返回行为:
1. 当键存在且 count = 0 时,返回空数组 [](旧版返回 nil);
2. 当键不存在且带 count 参数时,返回长度为 -1 的空数组 [](旧版返回 nil)。