在Azure云服务工作者角色上设置Redis
我正在创建一个云服务,其中有一个worker角色在后台运行一些繁重的处理,我希望Redis实例在worker上本地运行 我要做的是设置worker角色项目,以便在部署worker时安装/配置Redis实例 每次作业启动时,都会清除redis数据库 我已经看过了使用nuget安装的for windows,但我不确定如何在worker角色实例上实现这一点。有没有一种聪明的方法来设置它,还是通过命令行调用在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
谢谢。要在工作者角色实例上安装任何软件,您需要将其设置为启动任务 您将在ServiceDefinition.csdef文件中的
元素中引用启动任务,并引用安装所需软件(如Redis)的命令文件
我还没有尝试在工作者角色实例中安装Redis,所以我无法评论这是否会成功。您还需要担心打开正确的端口(无论是外部端口还是内部端口)和扩展(例如,当您扩展到两个工作角色实例时会发生什么,都运行redis?)。我的回答具体到如何在角色实例上安装软件
有关启动任务设置的更多信息,请参见。我不希望将此标记为答案,但我只想补充一点,即对于实际部署来说,这是一种非常糟糕的方法 我可以从学习的角度理解为什么您可能希望这样做,但是在生产环境中这是一个非常糟糕的主意,原因有几个:
我建议您看看Azure Redis Cache SaaS产品(请参阅),它提供了一个完全受管理、高度可用的Redis缓存实现。我在几个项目中使用了它,我可以强烈推荐。只是出于好奇-为什么要在本地使用Redis?我认为它只有在多个实例之间共享时才能支付安装费用。你认为在应用程序内存中使用简单的字典有什么好处吗?说真的,伙计,除非你想要一个痛苦的世界,否则不要这样做。相反,点击微软通过Azure提供的Redis缓存——速度非常快,或者使用一个本地内存哈希集。感谢你指出这一点,我想主要的想法是能够在不需要编码的情况下进行更复杂的查询,但我最终可能会使用内存字典。我希望它是本地的,因为数据只会在特定的工作期间用于特定的工作者角色,因此不需要引入网络延迟。嘿,谢谢你的回答,你说得很好。我已经开始将目光从本地redis移开,我知道Azure redis缓存,但对于我需要执行的作业,联系缓存的额外网络延迟会使作业速度太慢,因此我将考虑其他解决方案。