当前位置: 首页 > 面试题库 >

为什么在调用Redis Lua脚本时会有KEYS和ARGV数组?

岑驰
2023-03-14
问题内容

从Redis调用Lua脚本时,可以在两个数组中传递值:KEYS和ARGV。有什么区别?Redis如何处理KEYS数组中的值?如果在我的脚本中必须使用运行时动态生成的密钥怎么办?


问题答案:

您的所有问题都会在EVAL页面上得到回答,但是自从您问到…:

有什么区别?

KEYS用于传递键名称,而ARGS应用于其他任何名称。这不是完全强制执行的(即,大多数情况下您可以将它们混合使用),但如果不遵循,可能会导致潜在的问题。

Redis如何处理KEYS数组中的值?

KEYS检查的内容,以验证所有键都可用于运行脚本的Redis分片。可以使用此机制来允许在Redis群集部署中运行脚本。

如果在我的脚本中必须使用运行时动态生成的密钥怎么办?

查看先前的答案-可行,但您会违反建议。您的脚本仅在独立的Redis实例上运行是安全的,并且由于未指定此行为,因此在将来的版本中可能会中断。



 类似资料:
  • 问题内容: 精油 这到底是什么! 编辑:如果可以的话,请您写一两行并说明其工作原理? 问题答案: 试试这个简单的程序,命名为 并尝试执行 注意什么是argv。

  • 我正在尝试使用JS SDK在Dropbox上上传一个文件。下面是我试图调用函数的html代码: 这是定义函数的文件 但是,由于我不知道的原因,我的函数不能被调用。我得到错误“referenceerror:Dropupload is not defined”,我不知道这是否与问题有关,但我得到另一个错误:“syntaxerror:import declarations may only at top

  • 问题内容: 代码是这样的: 但是我还是很困惑。答案说: 第一个参数是要执行的程序(位于PATH上)。其余的是程序的sys.argv参数。 但是,如果我运行:并且此过程的将会是,其中不存在。那为什么要添加作为的第二个参数呢? 问题答案: 执行python时,它将为您创建。该列表中的值是 基于 操作系统传递给它的参数的,但它 会将该列表中的值 保留下来 。 换句话说,当调用Python时,它将设置为

  • 问题内容: 假设我编写了一些执行AJAX调用的JavaScript,并将其作为一种回调方法在AJAX成功时执行。 假设异步调用时在我的页面上调用了其他一些JavaScript方法。 一个操作是否优先于另一个操作?它们都同时运行吗?怎么了? 问题答案: 假设异步调用时在我的页面上调用了其他一些JavaScript方法。 一个操作是否优先于另一个操作?它们都同时运行吗?怎么了? 浏览器上的JavaSc

  • 我有一个SQS队列,用作Lambda函数的事件源。由于DB连接限制,我将Lambda函数的最大并发设置为5。 在正常情况下,一切正常,但是当我们需要进行更改时,我们故意禁用SQS触发器。消息按预期开始在SQS队列中备份。 当触发器被重新启用时,5个Lambda函数被实例化,并开始处理队列中的消息,但是我也看到CloudWatch告诉我Lambda被限制了。 有人能解释一下为什么会这样吗?我希望可用

  • 我对Ant非常陌生(我来自Maven),我发现了很多问题来做下面的操作。 我有一个名为CrystalIceGUI主项目,它使用了另一个名为ShellextBridge的依赖项项目。 依赖项目ShellExtBridge有一个自己的build.xml文件,该文件编译项目并将其打包到一个jar文件中,该jar文件被插入名为Release的direcotry中 主项目CrystalIceGUI有它的bu