Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Azure云服务工作者角色上设置Redis_Azure_Redis_Azure Worker Roles_Azure Cloud Services - Fatal编程技术网

在Azure云服务工作者角色上设置Redis

在Azure云服务工作者角色上设置Redis,azure,redis,azure-worker-roles,azure-cloud-services,Azure,Redis,Azure Worker Roles,Azure Cloud Services,我正在创建一个云服务,其中有一个worker角色在后台运行一些繁重的处理,我希望Redis实例在worker上本地运行 我要做的是设置worker角色项目,以便在部署worker时安装/配置Redis实例 每次作业启动时,都会清除redis数据库 我已经看过了使用nuget安装的for windows,但我不确定如何在worker角色实例上实现这一点。有没有一种聪明的方法来设置它,还是通过命令行调用 谢谢。要在工作者角色实例上安装任何软件,您需要将其设置为启动任务 您将在ServiceDefin

我正在创建一个云服务,其中有一个worker角色在后台运行一些繁重的处理,我希望Redis实例在worker上本地运行

我要做的是设置worker角色项目,以便在部署worker时安装/配置Redis实例

每次作业启动时,都会清除redis数据库

我已经看过了使用nuget安装的for windows,但我不确定如何在worker角色实例上实现这一点。有没有一种聪明的方法来设置它,还是通过命令行调用


谢谢。

要在工作者角色实例上安装任何软件,您需要将其设置为启动任务

您将在ServiceDefinition.csdef文件中的
元素中引用启动任务,并引用安装所需软件(如Redis)的命令文件

我还没有尝试在工作者角色实例中安装Redis,所以我无法评论这是否会成功。您还需要担心打开正确的端口(无论是外部端口还是内部端口)和扩展(例如,当您扩展到两个工作角色实例时会发生什么,都运行redis?)。我的回答具体到如何在角色实例上安装软件


有关启动任务设置的更多信息,请参见。

我不希望将此标记为答案,但我只想补充一点,即对于实际部署来说,这是一种非常糟糕的方法

我可以从学习的角度理解为什么您可能希望这样做,但是在生产环境中这是一个非常糟糕的主意,原因有几个:

  • 您无法保证Azure Service Fabric何时会重新启动工作角色(并且您也不能保证在底层VM停止运行之前使其处于相同的状态)-您可能只是因为角色已重新启动而重新填充缓存
  • 在真实的Redis实现中,您可以在一个集群中运行多个节点,这样您就可以从以下功能中获益:a)在多个节点之间自动分割数据集的功能;b)当一部分节点出现故障时继续操作-在工作角色中运行不会给您带来任何好处。每次扩展工作人员角色时,您也会面临多个Redis实例(彼此不知道)的风险
  • 您将需要在Worker角色中管理您的Redis安装,而它们根本不是为此而设计的。PaaS工作者角色设计为运行已部署的工作者角色包,而不是其他任何角色。如果您真的想自己运行Redis,您可能应该看看IaaS VM

  • 我建议您看看Azure Redis Cache SaaS产品(请参阅),它提供了一个完全受管理、高度可用的Redis缓存实现。我在几个项目中使用了它,我可以强烈推荐。

    只是出于好奇-为什么要在本地使用Redis?我认为它只有在多个实例之间共享时才能支付安装费用。你认为在应用程序内存中使用简单的字典有什么好处吗?说真的,伙计,除非你想要一个痛苦的世界,否则不要这样做。相反,点击微软通过Azure提供的Redis缓存——速度非常快,或者使用一个本地内存哈希集。感谢你指出这一点,我想主要的想法是能够在不需要编码的情况下进行更复杂的查询,但我最终可能会使用内存字典。我希望它是本地的,因为数据只会在特定的工作期间用于特定的工作者角色,因此不需要引入网络延迟。嘿,谢谢你的回答,你说得很好。我已经开始将目光从本地redis移开,我知道Azure redis缓存,但对于我需要执行的作业,联系缓存的额外网络延迟会使作业速度太慢,因此我将考虑其他解决方案。