我正在使用“ 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”中似乎找不到此类。
我在做什么错了?
答案 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中不需要它。