【问题标题】:Why i can't run lua script in redis after redis restart?为什么redis重启后我不能在redis中运行lua脚本?
【发布时间】:2013-05-17 12:46:36
【问题描述】:

我在运行 Lua 脚本时遇到问题,这就是我正在做的事情:

  1. 我使用 LOAD SCRIPT 将脚本加载到 redis 并获取我的脚本的 SHA。
  2. 我用 SHA 测试了我的脚本,没问题。
  3. 我执行了 SAVE(BGSAVE)、SHUTDOWN 并再次运行 redis 服务器,但我无法使用 SHA 执行我的脚本,而我以前可以这样做。

这是为什么?

【问题讨论】:

    标签: lua redis


    【解决方案1】:

    Redis 不会保存或存储服务器端 Lua 脚本。它们与 RDBMS 中的存储过程不同。

    客户端应该至少为脚本的第一次执行提供脚本的文本(即,第一次执行使用 EVAL,下一次调用使用 EVALSHA)。或者,您也可以使用 SCRIPT LOAD 和 SCRIPT EXISTS,根据情况可能会更方便。

    这对于应用程序来说处理起来有点复杂,但有好处:它使 Redis 服务器在 Lua 脚本方面无状态。应用程序的代码(包括 Lua 脚本)在应用程序端进行管理。在加载新版本的应用程序之前,您无需在 Redis 服务器上应用某些内容(即使 Lua 脚本已更改)。

    此属性在分布式基础架构的上下文中非常有用,可支持动态应用程序加载、客户端分片或 Redis 集群。

    【讨论】:

    • 谢谢你的回答,它非常有用,很抱歉我的英语不好:))
    猜你喜欢
    • 1970-01-01
    • 2016-11-09
    • 2016-08-10
    • 1970-01-01
    • 2012-06-30
    • 2012-05-18
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多