您是否需要在Redis脚本中提前声明密钥?

林肯

我的计划是将一些现有的Redis密钥存储在散列中,稍后再从Redis Lua脚本中获取并采取行动。我读到,最好的做法是提供调用时脚本中使用的所有键EVAL

我的问题是,运行在运行时没有提供任何键EVAL但对从脚本内部获取的某些键进行操作的脚本是否安全?如果没有,后果是什么,如何避免这一缺点?

我提到在的时候EVAL,无法知道该特定哈希中的键是什么。我可以在步骤之前的某个步骤中从哈希中获取所有键EVAL,然后将其提供给EVAL,但这听起来像是过分杀了。

凯文·克里斯托弗·亨利

由于文档中的含糊不清,这个问题被问了很多(例如,请参见thisthis),但是我将借此机会尝试指定用于管理Redis脚本中键的使用的实际规则。

实际规则是这样的:您的脚本必须仅访问驻留在单个服务器上的密钥,并且Redis必须知道该服务器是什么,以便它将脚本路由到那里。

如果您不使用Redis Cluster,则将始终满足这些条件,因为只有一台服务器。

如果使用Redis Cluster,则必须至少指定一个密钥,并且脚本使用的所有密钥必须与指定的密钥位于同一服务器上。

因此,请回答您的问题:如果您不使用集群,您的脚本将可以正常工作。结果是,如果您以后切换到集群,它将无法正常工作,因为Redis不知道将脚本发送到哪里。

Redis也可能会更改为执行已记录的规则,从而使所有动态生成密钥的脚本无效。我认为这将是一个严重的错误,而且我认为这不会发生。但是,如果没有其他规定,则指定密钥对于文档很有用,因此,如果我碰巧事先知道密钥,我总是这样做。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

您是否需要在视图中使用ng-Controller还是可以仅在$ routeProvider中声明它?

来自分类Dev

您是否需要在<head>中预加载字体并将它们在CSS中声明为字体?

来自分类Dev

您是否需要在sklearn中缩放Vectorizer?

来自分类Javascript

您是否需要在<script>标记中指定的文本/ javascript?

来自分类Dev

您是否需要在项目中附带原始文件?

来自分类Dev

您是否需要在主类中扩展JApplet?

来自分类Java

我是否需要在每次需要时声明Jackson的ObjectMapper?

来自分类Dev

我需要在Redis脚本中使用MULTI / EXEC吗

来自分类Dev

是否需要在本地表中声明本地函数或变量?

来自分类Dev

int main()是否需要在C ++上进行声明?

来自分类Dev

您是否需要在kdevelop中创建2个用于调试和发布的独立项目?

来自分类Dev

您是否需要在Dart中使用“ new”关键字?

来自分类Dev

您是否需要在switch语句JS中使用默认值

来自分类Dev

您是否需要在ARC下调用dispatch_group_release?

来自分类Dev

您是否需要在分区表上添加索引(postgres 11)?

来自分类Dev

您是否需要在node.js中使用path.join?

来自分类Dev

在C ++中,您是否需要在两个方向上重载operator ==?

来自分类Dev

您是否需要在 gtag 中为默认事件设置 non_interaction 参数?

来自分类Dev

您是否需要在.NET中同时设置Response.Status和Response.StatusCode?

来自分类Dev

WorkManager:您是否需要在Worker中手动处理Observables?

来自分类Dev

您是否需要在ac#应用程序的多个oracle sql执行之间“提交”?

来自分类Dev

您是否需要在fstab中指定“默认值”选项?

来自分类Dev

您是否需要在del_timer()之后再次调用init_timer()

来自分类Dev

您是否需要访问令牌和消费者密钥来搜索 Twitter?

来自分类Dev

您是否需要清空对象?

来自分类Dev

SpriteKit-您是否需要执行内存管理?(不再需要在场景之后删除节点,等等。)

来自分类Dev

您是否应该提前了解每次测试的依赖性

来自分类Dev

您是否需要在jQuery的document.ready中放置一个kickout.js绑定处理程序?

来自分类Dev

对于 FAB-1151 隐私解决方案,您是否需要在使用 XXXPrivateData API 函数之前预先定义集合?

Related 相关文章

  1. 1

    您是否需要在视图中使用ng-Controller还是可以仅在$ routeProvider中声明它?

  2. 2

    您是否需要在<head>中预加载字体并将它们在CSS中声明为字体?

  3. 3

    您是否需要在sklearn中缩放Vectorizer?

  4. 4

    您是否需要在<script>标记中指定的文本/ javascript?

  5. 5

    您是否需要在项目中附带原始文件?

  6. 6

    您是否需要在主类中扩展JApplet?

  7. 7

    我是否需要在每次需要时声明Jackson的ObjectMapper?

  8. 8

    我需要在Redis脚本中使用MULTI / EXEC吗

  9. 9

    是否需要在本地表中声明本地函数或变量?

  10. 10

    int main()是否需要在C ++上进行声明?

  11. 11

    您是否需要在kdevelop中创建2个用于调试和发布的独立项目?

  12. 12

    您是否需要在Dart中使用“ new”关键字?

  13. 13

    您是否需要在switch语句JS中使用默认值

  14. 14

    您是否需要在ARC下调用dispatch_group_release?

  15. 15

    您是否需要在分区表上添加索引(postgres 11)?

  16. 16

    您是否需要在node.js中使用path.join?

  17. 17

    在C ++中,您是否需要在两个方向上重载operator ==?

  18. 18

    您是否需要在 gtag 中为默认事件设置 non_interaction 参数?

  19. 19

    您是否需要在.NET中同时设置Response.Status和Response.StatusCode?

  20. 20

    WorkManager:您是否需要在Worker中手动处理Observables?

  21. 21

    您是否需要在ac#应用程序的多个oracle sql执行之间“提交”?

  22. 22

    您是否需要在fstab中指定“默认值”选项?

  23. 23

    您是否需要在del_timer()之后再次调用init_timer()

  24. 24

    您是否需要访问令牌和消费者密钥来搜索 Twitter?

  25. 25

    您是否需要清空对象?

  26. 26

    SpriteKit-您是否需要执行内存管理?(不再需要在场景之后删除节点,等等。)

  27. 27

    您是否应该提前了解每次测试的依赖性

  28. 28

    您是否需要在jQuery的document.ready中放置一个kickout.js绑定处理程序?

  29. 29

    对于 FAB-1151 隐私解决方案,您是否需要在使用 XXXPrivateData API 函数之前预先定义集合?

热门标签

归档