通过HTTP连接到Azure Redis缓存

时间:2018-11-07 22:43:28

标签: c# .net azure redis

我正在使用“ ServiceStack.Redis”连接到Redis,它在我的开发机器上可以正常工作。

基本上,我通过此行打开连接:

client = new RedisClient(host);

在我的开发机器上,host的位置是“ localhost”。

现在,我想将应用程序上载到Azure,所以我在Azure中创建了一个缓存,并且尝试通过传递以下连接字符串来连接到它:

  

XXX.redis.cache.windows.net,ssl = false,密码= YYY

“ RedisClient”的创建似乎可以正常工作,但是当我尝试执行操作(要执行的第一个操作是client.RemoveByPattern("..."))时,出现以下错误:

  

异常详细信息:System.Net.Sockets.SocketException:没有此类主机   已知

请注意,我允许通过HTTP连接缓存,因此通常情况下,端口6379是未阻塞的并且可以访问。

我在Internet上找到的所有示例都使用“ ConnectionMultiplexer”,但在NuGet包“ ServiceStack.Redis”中似乎找不到此类。

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

我在通过ServiceStack连接到Azure Redis时遇到了相同(相似?)的问题,最终它为适用于我的连接制定了正确的语法。 XXX.redis.cache.windows.net?ssl=true

https://github.com/ServiceStack/ServiceStack.Redis处找到了一些帮助,但在引用连接字符串部分引用了示例;

“ Redis Connection字符串已得到扩展,以支持更通用的URI格式,该格式现在可以在单个连接字符串(类似于DB Connection字符串)中捕获大多数Redis Client设置。

Redis连接字符串支持多种类似URI的格式,从简单的主机名或IP地址和端口对到具有在QueryString上指定的多个选项的完全限定的URI。”

一些受支持格式的示例:

localhost
127.0.0.1:6379
redis://localhost:6379
password@localhost:6379
clientid:password@localhost:6379
redis://clientid:password@localhost:6380?ssl=true&db=1

注意:我在这里使用了最后一个示例,但是没有redis://位,因为我发现Azure中不需要它。