开发者社区> 问答> 正文

Redis使用Lua脚本支持与限制

Redis使用Lua脚本支持与限制

展开
收起
提个问题 2024-06-01 11:05:29 118 0
1 条回答
写回答
取消 提交回答
  • 支持的情况:
    高性能处理与CAS命令: 云数据库Redis实例支持Lua相关命令,利用Lua脚本可以高效处理CAS(Check-And-Set)命令,显著提升Redis的性能。
    提升操作模式: Lua脚本使得实现以往难以实现或效率低下的模式变得简单
    image.png
    限制情况:
    集群环境限制:
    小版本兼容性: 确保Redis Cluster的小版本满足要求,避免遇到 ERR command eval not support for normal user 报错,需升级小版本后重试。
    1
    2
    Keys在同一Slot上: 所有Key必须位于同一个哈希槽(Hash Slot)上,否则会报错 -ERR eval/evalsha command keys must be in same slot。可使用 CLUSTER KEYSLOT 命令确认。
    1
    2
    脚本加载不全局: 在单个节点执行 SCRIPT LOAD 不保证脚本会被其他节点存储。
    1
    2
    不支持功能:
    发布订阅命令: 不支持包括 PSUBSCRIBE, PUBSUB, PUBLISH, PUNSUBSCRIBE, SUBSCRIBE, UNSUBSCRIBE 在内的发布订阅命令。
    1
    2
    UNPACK函数: 不被支持。
    1
    2
    特定限制与绕过方法:
    Tair集群: Tair集群版有额外限制,可通过设置 script_check_enable 为 0 绕过部分检查,但这不被推荐且仍需遵循KEYS使用规则。
    Redis嵌套调用: 不支持Redis命令的嵌套调用,应使用局部变量方式代替。
    Key参数必需: 脚本执行时必须带有Key参数,否则会报错 -ERR for redis cluster, eval/evalsha number of keys can't be negative or zero。
    image.png

    参考文档

    2024-06-29 11:31:43
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Redis集群演化的心路历程——从2.x到3.0时代 立即下载
微博的Redis定制之路 立即下载
云数据库Redis版的开源之路 立即下载