AI 技能AI 插件【免费下载链接】agentic-awesome-skillsAAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,400 agentic skills. Includes CLI, local MCP, catalog, plugins, and Workbench.项目地址https://gitcode.com/gh_mirrors/an/agentic-awesome-skills点击查看免费下载导读本文基于 agentic-awesome-skills 仓库中的azure-resource-manager-redis-dotnet技能文档系统讲解如何通过 Azure Resource ManagerARM管理平面 SDK 在 .NET 应用中完成 Azure Cache for Redis 的创建、配置、更新、删除与运维。读完本文你将掌握ArmClient资源层级导航、10 个核心生命周期工作流含防火墙规则、补丁计划、导入导出、强制重启等、SKU 与容量选型以及如何与StackExchange.Redis数据面 SDK 无缝衔接直接可落地到真实的 .NET 云资源管理项目中。一、技能定位管理面 vs 数据面在开始编码之前必须先明确 Azure Cache for Redis 的两类 SDK 边界。本技能文档在第一屏就给出了清晰的划分管理面Management Plane即本文主角Azure.ResourceManager.Redis负责资源本身的生命周期——创建缓存、配置防火墙规则、管理访问密钥、设置异地复制geo-replication、配置补丁计划等。数据面Data Plane即StackExchange.Redis负责缓存中的数据——get/set 键值、pub/sub 发布订阅、streams、Lua 脚本执行等。从仓库元数据看该技能在 data/catalog.json 中被归类为category: cloud、risk: critical、source: community标签为azure/resource/manager/redis/dotnet其triggers包含azure、resource、manager、redis、dotnet、sdk、net。这意味着当 Agent 的输入中命中这些关键词时即可自动唤起本技能来完成 Azure Redis 资源的 ARM 管理任务。仓库中还收录了面向自托管 Redis 服务器的 redis 技能配置、集群、Sentinel、持久化与本文的 Azure 托管场景形成互补前者管自己部署的 Redis后者管Azure 云上的 Redis 资源。二、安装与项目环境在 .NET 项目中添加两个 NuGet 包即可开始dotnet add package Azure.ResourceManager.Redis dotnet add package Azure.Identity技能文档标注的版本信息如下当前版本1.5.1StableAPI 版本2024-11-01目标框架.NET 8.0、.NET Standard 2.0Azure.Identity用于提供DefaultAzureCredential认证Azure.ResourceManager.Redis则承载全部 Redis 管理操作。值得注意的是.NET Standard 2.0支持意味着该 SDK 也适用于面向 .NET Framework 兼容场景或类库项目的场景但生产环境仍建议使用 .NET 8.0 及以上的 LTS 版本。环境变量SDK 运行时依赖以下环境变量建议通过 CI/CD 变量或 Key Vault 注入而非硬编码在源码中AZURE_SUBSCRIPTION_IDyour-subscription-id # For service principal auth (optional) AZURE_TENANT_IDtenant-id AZURE_CLIENT_IDclient-id AZURE_CLIENT_SECRETclient-secret其中AZURE_SUBSCRIPTION_ID是必需项构造订阅资源用当使用服务主体Service Principal认证时才需要后三个变量。三、认证始终使用 DefaultAzureCredential管理面 SDK 的认证入口是ArmClient配合DefaultAzureCredential可以按顺序尝试多种身份来源环境变量、Azure CLI 登录态、托管身份等适合本地开发与云端部署的无缝切换using Azure.Identity; using Azure.ResourceManager; using Azure.ResourceManager.Redis; // Always use DefaultAzureCredential var credential new DefaultAzureCredential(); var armClient new ArmClient(credential); // Get subscription var subscriptionId Environment.GetEnvironmentVariable(AZURE_SUBSCRIPTION_ID); var subscription armClient.GetSubscriptionResource( new ResourceIdentifier($/subscriptions/{subscriptionId}));技能文档强调的核心原则是永远不要硬编码密钥——认证凭据的获取交给DefaultAzureCredential而访问密钥access keys则通过 API 动态获取见下文获取/轮换访问密钥。四、资源层级Resource HierarchyARM SDK 采用层级化的资源模型所有操作都从ArmClient出发向下导航ArmClient └── SubscriptionResource └── ResourceGroupResource └── RedisResource ├── RedisFirewallRuleResource ├── RedisPatchScheduleResource ├── RedisLinkedServerWithPropertyResource ├── RedisPrivateEndpointConnectionResource └── RedisCacheAccessPolicyResource理解这条层级链是使用本 SDK 的关键上层资源的Get*方法返回下层资源的集合或单资源句柄例如resourceGroup.Value.GetAllRedis()拿到缓存集合cache.Value.GetRedisFirewallRules()拿到防火墙规则集合。这种从 ArmClient 逐级下钻的写法贯穿本文全部示例。五、核心工作流10 个完整示例1. 创建 Redis 缓存创建是典型的长时间运行操作LRO使用CreateOrUpdateAsync并传入RedisCreateOrUpdateContentusing Azure.ResourceManager.Redis; using Azure.ResourceManager.Redis.Models; // Get resource group var resourceGroup await subscription .GetResourceGroupAsync(my-resource-group); // Define cache configuration var cacheData new RedisCreateOrUpdateContent( location: AzureLocation.EastUS, sku: new RedisSku(RedisSkuName.Standard, RedisSkuFamily.BasicOrStandard, 1)) { EnableNonSslPort false, MinimumTlsVersion RedisTlsVersion.Tls1_2, RedisConfiguration new RedisCommonConfiguration { MaxMemoryPolicy volatile-lru }, Tags { [environment] production } }; // Create cache (long-running operation) var cacheCollection resourceGroup.Value.GetAllRedis(); var operation await cacheCollection.CreateOrUpdateAsync( WaitUntil.Completed, my-redis-cache, cacheData); RedisResource cache operation.Value; Console.WriteLine($Cache created: {cache.Data.HostName});要点拆解RedisSku(RedisSkuName.Standard, RedisSkuFamily.BasicOrStandard, 1)三个参数分别是 SKU 名称、家族Family、容量Capacity。EnableNonSslPort false关闭 6379 非 SSL 端口强制走 SSL 连接。MinimumTlsVersion RedisTlsVersion.Tls1_2最低 TLS 1.2满足安全合规基线。MaxMemoryPolicy volatile-lru内存淘汰策略只淘汰设置了过期时间的键volatile保留长期缓存。Tags打上environmentproduction之类的资源标签便于成本核算与资源分组。2. 获取缓存详情读取既有缓存及其连接端点信息// Get existing cache var cache await resourceGroup.Value .GetRedisAsync(my-redis-cache); Console.WriteLine($Host: {cache.Value.Data.HostName}); Console.WriteLine($Port: {cache.Value.Data.Port}); Console.WriteLine($SSL Port: {cache.Value.Data.SslPort}); Console.WriteLine($Provisioning State: {cache.Value.Data.ProvisioningState});HostName、Port、SslPort是后续构造连接字符串的必备数据ProvisioningState用于判断缓存是否就绪Succeeded才能接收数据面连接。3. 更新缓存配置升配、改内存策略等通过UpdateAsync完成注意降配不允许见常见陷阱var patchData new RedisPatch { Sku new RedisSku(RedisSkuName.Standard, RedisSkuFamily.BasicOrStandard, 2), RedisConfiguration new RedisCommonConfiguration { MaxMemoryPolicy allkeys-lru } }; var updateOperation await cache.Value.UpdateAsync( WaitUntil.Completed, patchData);此处将容量从 1 提升到 2并把淘汰策略从volatile-lru改为allkeys-lru允许淘汰所有键适合纯缓存场景。4. 删除缓存await cache.Value.DeleteAsync(WaitUntil.Completed);删除是不可逆操作生产环境执行前务必确认数据已通过导出见导入/导出数据或持久化保存。5. 获取访问密钥var keys await cache.Value.GetKeysAsync(); Console.WriteLine($Primary Key: {keys.Value.PrimaryKey}); Console.WriteLine($Secondary Key: {keys.Value.SecondaryKey});Azure Redis 提供主/次两个密钥用于构造数据面连接字符串也是下文密钥轮换的基础。6. 轮换访问密钥var regenerateContent new RedisRegenerateKeyContent(RedisRegenerateKeyType.Primary); var newKeys await cache.Value.RegenerateKeyAsync(regenerateContent); Console.WriteLine($New Primary Key: {newKeys.Value.PrimaryKey});轮换是安全最佳实践见最佳实践第 10 条先用备用密钥更新应用配置再轮换主密钥可实现零停机。7. 管理防火墙规则按 IP 段精确控制哪些客户端可以访问缓存// Create firewall rule var firewallData new RedisFirewallRuleData( startIP: System.Net.IPAddress.Parse(10.0.0.1), endIP: System.Net.IPAddress.Parse(10.0.0.255)); var firewallCollection cache.Value.GetRedisFirewallRules(); var firewallOperation await firewallCollection.CreateOrUpdateAsync( WaitUntil.Completed, allow-internal-network, firewallData); // List all firewall rules await foreach (var rule in firewallCollection.GetAllAsync()) { Console.WriteLine($Rule: {rule.Data.Name} ({rule.Data.StartIP} - {rule.Data.EndIP})); } // Delete firewall rule var ruleToDelete await firewallCollection.GetAsync(allow-internal-network); await ruleToDelete.Value.DeleteAsync(WaitUntil.Completed);注意示例中省略了规则名称参数name的显式注释实际调用签名中的第二个参数即为规则名如allow-internal-network用于后续 Get/Delete。GetAllAsync返回异步迭代器配合await foreach可流式列出全部规则。8. 配置补丁计划仅 Premium SKU补丁计划用于指定 Azure 对缓存节点打系统补丁的维护窗口仅 Premium SKU 支持// Patch schedules require Premium SKU var scheduleData new RedisPatchScheduleData( new[] { new RedisPatchScheduleSetting(RedisDayOfWeek.Saturday, 2) // 2 AM Saturday { MaintenanceWindow TimeSpan.FromHours(5) }, new RedisPatchScheduleSetting(RedisDayOfWeek.Sunday, 2) // 2 AM Sunday { MaintenanceWindow TimeSpan.FromHours(5) } }); var scheduleCollection cache.Value.GetRedisPatchSchedules(); await scheduleCollection.CreateOrUpdateAsync( WaitUntil.Completed, RedisPatchScheduleDefaultName.Default, scheduleData);RedisPatchScheduleSetting的第一个参数是星期几RedisDayOfWeek.Saturday第二个参数是维护窗口起始小时2表示凌晨 2 点MaintenanceWindow用TimeSpan指定窗口时长。示例配置了周六、周日凌晨各 5 小时的维护窗口避开业务高峰。9. 导入/导出数据仅 Premium SKUPremium 缓存支持基于 Azure Blob Storage 的 RDB 快照导入/导出用于迁移、备份或复制数据// Import data from blob storage var importContent new ImportRdbContent( files: new[] { https://mystorageaccount.blob.core.windows.net/container/dump.rdb }, format: RDB); await cache.Value.ImportDataAsync(WaitUntil.Completed, importContent); // Export data to blob storage var exportContent new ExportRdbContent( prefix: backup, container: https://mystorageaccount.blob.core.windows.net/container?sastoken, format: RDB); await cache.Value.ExportDataAsync(WaitUntil.Completed, exportContent);导入时files传入 RDB 文件 URL 数组格式为RDB导出时prefix是导出文件名前缀container是带 SAS 令牌的容器 URL——导出要求存储账号启用托管身份或提供具有写权限的 SAS 令牌。10. 强制重启var rebootContent new RedisRebootContent { RebootType RedisRebootType.AllNodes, ShardId 0 // For clustered caches }; await cache.Value.ForceRebootAsync(rebootContent);RebootType支持AllNodes全部节点、PrimaryOnly、SecondaryOnly等选项ShardId仅在启用集群分片Premium clustering时有意义用于指定重启哪个分片。强制重启会中断服务务必在维护窗口执行。六、SKU 与容量参考SKUFamilyCapacityFeaturesBasicC0-6Single node, no SLA, dev/test onlyStandardC0-6Two nodes (primary/replica), SLAPremiumP1-5Clustering, geo-replication, VNet, persistenceCapacity Sizes (Family C - Basic/Standard):C0: 250 MBC1: 1 GBC2: 2.5 GBC3: 6 GBC4: 13 GBC5: 26 GBC6: 53 GBCapacity Sizes (Family P - Premium):P1: 6 GB per shardP2: 13 GB per shardP3: 26 GB per shardP4: 53 GB per shardP5: 120 GB per shard选型建议结合文档与常见实践开发/测试Basic无 SLA单节点。生产缓存Standard主备双节点有 SLA容量按工作集 淘汰策略估算。高可用增强场景Premium集群、异地复制、VNet 注入、持久化、补丁计划全部依赖 PremiumP 系列按每分片容量 × 分片数计算总容量。七、关键类型速查TypePurposeArmClientEntry point for all ARM operationsRedisResourceRepresents a Redis cache instanceRedisCollectionCollection for cache CRUD operationsRedisFirewallRuleResourceFirewall rule for IP filteringRedisPatchScheduleResourceMaintenance window configurationRedisLinkedServerWithPropertyResourceGeo-replication linked serverRedisPrivateEndpointConnectionResourcePrivate endpoint connectionRedisCacheAccessPolicyResourceRBAC access policyRedisCreateOrUpdateContentCache creation payloadRedisPatchCache update payloadRedisSkuSKU configuration (name, family, capacity)RedisAccessKeysPrimary and secondary access keysRedisRegenerateKeyContentKey regeneration request其中RedisLinkedServerWithPropertyResource对应异地复制Linked Server能力RedisCacheAccessPolicyResource对应基于 RBAC 的数据面访问策略二者均需 Premium SKU。八、最佳实践清单技能文档给出 10 条可直接套用的最佳实践使用WaitUntil.Completed必须等操作完成才能继续时使用。使用WaitUntil.Started想手动轮询或并行执行多个操作时使用配合 LRO 的operation.WaitForCompletionAsync()。始终使用DefaultAzureCredential——绝不硬编码密钥。处理RequestFailedException统一捕获 ARM API 错误。使用CreateOrUpdateAsync做幂等操作存在即更新不存在即创建。通过Get*方法导航层级如cache.GetRedisFirewallRules()不要在业务代码里手工拼 ARM REST URL。生产环境需要异地复制/集群/持久化时使用 Premium SKU。启用最低 TLS 1.2MinimumTlsVersion RedisTlsVersion.Tls1_2。关闭非 SSL 端口EnableNonSslPort false提升安全性。定期轮换密钥用RegenerateKeyAsync轮换并同步更新连接字符串。九、错误处理模式ARM API 的错误统一以RequestFailedException抛出按 HTTP 状态码分流处理using Azure; try { var operation await cacheCollection.CreateOrUpdateAsync( WaitUntil.Completed, cacheName, cacheData); } catch (RequestFailedException ex) when (ex.Status 409) { Console.WriteLine(Cache already exists); } catch (RequestFailedException ex) when (ex.Status 400) { Console.WriteLine($Invalid configuration: {ex.Message}); } catch (RequestFailedException ex) { Console.WriteLine($ARM Error: {ex.Status} - {ex.ErrorCode}: {ex.Message}); }409 Conflict资源已存在可用作幂等判断。400 Bad Request配置非法如 SKU 参数错误、容量超出范围。其他状态码输出Status、ErrorCode、Message用于排查。十、常见陷阱技能文档列出的 7 个高频踩坑点不允许降配SKU downgrades not allowed——Premium 不能降到 Standard/Basic。集群Clustering仅 Premium——分片配置只在 Premium SKU 上可用。异地复制Geo-replication仅 Premium——Linked Server 只对 Premium 缓存有效。VNet 注入仅 Premium——虚拟网络支持是 Premium 专属。补丁计划仅 Premium——维护窗口只能在 Premium 上配置。缓存名称全局唯一——Redis 缓存名必须在所有 Azure 订阅范围内唯一创建前建议做名称预检撞名返回 409。预配时间长——缓存创建可能需要 15-20 分钟异步场景务必用WaitUntil.Started 轮询不要同步阻塞。十一、与 StackExchange.Redis数据面衔接管理面建好缓存后用StackExchange.Redis做数据操作两者通过连接字符串对接using StackExchange.Redis; // Get connection info from management SDK var cache await resourceGroup.Value.GetRedisAsync(my-redis-cache); var keys await cache.Value.GetKeysAsync(); // Connect with StackExchange.Redis var connectionString ${cache.Value.Data.HostName}:{cache.Value.Data.SslPort},password{keys.Value.PrimaryKey},sslTrue,abortConnectFalse; var connection ConnectionMultiplexer.Connect(connectionString); var db connection.GetDatabase(); // Data operations await db.StringSetAsync(key, value); var value await db.StringGetAsync(key);这段代码完整展示了管理面创建 数据面读写的协作模式从RedisResource取HostName/SslPort从GetKeysAsync()取主密钥拼出带sslTrue、abortConnectFalse的连接串。abortConnectFalse意味着即使初始连接失败也不抛异常由连接池后台重试——这是生产环境的推荐配置。仓库中面向自托管 Redis 的 redis 技能 还提供了数据面常用命令String/Hash/List/Set/SortedSet、Lua 锁、Sentinel、Cluster的完整参考可与本文结合阅读。十二、相关 SDK 一览SDKPurposeInstallStackExchange.RedisData plane (get/set, pub/sub, streams)dotnet add package StackExchange.RedisAzure.ResourceManager.RedisManagement plane (this SDK)dotnet add package Azure.ResourceManager.RedisMicrosoft.Azure.StackExchangeRedisAzure-specific Redis extensionsdotnet add package Microsoft.Azure.StackExchangeRedisMicrosoft.Azure.StackExchangeRedis提供了面向 Azure Redis 的扩展如基于 AAD/RBAC 的令牌认证在安全要求更高的场景配合RedisCacheAccessPolicyResource的 RBAC 访问策略下推荐使用。十三、使用边界与限制作为 Agent 技能本文档的适用范围需要明确仅在任务明确匹配本技能范围时使用——即用 .NET ARM SDK 管理 Azure Cache for Redis 资源。技能输出不能替代环境特定的验证、测试或专家评审所有示例代码都应先在非生产订阅中验证再执行。若缺少必需输入订阅 ID、资源组、权限、安全边界或成功标准应先向用户澄清再行动避免在未授权范围内创建或删除云资源。需要强调的是本仓库定位为技能目录 控制平面该技能文件本身是文档型技能docs-only——它提供可复制的代码与操作指引但运行时仍需真实 Azure 订阅与凭据支撑。总结本文完整继承了azure-resource-manager-redis-dotnet技能的核心内容从dotnet add package安装、DefaultAzureCredential认证、ArmClient → Subscription → ResourceGroup → RedisResource层级导航到创建/查询/更新/删除、密钥管理、防火墙、补丁计划、RDB 导入导出、强制重启共 10 个工作流再到 SKU 容量表、关键类型表、10 条最佳实践、错误处理与 7 大陷阱最后串联起与StackExchange.Redis的数据面协作。掌握了这些你就拥有了用 .NET 代码对 Azure Cache for Redis 进行全生命周期基础设施即代码式管理的完整能力。赞分享AI 技能AI 插件【免费下载链接】agentic-awesome-skillsAAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,400 agentic skills. Includes CLI, local MCP, catalog, plugins, and Workbench.项目地址https://gitcode.com/gh_mirrors/an/agentic-awesome-skills点击查看免费下载相关推荐Azure Key Vault Keys Java SDK 密钥管理实战从密钥创建到加解密、签名与轮换agentic-awesome-skillsAzure Key Vault Keys Java SDK 密钥管理实战从密钥创建到加解密、签名与轮换agentic awesome skills 本指南AI 技能AI 插件Azure SDK for .NET缓存策略提升应用性能的Redis集成Azure SDK for .NET缓存策略提升应用性能的Redis集成 在现代应用开发中缓存是提升性能的关键技术之一。Azure SDK for .NET后端云原生开发工具认证鉴权小熊猫Dev-CWindows上最轻量高效的C开发环境终极指南小熊猫Dev CWindows上最轻量高效的C开发环境终极指南 你是否正在寻找一款既轻量又功能强大的C集成开发环境是否厌倦了那些启动缓慢、占用大云原生后端微服务可观测性开发工具创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
PowerSploit 侦察系列:PowerView Get-DomainGPO 域组策略对象枚举实战指南 渗透测试网络安全 【免费下载链接】PowerSploit PowerSploit - A PowerShell Post-Exploitation Framework 项目地址: https://gitcode.com/gh_mirrors/po/PowerSploit 点击查看 免费下载 本指南以 PowerSploit 框架中 Recon 模块(Recon/PowerView.ps1&… · 2026/9/23 5:46:06
回溯算法:组合与子集问题的通用解法 1. 回溯算法基础概念解析回溯法(Backtracking)是算法设计中一种经典的暴力搜索技术,特别适合解决组合、排列、子集等需要穷举所有可能解的问题。这种算法采用"试错"的思想,通过递归的方式系统地探索问题的解空间。回溯法… · 2026/9/23 5:46:06
人形机器人技术解析:从核心硬件到落地场景与选型指南 人形机器人这两年是真的火,不光科技圈在聊,制造业、投资圈、高校研究所,甚至普通消费者都在问:这东西到底能干啥?市面上那些动不动就展示“后空翻”“跑酷”的机器人,离我们实际生活和工作到底还有多远&… · 2026/9/23 5:46:06
3步搞定下一个天堂,性能优化不再靠猜 3步搞定下一个天堂,性能优化不再靠猜 复制来的代码跑不通,报错红屏一片,心里慌得不知道从哪下手?别急,这种“抄作业”式的开发体验,正是阻碍你从新手进阶的核心瓶颈。很多项目现场的管理员,手里拿着现成的Demo,却因为环境差异或逻辑缺失,导致系… · 2026/9/23 6:36:38
3个坑点拆解:香港公司银行开户源码级流程,搞定高频面试题 3个坑点拆解:香港公司银行开户源码级流程,搞定高频面试题 很多后端工程师在对接跨境支付接口时,常常陷入一个死循环:Python、Java语法滚瓜烂熟,但一碰到“香港公司银行开户”相关的业务逻辑,脑子就一片空白。不是不懂代码,而是不懂… · 2026/9/23 6:36:38
双通道振动信号融合的轴承故障诊断方法对比研究 1. 项目概述轴承故障诊断一直是工业设备健康监测的核心课题。传统振动分析方法依赖人工特征提取,而深度学习技术为自动化故障识别提供了新思路。这个项目创新性地融合了两个通道的振动信号,并分别采用随机森林和卷积残差网络进行故障分类,形成… · 2026/9/23 6:36:26
3个坑避开Stack Trace:科技强国战略完整示例 3个坑避开Stack Trace:科技强国战略完整示例 刚跑通代码就炸出满屏红字?别慌,这种 报错一堆看不懂 StackTrace 的绝望感,每个开发者都经历过。很多新手卡在第一个异常上,直接放弃。 其实只要理清调用链,配合 完整示例… · 2026/9/23 6:36:26
3步吃透t510性能优化,保姆级教程助你面试稳过 3步吃透t510性能优化,保姆级教程助你面试稳过 面试时被问“t510性能优化怎么做”,你脑子里一片空白?别慌,很多老手第一反应也是懵。 这行代码看着简单,跑起来却卡成PPT,原理答不上来直接凉凉。… · 2026/9/23 6:36:20
IRS辅助MIMO保密率优化:坐标下降算法原理与MATLAB实战 简介:面向计算机、电子信息工程与数学专业学生,这套MATLAB代码给出了最大化智能反射面(IRS)辅助MIMO系统保密率的坐标下降算法实现,适用于课程设计、期末大作业与毕业设计等场景。资源为9KB的zip压缩包,共1… · 2026/9/23 6:36:20
3招搞定手机怎么下载微信面试难题实战项目解析 3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29