gpt4 book ai didi

lua - 为什么在redis重启后我不能在redis中运行lua脚本?

转载 作者:IT王子 更新时间:2023-10-29 06:03:07 24 4
gpt4 key购买 nike

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

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

这是为什么?

最佳答案

服务器端的Lua脚本不被Redis保存或存储。它们与您在 RDBMS 中找到的存储过程不同。

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

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

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

关于lua - 为什么在redis重启后我不能在redis中运行lua脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16692233/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com