我有一个逻辑应用程序调用的Azure函数,该函数的目标是读取Azure Redis缓存以查找特定的密钥。我使用Redis库对StackExchange.Redis缓存进行读写。
该函数可以并行调用,因为可以同时执行多个Logic App实例。在读取Redis Cache的内容时,我有时(但不是很少)遇到"ResetNonConnected“错误,当我开始遇到这个问题时,我需要停止并启动函数应用程序以使函数再次工作。
我的函数的代码非常简单:我读取一个键(StringGet),如果它存在,我将它与我作为函数的输入接收到的值进行比较。如果接收到的值大于缓存中已有的值,如果键不在缓存中,则更新缓存中的值(先更新StringSet,然后更新KeyExpire)。
在高负载的情况下没有发生错误,我将我的逻辑应用程序的并行实例数限制为10,并且我有这个错误。
Azure函数中的这个库有什么已知的问题吗?在Azure函数中使用Redis Cache的替代方案是什么,以确保它能正常工作?
发布于 2018-02-24 00:30:30
我不会帮你解决Redis的错误,但是
在Azure函数中使用Redis Cache的替代方案是什么,以确保它能正常工作?
对于读-键/写-键操作,典型的方法是使用Azure Table Storage。它有类似的基于键的应用程序接口,但它也以Table Storage Binding的形式在Azure函数中提供本地支持。最有可能的是,您不必编写任何自定义代码来读/写值,而是直接使用绑定参数完成所有操作。
表存储上的键查找可以线性地扩展到任何负载,并且几乎不需要任何成本。
发布于 2018-04-04 00:47:25
我找到了问题的根本原因:这是因为我的ConnectionMultiplexer没有声明为静态的,每次我调用该函数时都会创建它。通过将它声明为静态的,以及良好的文档记录(我的错),它工作得很好。
https://stackoverflow.com/questions/48951983
复制相似问题