我正在使用“ServiceStack.Redis”连接到 Redis,它在我的开发计算机上正常工作。
基本上,我通过此行打开连接:
client = new RedisClient(host);
在我的开发机器上,host
是“localhost”。
现在,我想将应用程序上传到 Azure,因此我在 Azure 中创建了一个缓存,并尝试通过传递以下连接字符串来连接到它:
XXX.redis.cache.windows.net,ssl=false,password=YYY
“RedisClient”的创建似乎有效,但是当我尝试执行操作时(第一个执行的操作是 client.RemoveByPattern("...")
),我得到出现以下错误:
Exception Details: System.Net.Sockets.SocketException: No such host is known
请注意,我允许通过 HTTP 连接缓存,因此通常情况下,端口 6379 是畅通且可访问的。
我在互联网上找到的所有示例都使用“ConnectionMultiplexer”,但在 NuGet 包“ServiceStack.Redis”中似乎找不到此类。
我做错了什么?
最佳答案
我在使用 ServiceStack 连接到 Azure Redis 时遇到了相同(类似?)的问题,最终它为我找到了适合我的连接的正确语法。 XXX.redis.cache.windows.net?ssl=true
在这里找到一些帮助https://github.com/ServiceStack/ServiceStack.Redis ,但引用连接字符串部分有示例;
“Redis 连接字符串已扩展为支持更通用的 URI 格式,该格式现在能够在单个连接字符串(类似于数据库连接字符串)中捕获大多数 Redis 客户端设置。
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 中不需要它。
关于c# - 通过 HTTP 连接到 Azure Redis 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53199029/